前段时间我们在新项目开发中选用了PHILLIPS的LPC213x作为CPU。所以我们向周立功公司购买了一套EasyARM2131开发板和两套ULINK JTAG仿真器。在头一个月内遇到了很多莫名其妙的问题,虽然后来都一一解决,但也让我们走了很多弯路。后来在网上发现遇到问题的不仅仅是我们。所以在这里把一些遇到的问题和解决办法写出来与大家共享。我们对下面的这些问题的理解不一定都正确,解决办法也不一定是最佳的。另外也希望大家把自己的理解和经验能共享出来。
1、常常发生ULINK找不到CPU,后来发现是因为在软件内对GPIO的不正确操作造成的。PHILIPS的LPC2000系列片子有一个最大的特点就是JTAG引脚也是复用的。可以被选择成普通GPIO。所以在设置引脚时一定要注意,不能直接对PINSELx进行赋值(当然这种方法本来就不应该使用)。而是先读出PINSELx寄存器的值,用位逻辑运算将需要修改的几位进行修改。也就是“读取->修改(逻辑运算)->赋值”。不然就会很容易使JTAG失效,导致仿真器找不到CPU。只有用ISP清除CPU的FLASH才可以。这一点PHILIPS做的很愚蠢。
2、在使用Keil时,缺省给的startup是错误的,无法使用。周立功的技术支持说Keil公司还尚未给LPC213x系列写startup。可以用ADS1.2编译,再在Keil里调试。具体方法在周立功的网站上可以下载。另外据周立功的技术支持声称,ADS1.2的编译效率是几个常见编译器里最高的。不知真的假的,现在还没有做过测试。但是对AXD的调试环境实在无法忍受。
3、在Keil设置时非常需要注意的是:要确认ULINK仿真器设置里的Flashdownload
setup里的Flash起始位置和大小是正确的。特别是大小,其数值不会随Device选择好了就自动更改,需要人工设置。
4、我们一直在使用Keil for ARM 2.32版,很稳定。但是使用从网上下载的Keil for ARM 2.4版时却遇到很多问题。不知道现在是否有所改进。