本帖最后由 sltian09 于 2015-11-26 20:54 编辑
楼主,您好:
1、我用的是keil的开发环境;
2、bootloader偏移量是你们给的程序的偏移量:
uint32_t *pNewAppEntry;
pNewAppEntry = (uint32_t *)0x00004004; 最后程序就是跳转到这个地址,
根据你们提供的文档介绍“(RELOCATION_VERTOR_ADDR), so the boot vector should beRELOCATION_VERTOR_ADDR plus 0x0004.”
这样设置有没有问题,因为我的APP是在keil下完成的S19文件;
3、从keil生成的.map来看,我的Image Entry point : 0x00004181 是这个地址,而我把入口地址改成:
pJumpTo = (uint32_t *)0x00004181;
pJumpTo();
依旧不能实现跳转!!!!
请看keil环境下.map文件的截图:
4、在解析S19文件发现,codewarrior生成的有用文件是S1开头的,而keil生成的文件是S3开头的,问题是你们的bootloader demo 程序是不是只能解析S1开头的文件呢,
那么S3开头的文件解析需要修改那些呢,因为我也修改了一些地方调试验证了,未能实现。请看下面文件对比:
5、bootloader中的这两句是什么意思:
srcd_t->addr = (srcd_t->addr<<8) + sdata; // 左移8位是什么意思?
srcd_t->data[srcd_t->dtlen++]=(((uint16_t)sdata)<<8)|0x00FF; //e.g. 0x8a -> 0x8aff 是什么意思?
S01300004B45413132385F4150505F312E6865783D
S11340000030002051740000857C0000857C000095
S1134010857C0000857C0000857C0000857C000098
S1134020857C0000857C0000857C0000857C000088
S1134030857C0000857C0000857C0000857C000078
S31500004000 50080020974100008F7700008F7700004E
S315000040108F7700008F7700008F7700008F77000082
S315000040208F7700008F7700008F7700008F77000072
S315000040308F7700008F7700008F7700008F77000062
S315000040408F7700008F7700008F7700008F77000052
请楼主,帮忙分析分析!谢谢!
|