m0的mcu,
1))新建一个工程,点红灯,设置烧录地址为0000--5fff一切正常(红灯闪),叫它image1
2)新建一个同样的工程,只是改动点绿灯,设置烧录地址为6000--afff,也可以正常运行.叫它 image2
3)修改工程一,如何 从工程一 image1 跳转到 工程二 的程序 image2中去?
因为程序 已经烧录到flash中,所以image2仍然存在于 0x6000--afff区域...
查看运行时,在image2运行时,intv向量表除了resetintvec ,其他的都一样...
那么我的想法就是,
在image1中,到flash某个位置读取一个标志,如果 image2完整的,那么设置msp指针,再得到resetintvec2的地址,,这想法是否正确?
如果 上面正确,那么编译image2包时,如何 把这个地址得出来,放到flash的某个位置呢?因为reset中断向量地址,对于m0不需要自定义的吧,编译时直接指向_iar_program_start,其他的中断,都是定一个空的,复盖原来的就好,这个,,,难道把main改成reset向量?即使这样,写到image2位置时,如何找这个地址?查看map文件,image2的vectab仍然是000开始 ,而6000开始的内容根本不是中断表,而是好像是库文件, |