这个块板子,裸奔的at91sam9260,外扩Norflash、SRAM,实现程序既可以跑在Norflash中,也可以拷贝到Sram中跑。任务就 一个:控制一个片外AD,读出数据然后通过串口发出。很简单的吧,这我都搞了几个月呢,你说菜不菜吧。
先说说开发ARM要用到的软件以及工具吧,这段时间我接连使用了IAR、KEIL、h-jtag、JLink,都会用但是都不精通。最后是在 KEIL+Jlink下完成的。
先说说开发ARM要用到的软件以及工具吧,这段时间我接连使用了IAR、KEIL、h-jtag、JLink,都会用但是都不精通。最后是在 KEIL+Jlink下完成的。
开发工具的选择:
1、编译环境:IAR、KEIL、GCC、……
开始我想也没想就选择了IAR,原因很简单:ATMEL的例程很都是基于IAR的,而KEIL安装目录下的例程很少。匆忙安装了IAR当时的最新版 IAR5.20,完全没有考虑可用的资源和交流的方便。然后才发现IAR5.X跟4.X有很大的不同,主要就是其中的链接器从XLINK换成了 ILINK,所以配置文件也由XCL文件换成了ICF文件,初看后者好像比前者更简单更易懂了,但是由于是新版,使用的人还不多,网上上的参考资料大部分 还是基于4.X的,对于新手哪几条语句还是很费解。
不过一根筋的我还是硬着头皮坚持使用IAR5.20,直到遇到IAR的杀招:系统从慢时钟想快时钟切换时就跑飞了,都是死在lowlevelinit() 中的这一句上:AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;然后将这一句放在主程序中,照死不误。使用过程中,总弹出一个警告,大致意思就是说:IAR安装目录 下,bin文件夹下的armlibsupport.dll may be missing or corrupt.重新装后还是老样子。在LED闪烁程序上折腾一个多月未果后,才痛下决心转向KEIL。
用上KEIL才发现这玩意不是传说中的弱智,相反特别适合我等菜鸟,感觉主要有三个方面特别好:启动代码的图形化配置;在Flash跑不需要什么配置文 件,直接在option中添两个地址值就可以了;只需点击鼠标就可以实现将代码从Flash自动拷贝到RAM中执行,不需要再写什么代码拷贝程序了。
GCC, 没用过,不懂。
2、调试工具:JLINK、H-JTAG、ULINK、……
开始使用h-jtag,配合Wiggler使用,小巧且便宜,不得不佩服Twentyone前辈,在RAM中调试很方便,也可以通过H-Flasher将 程序下载到Flash跑,使用h-flasher时要一个初始化文件,主要是初始化Flash相关寄存器。
后来看到DB的JLINK都白菜价了,就从淘宝买了一个JLINK,主要是不用再用并口了,现在百元以内的JLINK大把,用JLINK是个不错的选择, 但是调试片外的flash好像还不能无限断点。
ULINK,不太清楚,好像只支持KEIL,不过没用过。