目录
以CCS9.2为例,本文针对F28377D介绍了使用仿真器调试和烧录程序至FLASH离线运行的具体操作方法以及本人踩过的坑。
1、使用仿真器调试
第一步:点击菜单栏小锤子旁边的倒三角,选择debug选项。
第二步:当第一步选择为debug时,软件会自动选择cmd文件夹中的2837xD_RAM_Ink_cpu1.cmd文件作为编译文件,同时2837xD_FLASH_Ink_cpu1.cmd文件Exclude from Build(文件变灰)。如果没有自动选择,右键文件,找到Exclude from Build选项,手动选择cmd文件。
第三步:点击小锤子编译工程,分别编译cpu1和cpu2的工程,编译完成以后点击小虫子按钮进入调试界面,注意要正确连接下载器。
第四步:进入调试界面的时候会自动连接cpu,同时自动下载程序,此时只需要点击运行按钮即可。若中途不小心断开连接,则点击连接按钮,连接到cpu,如图5所示。然后点击下载按钮选择cpu对应的程序下载即可。注意:cpu1和cpu2的程序不同,需要分别下载,只需点击对应的cpu,然后点击下载按钮选择对应的程序即可,如图6所示。
第五步:运行程序,进行调试。可以设置断点、单步运行等等。
2、 烧录程序至FLASH离线运行
大部分时候需要将程序烧录至FLSAH中离线运行,接下来介绍如何分别烧录cpu1和cpu2的程序,实现离线运行。
cpu1工程烧录模式有三种:RAM、FLASH、FLASH_STANDALONE。其中RAM为调试时使用的模式,FLASH和FLASH_STANDALONE模式都可以离线脱机运行,区别在于FLASH模式不能由cpu1启动cpu2,而FLASH_STANDALONE可以由cpu1通过IPC启动cpu2。若为双核程序,cpu1必须使用FLASH_STANDALONE模式。cpu2工程烧录模式有两种:RAM、FLASH。
若点击小锤子旁边倒三角没有FLASH和FLASH_STANDALONE模式,则需要手动添加。添加步骤为:右击工程→最下面找到属性→General选项→Manage Configurations中添加new。见图七、图八和图九。
然后需要在工程属性→C2000 Compiler→Predefined Symbols中添加预定义符号,只需添加一次,后面选择不同的烧录模式时会自动选择对应的预定义符号。图十为cpu1的预定义符号,图十一为cpu2的预定义符号。
在做完上述步骤以后还需要在主程序里面增添如下代码:
cpu1代码:
//添加在main函数里面
#ifdef _STANDALONE
#ifdef _FLASH
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
#else
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
#endif
#endif
#ifdef _FLASH
InitFlash();
#endif
cpu2代码:
//main函数外面的代码
#ifdef _FLASH
//
// These are defined by the linker (see device linker command file)
//
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadSize;
extern Uint16 RamfuncsRunStart;
#endif
//main函数里面的代码
#ifdef _FLASH
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
#endif
InitSysCtrl(); //初始化系统,锁相环,看门狗,外设时钟
#ifdef _FLASH
InitFlash();
#endif
其他步骤同使用仿真器在线调试一样。注意:在下载完程序以后不要点击运行,要退出调试界面,然后断开仿真器,重新给开发板上电,程序就从FLASH里面开始运行。特别注意:GPIO72和GPIO84决定了F28377D的BOOT MODE,在上电的一瞬间要确保这两个引脚为高电平,否则无法引导从FLASH里面开始运行程序。同时要注意拔掉仿真器,因为仿真器连接的话TRST会拉高,无法进入BOOT MODE,芯片就会进入仿真模式。如图12所示。