por chrdcv » 10 Abr 2012 19:47
Microcontroladores, como a própria descrição do nome diz, são unidades de processamento com capacidades limitadas tanto pela arquitetura (concepção) quanto pela construção. Durante a fase da arquitetura, é decidido sobre a concepção dos blocos bem como a interconexão destes através de um barramento. Especificamente no teu caso, temos um uC de 8bits RISC cuja a arquitetura possibilita o mesmo a execução de códigos em uma FLASH (base do conceito inovador dos primeiros AVRs).
Devido aos desdobramentos tecnológicos e quebras de paradigmas, e/ou utilização de conceitos já estabelecidos anteriormente por uma questão de mercado, houve recentemente uma remodelagem dos mesmos, através da expansão e renovação do portifólio dde produtos, o que levou a um aumento da capacidade de memória de programa e de dados (FLASH/RAM) bem como a possibilidade de acesso à memória externa através de pinos de Endereço/Dados.
Periféricos são módulos adicionais que realizam algumas funções "sujas" as quais poderiam tomar tempo da CPU. No teu caso, certamente os uC não possuem um suporte ao barramento de 4bits para interface com um cartão, então, o mais próximo que poderia usar seria uma SPI, o que demanda tempo de processamento e posse da CPU realizando função de I/O no cartão e ainda tendo que rodar o filesystem. A BIOS que mencionou poderia ser simplesmente um sistema baseado em uma "máquina virtual". Mas no contexto, máquina virtual em uma arquitetura minúscula implica em uma série de restrições (alocação de memória, processamento concorrente -- troca de contexto) sendo a mais interessante o tempo de processamento.
Existe uma solução bem próxima do que pretende realizar, e o nome é elua. Baseada na linguagem lua criada no braZil nos laboratórios da tecgraf puc-rio. Devido ser uma linguagem muito pequena (mas muito poderosa) e ter uma máquina virtual escrita e polida em C, possibilita o uso nas mais diversas arquiteturas. Então, o que tem que fazer é ver se há um port atual para teu processador. Caso positivo (muito provável), é necessário que a máquina lua (interpretador) rodando na memória de programa interna/externa, busque "instruções" no cartão de memória externo. Daí que o rabo torce a porca... possível e viável é, mas não mais perderia o meu tempo com isso!
uC de 32bits é uma realidade a preços módicos, e o mais interessante, vc pode construir grandes sistemas com arquiteturas fantásticas (Coldfire v2, v3) utilizando ferramentas gratuitas e base de código madura e a "prova de fogo". Assim, uma vez tendo a tua plataforma "base" vc se isola das camada inferiores por um bom tempo e fica desenvolvendo somente a aplicação, ou seja, o foco no que tem que ganhar dinheiro e é o teu nicho. Caso necessite renovar o portifólio dos teus produtos com uma nova arquitetura ou acréscimo de periféricos, todo o código da aplicação poderá ser usado, bastando a alteração da nova base para a nova arquitetura.
Decididamente, quando olho para trás e vejo o quanto tempo eu gastei desenvolvendo e estudando arquiteturas de 8, 16 bits ou até mesmo as de 32b escrevendo aplicações que rodavam sem o suporte de um RTOS ou OS, eu vejo o quanto tempo perdi, o quanto de dinheiro eu perdi e o quanto é agora obsoleto e mínimo são as funcionalidades dos produtos que desenvolvi ou ajudei em parte a fazer!
Putz, foi um desabafo!