LPC2132 调试记
1、查看快速入门,快速掌握烧写FLASH和JTAG工具,ADS1.2。(相关工具在Software&Driver文件夹下)
(1)LPC2131 FLASH工具:philips公司的LPC2100 Flash Utility V2.2.0 .
(a)波特率设置为9600,时钟设为11050KHZ,time-ou[sec]:2(另外,buffer->flashbuf operation->Download flash可以从flash上下载程序到本机后,再与本机的程序比较是否一致,选择Compare Flash时可以进行flash上程序的校验)
(b)"Upload to Flash"前先要P0.14对地拉低(将ISP(JP1)跳线),程序固化后,将ISP(JP1)跳线帽断开,重新复位系统即可运行程序。LPC2100系列ARM7微控制器芯片具有ISP功能,可以通过串口进行程序下载。(这点非常重要,在我们公司的硬件出板后,我调试板子时,用JTAG调试,程序可以运行,但是用串口下载完程序,重新复位后没有一点反应。后来查过就是硬件设计上没有设置这个跳线。也没有按照如上的要求来进行程序的下载和运行。下载和运行时P0.14脚都为低电平。说明一直是在ISP模式下。)
(2)EasyJTAG-H和H-JTAG可进行硬件仿真调试(不知道有谁知道如何固化,敬请赐教)EasyJtag可以固化,但是我使用时,总是有错误出现,连接不到,网上查过错误原因,很多人有过这样的错误,但是没有找到解决方法。
(3)ADS1.2集成开发环境几个注意点:
(a)Debug Settings ->linker->ARM Linker设置RO(或者指定.scf文件)
(b)Debug Settings ->Target->Target Settings->Post-Linker (ARM fromELF)
(c)Debug Settings ->Liker->ARM fromELF指定output format(Intel 32 bit Hex)
和output file name(/xx/xx/xxx.hex)
(d)指定生成的文件夹为DebugInRam,如果是RelInFlash的话,会对芯片加密,需
要用ISP全局擦除后,才能恢复JTAG调试及ISP读/写操作。
(e) ADX配置好调试目标。Option->configure Target->ADD->D:\Program
Files\H-JTAG V0.3.1目录下的H-JTAG .dll,点击“打开”即可。
Option->configure Target ->Choose Target->H-JTAG
2、快速运行示例代码。在此基础上进行修改可以省去很多时间。移植了UCOS-II操作系统,修改了I2C(模拟I2C),UART0, BEEP(用于测试),中断处理,用一个硬件时钟模拟多个软件时钟。参考网上代码后修改(作者:21icbbs LPC900,2005-08)示例代码见最后例1。
3、开发板上调试完毕后,关键在于板子出来后的调试。此时的问题,可能是硬件,可能是软件。需要软硬件配合调试。做好工作日志,因为此时的问题如果不做好记录,会导致大货时问题没有得到更改。比如前面提到的这次硬件设计上没有设计ISP跳线的问题。另外,开发板上的某些硬件可能与实际板子的有所不同,要稍加注意。如:我们公司出板时用的CPU是LPC2132,与LPC2131的不同是LPC2132是64K+16K,还有时钟更改了,不要忘记在代码中把时钟的值更改过来。其他的基本上没有什么问题,直接移植就可以了。现在还差的就是做个最小文件系统啦(留出一块空间512字节,可存储,可擦除,还要带CRC校验)啊,努力吧。要学的东西太多啦。
4、附带讲一下减少代码的一些办法。
(a)在startup.s中的跳转函数入口,不要写main函数,改为其它名字,也就是把自己的入口函数的名字改掉。因为如果是main入口的话,ads1.2会做一大堆全局变量的COPY和搬移。在用ADS单步调试时会发现在进入main之前会先做_main.这就是在做这些工作。但是如果这样做的话,要记得全局变量和静态变量RODATA段的初始值会丢失,需要在用这些变量前再赋下值。
(b)尽量不用或少用库函数,如atoi,strcmp,strcp等等,而是由自己去实现,这样可以减少链接一些不必要的库文件。
以上二者做的适中的话,可能可以减少10K的代码量
(c)UCOS_II.h中提供了内核裁减的可配置,轻松减少代码。
例1:target.c文件
//定义软件定时器数量(至少1个)
#define TIMER_N8
//定义软件定时器结构
//每个定时器只占用2个字节
struct
{
LPC2132调 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)