F2812烧写FLASH及其搬移程序(bootloader)方法所需准备“材料”:
1、F2812评估板一套
2、CCS平台
3、仿真品一套
4、要烧写及搬移的程序
5、TI的烧写插件
6、合众达烧写算法程序
7、自己的搬移程序
bootloader操作步骤
(前提是程序编译通过,并且可以通过仿真器在RAM中运行)
(假设要烧写的程序为app.pjt,烧写算法程序为lash_p.pjt,搬移程序为schlep.c)
1、 将要烧写的app.pjt程序的CMD文件进行改写,保证其程序部分放到一个连续的数据空间中(要将生成的程序块定义到数据空间,下一步的flash_p算法程序对其顺序烧写到指定的FLASH块中)。
2、 编译成功后,对其进行load program ,将其load到指定的RAM中。
3、 打开工程文件flash_p,将算法部分的源程序地址及目标地址进行修改,源程序地址根据app.pjt中CMD文件配置的地址;目标地址即要将程序放置的FLASHF地址;定义的烧写长度一定得不小于所要烧写的程序的长度。(对app.pjt进行编译后,可在生成的app.map文件中查看其程序段的起始地址及长度。)
4、 编译flash_p.pjt文件,编译成功后,对其进行load program,可在程序中校验完成后设置断点(否则程序会进入循环,另:烧写部分有擦除、烧写、校验三个部分),到达断点程序停止运行,如果没有出错的话,这一步已经完成了烧写FLASH的工作。若要查看烧写的情况,可打开汇编窗口(菜单—>windows—>assembly)对源地址(数据空间中)及目标地址(FLASH空间中)进行比对,看其是否一致。
5、 采用TI的烧写插件烧写自己的搬移程在自己的搬移程序中要正确写入程序入口地址,即要搬移到RAM中的入口地址,此地址也可在app.map文件中查看到。
有个前提条件:即此处搬移的RAM地址要和第一次load app.out的起始地址完全相同,这样才可保证入口地址的一致性。此步骤完成后,可打开汇编窗口观察是否搬运成功。查看0x3f7ff6处,是否是一条跳转指令 LB _c_int00,再察看FLASH中的程序地址处与要搬移至RAM中的程序地址处是否一致 |