Alguns microcontroladores permitem fazer isso, parece que não é a foto. o que você gostaria de fazer é ter um gerenciador de inicialização que use spi para ler do cartão sd, copie o programa, que provavelmente quer ser um nome de arquivo conhecido ou codificado, provavelmente no diretório raiz, analise esse arquivo no ram e depois ramifique para o programa em ram. Os controladores baseados em ARM certamente permitirão que você faça algo assim.
Uma alternativa seria fazer com que o gerenciador de inicialização leia o cartão sd pelo spi e, em vez de copiar para ram e gravar ramificações em uma parte do flash. Provavelmente deseja ter um botão se o botão for pressionado ao ligar ou redefinir e carregar um novo programa a partir do cartão SD, caso contrário, se a assinatura ou a soma de verificação parecerem boas nessa parte carregável do flash e depois no ramo de inicialização para essa parte do flash. Ou talvez, se o cartão SD estiver presente, carregue-o, caso contrário, ramifique para a parte carregável do flash. Pode usar esse método com base em braço e com base em avr, possivelmente até com base em foto, mas minha experiência com foto é datada. msp430 eu assumiria também. Basicamente, se você pode reprogramar partes do flash a partir do qual é executado, a partir do próprio processador do microcontrolador,