1、下载程序。
在IDE环境中选择Release,设置RO BASE=0X00000000,RW BASE= 0X40000040(0x40000000不能实现REMAP功能),Image Entry Point=0x00000000, object/simple为vectors.o,section为startup。
2、从JTAG管脚设置。
要实现从JTAG的调试,在进入用户程序前必须设置从JTAG方式。可以在启动程序中设置PINSEL1=0X55400000,也可以在进入MAIN函数后首先执行PINSEL1=0X55400000。在这里我们设计在启动代码中设置从JTAG口。
如下Target.c中在函数TargetResetInit(void)中设置如下。
void TargetResetInit(void)
{
/*REMAP操作*/
MEMMAP=0X01;
//设置从JTAG的管脚配置值
PINSEL0=0X00005505;
PINSEL1=0X55400000;//配置从JTAG
………………….
}
这些程序编译后下载到LPC210X的FLASH中。
3、从JTAG接口调试FLASH中的程序
在IDE环境中编译后按F5进入AXD 调试程序。在AXD调试程序中设置目标过程如下。OPTIONS->CONFIGURE TARGET,选择 EasyJTAG ,再点击Configure按钮。设置为Tap2,Halt and reset,和Erase Flash when need。
设置完成后,LOAD release里面的*.axf映像文件。成功LOAD的结果是出来vectors.s,程序从Vectors汇编程序出开始执行。
在实验板上,跳线的设置如下。JP1 ISP功能跳线拔去,JP6,JP7同样也是拔去,作为从JTAG接口选择。
在vectors.s中程序单步运行(按F10程序单步运行),执行如下:
第一步:(F10)LDRPC, ResetAddr
第二步:(F10)BLInitStack;初始化堆栈
(F8)进入InitStack函数//可以选择进入InitStack看程序运行或F10进行下一步
第三步:(F10)BLTargetResetInit;目标板基本初始化
(F8)进入TargetResetInit函数//可以选择进入TargetResetInit看程序运行或F10进行下一步。在TargetResetInit函数中我们设置从JTAG的功能配置,PINSEL1=0X55400000,使得可以使用从JTAG方式调试下载到FLASH中的程序。
第四步:(F5)B__main
按F5进入用户程序MAIN函数。按F10进入MAIN 函数的汇编代码。
到此处,基本上可以调出来了.但!!!!!!!!!!
进入从JTAG调试FLASH中的程序的一般性步骤。同时在Load 映像文件时会出现几种错误,使得程序不能正常的加载。
1,Load进度条一直在运行,尝试着加载*.axf文件。
2,Load成功但出现中断出错(interrupt vectors error)。
到现在还没有发现问题的症结在那里。
也请大家提出宝贵的方法