用lpc1788 IAP升级,固化的函数地址会改变
小弟用LPC1788的iap网络升级程序,碰到如下问题:1、在0x1FFF1FF1地址上应该是iap升级入口地址 #define IAP_LOCATION 0x1FFF1FF1;
2、但是用jlink调试时,第一次调试时在0x1FFF1FF1地址上如下图:
在按"Reset"复位后,在同样的0x1FFF1FF1地址上如图二:
3、结果是第一次时,执行到入口函数时,就会出现硬件错误;第二次则操作正确。百思不得其解,我认为iap函数的入口地址应该固化在0x1FFF1FF1上的,不该出现这样的不同,请大家帮我看看! 程序发上来看看? activeleo 发表于 2014-11-4 15:45
程序发上来看看?
我进一步调试发现,是在system_lpc177x_8x.c中低454行 LPC_SC->CCLKSEL = CCLKSEL_Val; /* Setup Clock Divider */
执行后,iap入口地址的数据右移四字节并多了0x00 0x1a 0xbb 0xff四字节数据。 看到Mem的内容怎么统一偏移了4个字节了?这个是为什么啊?奇怪。。。。 其实入口地址是0x1FFF1FF0,之所以要将bit0置1,是因为thumb2代码强制如此。 armstrong 发表于 2014-11-4 20:07
其实入口地址是0x1FFF1FF0,之所以要将bit0置1,是因为thumb2代码强制如此。
这个强制和我这个关系不大吧?现在发现应该是频率选择时频率太高,现在是120m主频,改为96m就没这个问题了! 这和主频有什么关系呢? activeleo 发表于 2014-11-4 20:00
看到Mem的内容怎么统一偏移了4个字节了?这个是为什么啊?奇怪。。。。
是jlink仿真的关系,我拔掉jlink直接运行,就不存在这个问题了,但这和仿真有什么关系呢?请教! 这个就不太明白了!
最近正在饱受系统运行不稳定的折磨!
页:
[1]