Tudo bom Daniel?!
Já estou me pronunciando. kkkkk
Não tem nenhuma documentação, então eu vou descrever os passos para a utilização:
SW utilizados, e2studio 5.2.1.010 e SSP 1.2.0.beta1.
- Compile o SKS7_App_MSC_120 e o SKS7_Bootloader.
- Depure com o SW do SKS7_App_MSC_120 (está configuração de depuração já baixa a imagem e simbolos do bootloader)
- Rode o programa até ver a versão do App.
- Recompile o SKS7_App_MSC_120 mas não regrave!!!!!!
- Copie da pasta SKS7_App_MSC_120/Debug o arquivo SKS7_App_MSC_120CRC.bin para um pendrive.
- Coloque o pendrive na SK-S7G2. O programa deverá identificar a versão nova e perguntar se você deseja realizar o procedimento.
Em resumo foi utilizado o srec_cat para gerar um CRC16 CCITT no post build (infelizmente as ferramentas do GCC não fazem este processo). Este CRC é gravado no final da seção app_info (campo raw_crc do AppInfo). Os arquivo gerados são "$Proj_name + CRC".srec e "$Proj_name + CRC".bin
O App checa o CRC do arquivo bin do pendrive e, se tudo estiver OK, ele apaga a QSPI Flash, grava o .bin nela e reseta o sistema após escrever um comando para rescrever a flash na variável booMagicNum (seção .bootWord).
O vetor de reset é tratado pelo bootloader que verifica a booMagicNum. Se ela for igual a "palavra magica" ele não pula para a aplicação, verifica o CRC da QSPI e, se tudo estiver OK, regrava a flash interna e gera um reset.
eu acabei de fazer e deve ter alguns gatos, qualquer sugestão é bem vinda.
Até,