最近TI新出了不少430单片机,可惜非要4.10以上版本才支持。搜遍了网络也不见D版的,于是决定自己DIY搞定它。我一直在用3.41A,比较稳定的一个版本。研究之,发现器件清单存放在430configdevice文件夹,每个器件对应一个.menu文件。 尝试复制147的menu文件,改名为MSP430F247.menu,UE之,将所有的147字符串修改成247,启动EW430,发现果然器件清单里面多了“MSP430F247”。嘿嘿,编译,提示缺少xcl、sfr和ddf文件。用UE打开F147.xcl,发现是内部RAM、ROM、Info段的起始位置与大小定义、sfr是特殊寄存器定义、ddf文件文件描述了中断向量。理论上可以自己编写这几个文件,可以支持任何新器件。
能不能从高版本上拷贝出相应的文件? 尝试下载了3.42A,将config文件夹拷贝到3.41版本下,覆盖原config文件。启动EW3.41A,器件清单居然没变~! 难道在什么隐蔽的地方有机关? 干脆删掉config文件夹,再启动EW430-3.41A,器件选择菜单不见了。这时再将3.42的config文件夹拷贝过来,启动EW430-3.41A,oh~yeah! 多了好多新器件。 不知道4.xx版的配置文件格式是否与3.xx版兼容,实验一下。先去IAR的网站下载试用版,目前最新版本是4.11B。4k或30天版本都可以。安装后把config文件夹拷贝出来。同样的方法将3.41的config文件夹删掉,启动,关闭,覆盖,再启动。 哇塞,好长好长的器件列表啊!!! 正高兴呢,顺手编译一个小程序,居然编译失败!提示xcl文件格式不符,错误发生在: -Z(DATA)DATA16_I,DATA16_Z,DATA16_N,DATA16_HEAP+_DATA16_HEAP_SIZE=1100-20FF 再用UE对比新文件和老文件之间的区别,摘录出错那一行:
老文件 // --------------------------------------------------------- // RAM // ---------------------------------------------------------
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,DATA16_HEAP+_HEAP_SIZE=1100-20FF -Z(DATA)CSTACK+_STACK_SIZE#
新文件: // --------------------------------------------------------- // Read-write memory. // ---------------------------------------------------------
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,_DATA16_HEAP+DATA16_HEAP_SIZE=1100-20FF -Z(DATA)CSTACK+_STACK_SIZE# 嘿嘿, 区别就在“_HEAP_SIZE” 和 “ _DATA16_HEAP_SIZE” 把_DATA16删掉,编译通过!调试,下载,一切正常! 把所有的xcl文件中这一句的_DATA16删掉,哇嘎嘎,我的3.41A能够支持所有新器件了!
接着,我焊了块F247的Demo板,果然提示未知器件,然后下载失败。郁闷!又试了几个其他芯片还是不行,但偶然发现出错提示在log窗里有记录,有一个不起眼的提示: Interface dll verson 2.1.7.0 应该是接口版本太低,不能识别新器件的序列号。 在V341的bin文件夹里面找,只有MSP430.dll的版本号是2.1.7.0,说明是这个文件负责解析MSP430的型号。将V411里面的MSP430.dll文件拷贝过来, 嘿嘿,下载,Debug,单步,跟踪... 一切正常!
这样,只要不断下载IAR的试用版,就可以不断更新器件了! |