本帖最后由 kavka 于 2009-9-10 14:37 编辑
我的思路是IAP+APP. IAP放在开头0-3区,MAIN函数也放在IAP中,只是MAIN里调用了应用程序APP,APP从固定地址开始。
现在遇到的问题是:启动程序IAP不修改,只要在应用程序中增加、删除一个变量或者添加一条无关紧要的语句,重新编译链接后生成一个bin格式升级文件,再通过在线升级,发现程序就跑飞了。但是修改一个变量的值却没有这种情况,可以升级成功。现在只能重新烧入启动程序才行。请教高手。
是不是分散加载文件出问题了?
ROM_LOAD 0x0
{
SYSTEM 0x00000000 ;// 系统固件区域,起始地址:扇区0
{
Startup.o (vectors, +First)
main.o(+RO)
target.o(+RO)
*(+RO)
}
}
ROM_LOAD2 0x4000
{
USER 0x4000 FIXED ;// 用户程序区域,起始地址:扇区4
{
user.o (+RO, +First)
users.o (+RO)
}
IRAM 0x40000000
{
Startup.o (MyStacks)
* (+RW,+ZI)
}
HEAP +0 UNINIT
{
Startup.o (Heap)
}
STACKS 0x40008000 UNINIT ;for LPC2136
{
Startup.o (Stacks)
}
}
工程树图 |