本帖最后由 le062 于 2015-3-5 18:09 编辑
之前在M0核上跑了个事件驱动例子,但是在这个MCU上,M0核是不能单独运行的,需由M4启动。当时的调试效果如下:
根据计划,第二步是需要把rtt在M4核上跑起来,也就写个GPIO和UART驱动的事。结果打开RTT的bsp一看,里面居然有一个lpc5410x工程,这支持太神速了。
不过bsp里面是keil工程,个人喜欢iar,so建了个IAR工程,导入代码,编译OK。
IAR在调试时,很容易出现下载固件校验不通过的情况,这个怀疑是IAR只能暂停一个CPU,如果另外一个CPU还在访问Flash,会造成flash烧写出错。我的临时解决方法:先让另外一个cpu跑while(1);
LPC54100的ROM及RAM分配如下:
将M0工程中code地址设为0x20000, IRAM2分配给M0单独用,再将编译好的固件下载到0x20000的位置。
将M4工程中code地址设为0x00000, IRAM1分配给M4单独用,在rtt的一个线程中调用这个函数:
- void run_m0(void)
- {
- unsigned int *jumpAddr, *stackAddr;
-
- stackAddr = (uint32_t *) (*(uint32_t *) 0x20000);
- jumpAddr = (uint32_t *) (*(uint32_t *) 0x20004);
- Chip_CPU_CM0Boot(jumpAddr, stackAddr);
- }
复制代码然后下载这个M4固件,运行,效果如下:
全部代码:git.oschina.net/le062/LPCXpresso54102-leop
BTW:现在IAR的调试挺麻烦,准备离开IAR这个坑,后面换LPCXpresso来玩耍