最近调试BootLoader,程序下载写入到flash中都没有问题了,但是在写入后的程序跳转环节卡住了,不管是试验iap方式下载进去的程序还是直接用atmel studio偏置地址直接烧写的程序,一旦跳转就失败,先后尝试了十几种跳转函数,不管是C还是汇编,全部失败。咨询了一下atmel的技术支持,说我的跳转函数没问题,是执行程序环节出问题了。
应用程序不是偏置了一个地址,然后直接跳转到那个地址就可以执行了的,必须在编译的时候把地址偏移向量都编译进去才可以。
在atmel studio 7.0中,这个设置很简单,Project->XXX Properties->Toolchain->ARM/GNU Linker MemorySettings中,设置 .text=0x00410000,这是你想跳转的地址,注意等号两边不要有空格。然后编译,烧写,再跳转就成功了。