terça-feira, 15 de fevereiro de 2011

Mais Notícias sobre o Dingux no Gemei A330

O Booboo disse que iria falar mais sobre o processo de "portar" o dingux para o Gemei A330, nesse post ele fala sobre o processo de boot.


Iniciando o GA330 

Apenas alguns comentários tecnologia deixei no post anterior, devido à falta de tempo ... mas antes
um esclarecimento rápido sobre ChinaChip: 

Eles têm um monte de frentes abertas em um mercado muito competitivo e um conjunto limitado de recursos, presumo que se o projeto foi colocado em espera é porque não tinha escolha. Note, porém, que eles ainda estão fornecendo informações e apoio, mas com algumas limitações. 


Como eu disse, eu tenho esquemas, docs (que sugam, mas são apenas o que eles têm) e um código BSP. Agora estou trabalhando em ferramentas de código de inicialização do GA330 através da porta USB, e assim que eu começar a trabalhar e arrancar o kernel com um console serial, eu vou publicar tudo (mas eu ainda acredito que será de pouca utilidade para outros desenvolvedores sem os documentos e BSP). Eu não gosto de ser o gargalo, mas isso é como as coisas são agora. 


Agora para os detalhes da tecnologia:
 

O CC1800, como os SoCs JZ4732 e outros semelhantes, tem diversos modos de boot implementado na ROM interna. O código verifica o estado de alguns pinos e então começa a arrancar a partir de NAND, NOR, SD ou USB. Na verdade, carregador USB, o código ROM configura a porta USB no modo de dispositivo e aguarda instruções. Você pode obter informações da CPU, o código para carregar SRAM, e executá-lo, que é muito bonito tudo.
 

Note que eu escrevi SRAM, não SDRAM. É por isso que geralmente necessitam de um processo de dois estágios para o código de boot via USB: upload e executar um pequeno pedaço de código para SRAM que configura e inicia o controlador de SDRAM (e alguns outros periféricos), de modo que a memória é acessível, e então carregar e executar o grande pedaço de código, o kernel, a SDRAM. 

Surpreendentemente, nas duas máquians com chip CC1800 que eu tenho, o GA330 e um HD8900, a bootsel pino [2] está vinculado a 3.3V. Isto significa que você não pode entrar o modo USB de boot. O bootsel pino [1] é conectada à entrada para baixo do d-pad, o que significa que ao ligar o GA330 smantendo o direcional para baixo pessionado, você entra no modo SD de inicialização. Neste modo, as cargas CC1800 o conteúdo dos setores 2-17 (de um total de 16 setores, 8KB) a partir do cartão SD para SRAM e executa-lo.
 

Acontece que devido a alguns erros no design CC1800 (não tenho certeza se é o silício ou o código ROM) do porto usb0 sendo usado não era estável. Desde que o código-ROM não pode ser mudado, os projetistas de hardware foram forçados a usar algum outro modo de inicialização alternativa, e foi com SD. Agora, se você colocar no SD uma versão modificada do código de inicialização USB na ROM que usa USB1 em vez de usb0, você está de volta no caminho certo e pode concluir o processo de gravação flash através da porta USB1.
 

(Note que no SoC dessa complexidade é muito comum haver dezenas ou mesmo centenas de erros que geralmente são descritas pelo fabricante em conjunto com soluções nas folhas correspondentes errata, consulte o LM3S9B96 da Texas Instruments, por exemplo)
A necessidade de ter um cartão SD inserido para entrar o modo USB de inicialização é um pequeno inconveniente para o fabricante, mas pode ser uma bênção para os usuários finais, porque:

   
1. Ele faz o dual boot ser desnecessário. Você será capaz de "bootar" o Dingux a partir do cartão SD sem modificações para o GA330.
   
2. Mesmo que um dual boot seja necessário, o método de instalação requer apenas um cartão SD (não a loucura mais driver USB).

Para nós desenvolvedores é uma inconveniência insignificante. Precisamos de boot USB, pois ele faz a compilação e teste de código muito fácil, e nós só precisamos ter um cartão SD inserido o tempo todo. Note que a tabela de partição no setor 0 do cartão SD não é afetada, assim você pode definir a primeira partição para iniciar em qualquer lugar além do setor 17 e tem uma partição de dados utilizáveis enquanto ainda mantém o código de inicialização em sectores 2-17.

Clique aqui para ler o texto original.

5 comentários:

Elvis Rocha disse...

Olha um dos motivos preu comprar o Gemei A300 é justamente o dingux (ou seria Gingux?) para uma melhor emulaçao do Snes , que é um dos maiores motivos d aquisição...

o fato de ter mais memoria daria a ele certa vantegem no já bom dingoo A320...

mas vamos esperar por novidades...

Leandro disse...

Cara, que artigo interessante! Queria acompanhar estes processos mais de perto um dia. Tem realmente muita diferença em programar assim em tão baixo nível, deve ser fantástico.

Bruno disse...

Saiu o dingux pro gemei ??

£30n4rd0 disse...

Olá Bruno, não tenho mais acompanhado, dei uma olhada rápida no blog do cara que fazia, booboo, e parece que não saiu nada, abraço.

Unknown disse...

eu gosto do sistema nativo mas nao gosto do emulador do mega drive nativo prefiro o picodrive! eu tbm nao consigo usar o os 6 botoes nesse emulador o que sera que tem de errado?

Postar um comentário

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger | Printable Coupons