各位老师,学习28M35时遇到如下问题:
C28的代码里有:
#ifdef _FLASH
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
InitFlash();
#endif
M3的代码里有:
#ifdef _FLASH
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
FlashInit();
#endif
#ifdef _STANDALONE
#ifdef _FLASH
IPCMtoCBootControlSystem(CBROM_MTOC_BOOTMODE_BOOT_FROM_FLASH);
#else
IPCMtoCBootControlSystem(CBROM_MTOC_BOOTMODE_BOOT_FROM_RAM);
#endif
#endif
程序往RAM里面下,跑起来都是正常的。
后来我想在flash中跑。我的处理是:把两个project里面的cmd文件由28M35H52C1_RAM_lnk_c28、28M35H52C1_RAM_lnk_m3分别换成了F28M35H52C1_c28、F28M35H52C1_m3。
但是往flash里面下,这些判断里面的函数并没有进去,跑起来不正常。后来干脆把#ifdef _STANDALONE,#ifdef _FLASH之类的判断去掉,直接跑后面的几个函数,就正常了,这说明那几个函数之前没有执行。
所以想请问,_STANDALONE,_FLASH是在哪儿定义的,这些#ifdef 判断进不进去,到底取决于什么配置啊?
我想把原先在RAM里面运行的程序,下到flash里面上电直接跑,除了更改cmd文件,还有别的设置吗?