por norad58 » 31 Out 2013 11:57
Fabim,
Me intrometendo na conversa....
Acho que tu ta meio enrolado neste tipo de negocio de kernel, rtos, etc
Kernel/Cuore del sistema/Cerne del sistema= nome dado ao um nucleo de execução monotarefa ou multitarefas, tanto o rtos, uclinux ou linux possui um kernel. Dentro deste nucleo de execução ha gerenciadores de memoria, de perifericos IO, de timer, de interrupções, de tasks, etc...
No caso do rtos, este é um sistema operacional simples e pequeno, há um nucleo de execução real-time simples de tarefas, devido ao tempo de execução das tasks, tamanho do sistema e outras coisas.....No caso do linux, é um sistema operacional mais completo que o rtos, possui uma quantidade grande de drivers de perifericos e melhor gerenciamento de tasks e memoria, mesmo no linux ou uclinux dá pra transformar o nucleo de execução em um real-time, mudando a tempistica da execução das tasks e interrupções, entre outras coisas.
Diferença do Uclinux e Linux, praticamente são sistema operacionais parecidos padrao Posix, mas o uclinux permite trabalhar com processador sem MMU ou gerenciamento de memoria avançado, como a linha ARM C3/C3, Arm7, 68000, etc...
Caso seu projeto possua bastante ram, mmu, recursos de hardware, recomenda-se usar o Linux pois é um sistema operacional mais completo.
O RTOS atende mais hardwares com pequena quantidade de memoria, pois fica mais facil de instalar. Facilmente tu adapta um rtos em um sistema de 8 bits.
Para carregar o sistema operacional no MCU ou MPU há varias maneiras, vai depender do seu hardware e do sistema operacional. Com qualquer sistema operacional tu terá que transferir o sistema de uma memoria de massa para a RAM do sistema para ser executado.
Pode ser feito um boot simples com um codigo em assembler em rom ou na flash e carregar o sistema operativo de uma memoria de massa para a ram ou se quiser soluções prontas e adaptaveis tem o uboot que nada mais é que um carregador de boot mais avançado e com mais recursos. Nada impede de você criar um carregador de boot especifico, vai depender da sua experiencia em programação.
A vantagem do uboot é que já possui varios tipos de drivers de perifericos prontos, reconhecimento de partições, ajustando alguns parametros se adapta facilmente a seu hardware.
Por exemplo eu tinha feito ha um tempo atras, um carregador de boot ou monitor em um MC68030 que estava gravado na eprom do MC68030. Ao iniciar o sistema com o mc68030, este executava o monitor da eprom para carregar o programa ou sistema operacional que deveria ser enviado pela porta rs232. No meu caso eu enviava o programa/S.O através de um PC. Lembro de ter utilizado somente 2k de eprom para esta tarefa. O programa ou sistema operacional era carregado na memoria ram do mc68030 para posterior execução. Eu escolhi a RS232, mas poderia ter utilizado uma flash SPI ou cartao de memoria.
No caso de usar o uboot com linux ou uclinux, tu tem que informar no uboot, onde fica o endereço da ram/rom do seu hardware, endereço dos perifericos e configurar varios detalhes para que o uboot transfira o S.O da memoria de massa para a RAM do MPU.
No caso do linux, que é um sistema com kernel monolitico, se nao conter um driver de periferico expecifico, tu terá que criar um modulo(drive) que será carregado pelo kernel, para depois recolhecer o periferico. Outra coisa, neste sistema operacional os perifericos são criados e montados como arquivo de texto, nao podendo comunicar diretamente com um periferico pelo seu endereço absoluto. Neste caso o kernel do linux, possui um gerenciador de memoria e perifericos integrado no kernel do sistema para fazer esta tarefa. Isto é, tudo tem que passar pelo kernel primeiro para depois ir para o periferico.
Editado pela última vez por
norad58 em 31 Out 2013 12:18, em um total de 1 vez.