比如一个小程序,功能是只在地址 0xC0000000 上写个数。
我想把它写进 nor flash 里,然后上电就在 nor flash 里面执行代码。
emif nor flash 启动会跳转在 0x70000000 上开始执行,也就是说我需要把程序的入口 _c_int00 写在 0x70000000 上。
可是生成 bin 文件后,查看 map 文件,_c_int00 地址在中间。比如起始到结束地址范围是 0x10800000 ~ 0x10801000 ,_c_int00 地址为 0x10800500 。
我如果提取这一段 bin 文件(save memory 方式),直接烧到 o = 0x70000000 上,l = 0x70001000 上,
很显然 _c_int00 的地址相应为 o = 0x70000500 ,对不上 o = 0x70000000 。
看过一些例程,都是用的 asm 文件编写的。我也弄不懂那些 asm 程序是如何确保自身的入口地址刚好就是启动地址的。
只知道,它把自己放到比如 o = 0x10800000 上 ,然后提取生成 bin 文件,烧到 o = 0x70000000 上 ,就 ok 了。
能重新定位 _c_int00 的地址吗?
我应该如何正确地烧写 bin 文件?
我的 CMD 文件如何分配?
请各位赐教。