有所追求
分类:
2008-12-01 12:43:23
(接上期)
其具体步骤如下:
(1) 在MDK中新建工程
打开MDK,在主菜单中选择Project(New…(uVision Project,并给新工程命名为New_MDK.uv2,单击“保存”按钮,见图2。
图2 在MDK中新建工程
在MDK自动弹出的器件选择窗口(Select Device for Target)中选择该工程所对应的处理器型号“LPC2294”,并单击“确定”按钮,见图3。当MDK提示用户是否自动添加启动代码时,选择“否”。
(2) 添加源文件,并设置工程属性
将Legacy_ADS.mcp工程中所有的源文件都添加到新的New_MDK.uv2工程中来,见图4。
单击工程属性快捷键,打开工程属性设置窗口,并选择C/C++标签页,设置编译器属性。用户可以根据以前ADS工程的编译属性设置,也可以根据当前具体需求重新设置编译属性。在本例中,将ADS遗留工程的编译属性“?O1?g+”修改为“?O1?g ?W”后,拷贝到Misc Controls文本框中,见图5。这是因为由于编译器版本的变化,其对应的编译选项也有所变化。
注意: W选项可以抑止所有的warning。
图3 在MDK中选择合适的处理器
图4 将ADS工程的遗留源代码全部添加到新工程中
图5 编译选项的设置
对ADS工程中的链接选项作适当修改如下,使其复合POSIX格式。
??--info totals--entry 0x00000000?--scatter .\src\Scatterload.scf --info sizes
选择Linker标签,将修改过的链接选项拷贝至MDK工程属性的Linker属性中,并单击“确定”按钮,见图6。
图6 链接选项的设置
(3) Build工程并适当修改代码
当所有的工程属性都设置好之后,单击“Build all target file”快捷键,对整个工程进行编译、链接。在MDK窗口的build输出一栏中,我们会发现系统出现了一个链接错误L6238E(见图7)。这是由于MDK中新版本编译、链接工具与ADS的老版本build工具采用不同的ABI造成的(详见2.3小节)。
为此我们打开该工程中的汇编文件startup.s,在该程序第55行添加PRESERVE8指令,如下所示:
CODE32
PRESERVE8
AREAvectors,CODE,READONLY
(4) 重新编译链接该工程
代码修改完毕之后,单击“Build all target file”快捷键,对该工程进行二次编译、链接。MDK将成功生成New_MDK.axf文件,并显示其代码尺寸信息为:
Program Size: Code=1576RO-data=64 RW-data=0 ZI-data=1128
这些信息同样可以从链接生成的New_MDK.map文件中得到。
(5) 代码调试与固化
与其他ARM开发工具相比较,MDK拥有非常出色的仿真功能,可以帮助用户在纯软件平台上进行较为精确的调试。用户可以在工程属性设置窗口选择Simulator调试(见图8),或者通过硬件调试工具(uLink)进行调试。
当选择Simulator调试时,单击debug快捷键,打开Simulator调试窗口,见图9。为了验证该程序在LPC2294硬件平台上是否能够正确执行,通过GPIO口驱动LED进行循环闪烁,用户可以单击Peripherals>GPIO>Port2,将GPIO端口2的仿真界面打开,见图9。
图9 RVDMK调试环境
单击运行快捷键,可以看到在GPIO端口2的仿真调试窗口中,IO口的输出在不停地循环变化。
当程序通过了仿真调试之后,用户就可以通过MDK的硬件调试工具uLink将最终代码固化在非易失性的存储器中了。uLink的设置如图10和图11所示。
图11 选择MDK默认的LPC2294 Flash烧写代码
4 总结