我使用的是F28027F芯片,首先将文件CSMPasswords.asm加进工程,然后修改enableCSM .set 1,使能加密,然后在工程里预定义宏CSM_ENABLE,编译后提示*econst_end、*econst_start、*switch_end和*switch_start这些符号没有定义。然后我修改F28027F.cmd,从RAM的M0-M1里的0x500地址开始划分0x100大小空间到PAGE0,命名P_RAMM0_M1,接着设置.econst和.switch的拷贝加载地址:
.econst : LOAD = D_FLASHA,
RUN = P_RAMM0_M1,
LOAD_START(_econst_start),
LOAD_END(_econst_end),
RUN_START(_econst_ram_load),
PAGE = 0
.switch : LOAD = D_FLASHA,
RUN = P_RAMM0_M1,
LOAD_START(_switch_start),
LOAD_END(_switch_end),
RUN_START(_switch_ram_load),
PAGE = 0
程序编译通过,使用XDS100v2仿真器烧到芯片后,通过仿真器在线调试,能正常运行,中断服务函数里的闪灯正常闪烁。但问题是,将仿真器脱开后重新上电,程序感觉死掉了,灯也不闪烁。我再次将enableCSM .set 0,去除加密功能后烧进Flash,这时仿真器脱开也能正常运行。
我想请问下这是什么原因?另外,TI的FOC例程有没有测试过加密功能是否能用?我谨慎怀疑源程序存在Bug
谢谢大家!