以下内容摘至本公司的网友社区,由网友wangych10整理,时间截止到12月14日。
在这里再次衷心感谢网友wangych10。
wangych10的声明:因为我也是个初学者,所以对一些问题没有很好的分析后再重新整理贴上去,回帖是否正确,请大家
注意仔细确认。不能确认的大家再提出来讨论!
希望有人(当然是高手啦)做一下帖子的整理,就象21ICBBS一样,做一个离线版!
*******************************************************************************************
使用JTAG的困惑!
1. 调试的程序时下载到EasyArm中,还是保存在PC上(每执行一条命令,通过JATG发送到LPC2104一条指令)
2.如果是下载到EasyArm中,是下载到flash中,还是下载内部ram中!
3.如果下载到flash中,为什么还要是设置-ro base 为0x40000000 ,-rw base 为0x40000300
4.如果下载到ram中,为什么要把中断向量复制到0x40000000的起始地址,不复制中断向量就不能得到正常中断服务,但是reset却不受影响,
谢谢,请高手指教!!!再次谢谢!
1、下载到LPC2104中
2、根据编译设置决定(下载到flash中仿真器要相应的设置),-ro base 为ram地址范围下载到ram,-ro base 为FALSH范围下载到FALSH。
3、参考2
4、编译参数设置正确不需要复制,当然程序的remap设置也要正确。复制是为了无论程序在ram中还是在FLASH中均运行正确。
1. 我设置的地址是ram中的地址,起始地址:0x40000000,是ram的地址范围,根据ARM7的说明,复位的地址是:0x00000000,那么程序是如何开始运行的,即,第一条指令放在世纪的什么位置了
2。如果是ADS有什么机制可以在仿真的时候reset从0x40000000开始,那么为什么在串口中断(zlg的easyram开发手册的程序)有了remap可以中断,没有remap就不能有正常的接受中断呢?
谢谢!
JTAG可以改变PC的值,但不能改变异常产生时CPU从哪开始运行程序。
********************************************************************************************
单步执行时,在PINSEL1 = 0x00000000;后总是出现提示框
“No disassembly could be read at the requested address.”
不知什么原因,望高手解答,谢谢!!
您是否是用从JTAG(次要JTAG)调试,如果是,第二句改为PINSEL1 = 0x55400000。
*******************************************************************************************
在URT0试验2中:
bak = set.datab-5; // 设置字长度
if(2==set.stopb) bak |= 0x04; // 判断是否为2位停止位
if(0!=set.parity) set.parity = set.parity-1;
bak |= set.parity; // 设置奇偶校验
U0LCR = bak;
对bak |= set.parity;有些疑问,奇偶选择在U0LCR中是5:4,而这里set.parity只能是0,1,或了过后能给5:4置位吗?
还有前面的试验中:i=VICIRQStatus,i=IOSET,连续两次赋值也搞不大明白.
我是个初学者,望指教!
i=VICIRQStatus只是读出VICIRQStatus的值观察,没有别的意义。
********************************************************************************************
请问如果只采用从JTAG调试,而不是用J6和J7从主方式切换到从方式可以吗?
我试过先把J6跳到PCSEL,J7跳到PCDBG,并在AXD里设置TAP2,可以在MEMORY窗口看到PINSEL1 = 0x55400000,这时蓝色箭头指向启动代码,取出J6 J7程序进入从JTAG调试,一切正常,但是如果一开始J6 J7就取出,好象EASYARM2104这块扳子无法与AXD通讯,似乎必须先主后从?难道不能直接从JTAG调试吗?黄皮书的附录2最后提到了ISP先烧一个程序到FLASH,不太明白,烧到什么地址?而且用ADS调试的时候代码不是要从JTAG灌到2104的FLASH或RAM里吗?这时好象必须是主JTAG?而且怎么知道执行的是先用ISP烧进去的代码还是后来的?我都晕了,还望高手赐教!
如果使用PC控制主/从JTAG:
1. JP6、JP7分别跳到PCSEL、PCDBG,因为EasyJTAG要控制主/从JTAG口切换。(不用再取出)
2. 若在AXD里设置TAP2,EasyJTAG会先使用主JTAG控制,写入PINSEL1 = 0x55400000,后才切换到从JTAG(控制硬件切换,即通过PCSEL、PCDBG控制)。
如果一开始就取出JP6、JP7跳线,EasyJTAG根本不能控制PINSEL1 = 0x55400000。是先主后从。
程序烧写到00000000H。
使用从JTAG口,要先使PINSEL1=0x55400000,JP6、JP7只是硬件控制跳线。
那么怎样才能仅仅使用从JTAG呢?
JP6、JP7短路器取出,此时只能使用从JTAG进行调试。
但有一点要注意,就是想办法让PINSEL1=0x55400000,使从P0.27--P0.31配置为从JTAG口。(可通运行FLASH中的程序设置,所以要写一段代码放入FLASH的00000000H起始地址)
在仿真器配置设置中,设置为不复位系统。在AXD调试环境, 打开"Options->Configure Target...",弹出"Choose Target"窗口,在"Target Environments"框中选择"EasyJTAG..."项。点击"Configure"按钮,进入"EasyARM Configuration"设置窗口,在"Options"项中选择Halt program。
*****************************************************************************************************************************
[1028]My question:怎样生成FLASH影像?
P403(6)中,将必须的文件(书上说的,我一个也没多加)加到工程中,按F7编译出错。
Error: L6218E:Undefined symbol GetOSPrioCur(referred from UsrFunctionAdr.o)
L6218E:Undefined symbol Uart_SendChar(referred from UsrFunctionAdr.o)
L6218E:Undefined symbol PC_DispChar(referred from UsrFunctionAdr.o)
......
L6218E:Undefined symbol PC_GetKey(referred from UsrFunctionAdr.o)
我将UsrFunctionAdr数组中的几个函数屏蔽掉,编译便能通过了。但显然,这样做是不正确的。
请问怎样才能正确编译?是不是还要加别的文件到工程中?我把PC.C和PC.H加到工程中,编译也会出错。请指教,谢谢!
[1030]My question:编译问题,实验EX1_arm成功,其它如EX1_armthumb,EX1_thumb,Ex2_arm,EX3_arm等都不成功。我发现按F7编译,按F5调试运行后,都进入死循环。
DataAbort
b DataAbort
我用的是你们光盘上提供的工程。ucos_II已经事先固化到FLASH中,我的问题是:是不是即使ucos_II已经事先固化到FLASH中,LPC2104也没有足够的ram放置应用代码?如果是,怎样将程序下载到FLASH中?要用ISP下载吗?直接按F7编译不能将代码下载到FLASH中吗?
实验EX1_arm成功,就是直接按F7编译,然后按F5进入调试环境,再按两次F5程序跑起来后,就成功了。
同样的操作,EX1_armthumb,EX1_thumb,Ex2_arm,EX3_arm等都不成功。为什么?
这些例子均是按照lpc2106的资源编写的,是完整的代码。lpc2104的ram不够。要使它们运行,需要如下改动:
1、按照图7.13、图7.14、图7.11更改连接参数。
2、可能还需要修改任务堆栈的大小,如改变宏TASK_STK_SIZE的值。
[1030]My question:ucos_II已经事先固化到FLASH中,固化到哪里去了呢?
RO_Base设置为0X0,就说明ucos_II固化到FLASH中的起始地址为0吗?
如果是这样,将实验EX1_arm,EX1_armthumb,EX1_thumb,Ex2_arm,EX3_arm等的RO_Base设置为合适的值,release到FLASH中,不就可以运行了吗?
关键是应用程序怎样找到ucos_II,对不对?
版主,您说过,ucos与应用程序分开编译后,应用程序通过SWI的一个功能得到ucos的地址,您能说的再仔细一点吗?谢谢!
还有,那个ISP的Buffer为什么最大到&H0001DFFF?
下面是我做实验EX1_arm的几个测试,请版主帮我分析一下为什么会有这种现象:
ucos_II固化地址(从ISP的Buffer中读取的):
Start:0x00000000 End:0x00004C67
1、将RO_Base设置为0x00004C68,release到FLASH中,
Start:0x00004C68 End:0X000097D3
但是,有以下现象发生:0x00004000到0X00004C67的代码被擦除。
2、将RO_Base设置为0x00005000,release到FLASH中,
Start:0x00005000 End:0x00009B6B
但是,也有以下现象发生:0x00004000到0X00004C67的代码被擦除。
3、将RO_Base设置为0x000058D0,release到FLASH中,
Start:0x000058D0 End:0x0000A43B
但是,还是有以下现象发生:0x00004000到0X00004C67的代码被擦除。
4、将RO_Base设置为0x00006000,release到FLASH中,
Start:0x00006000 End:0x0000AB6B
此时,0x00004000到0X00004C67的代码就不会被擦除了。
ucos_II已经事先固化到FLASH中,固化到哪里去了呢?
固化到片内flash中,固化的工程为RomCode。
RO_Base设置为0X0,就说明ucos_II固化到FLASH中的起始地址为0吗?
是。
如果是这样,将实验EX1_arm,EX1_armthumb,EX1_thumb,Ex2_arm,EX3_arm等的RO_Base设置为合适的值,release到FLASH中,不就可以运行了吗?
基本是,但要注意修改rw_base参数,并可能还需要减少分配给任务的堆栈的大小,以便程序占用的ram小于16KB。
关键是应用程序怎样找到ucos_II,对不对?
版主,您说过,ucos与应用程序分开编译后,应用程序通过SWI的一个功能得到ucos的地址,您能说的再仔细一点吗?谢谢!
请看一看配套书6.4.3节、6.4.4节和6.4.13节。
还有,那个ISP的Buffer为什么最大到&H0001DFFF?
请看一看配套书3.16.5节(特别注意第13点)及3.17.7节
下面是我做实验EX1_arm的几个测试,请版主帮我分析一下为什么会有这种现象:
ucos_II固化地址(从ISP的Buffer中读取的):
Start:0x00000000 End:0x00004C67
1、将RO_Base设置为0x00004C68,release到FLASH中,
Start:0x00004C68 End:0X000097D3
但是,有以下现象发生:0x00004000到0X00004C67的代码被擦除。
2、将RO_Base设置为0x00005000,release到FLASH中,
Start:0x00005000 End:0x00009B6B
但是,也有以下现象发生:0x0000
没有合适的资源?快使用搜索试试~ 我知道了~
easyArm 资料
共698个文件
h:159个
o:110个
c:103个
需积分: 9 34 下载量 66 浏览量
2008-12-09
23:06:15
上传
评论
收藏 12.77MB RAR 举报
温馨提示
DATASHEET 相关芯片手册及ARM参考资料 实验程序 LPC2106/2105/2104功能部件相关实验 easyarm_drive EasyJTAG仿真器驱动程序 sofware EasyARM软件及相关实验程序 LPC210x ISP LPC210x的ISP软件 Ucosii 2.52 for lpc210x and ex Ucosii移植程序及相关中间件
资源推荐
资源详情
资源评论
收起资源包目录
easyArm 资料 (698个子文件)
easyARM.ami 63B
disptimer1.axf 16KB
disptimer.axf 16KB
IAPtest.axf 16KB
SENDRTC.axf 15KB
I2CINT.axf 15KB
disptimer2.axf 15KB
DATARET.axf 14KB
LEDHEX.axf 14KB
LEDDISP.axf 14KB
LEDDISP.axf 14KB
SENDSTR.axf 13KB
SPIDISP.axf 13KB
IRQ2_test.axf 13KB
i2cslave.axf 13KB
EINT1_test.axf 12KB
PWMDAC.axf 12KB
LEDCON.axf 12KB
KEYIN.axf 12KB
PDrun.axf 11KB
TIMEOUT.axf 11KB
TIMESCIIR.axf 11KB
TIMELED.axf 11KB
WREEPROM.axf 7KB
IDLERUN.axf 7KB
REMAP_test.axf 7KB
WDTRUN.axf 6KB
PWMOUT.axf 6KB
Init.s.bak 5KB
config.h.bak 4KB
config.h.bak 4KB
config.h.bak 4KB
SPIDISP.bin 1KB
PC.C 28KB
TEST.C 25KB
TEST.C 25KB
TEST.C 25KB
TEST.C 22KB
TEST.C 22KB
TEST.C 22KB
Os_cpu_c.c 16KB
TEST.C 13KB
TEST.C 13KB
TEST.C 13KB
queue.c 13KB
I2C.c 12KB
target.c 11KB
target.c 11KB
target.c 11KB
target.c 11KB
target.c 11KB
target.c 11KB
target.c 11KB
target.c 11KB
target.c 11KB
target.c 11KB
target.c 11KB
target.c 10KB
target.c 10KB
target_ex.c 10KB
uart0.c 10KB
target.c 10KB
target.c 10KB
target.c 10KB
target.c 10KB
target.c 10KB
OSFunctionsAddr.c 10KB
TEST.C 10KB
I2CINT.c 8KB
spi.c 8KB
sendrtca.c 7KB
target.c 7KB
sendrtc.c 7KB
iaptest.c 6KB
TEST.C 6KB
target.c 6KB
target.c 6KB
target.c 6KB
TEST.C 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
target.c 6KB
rtc.c 6KB
sendrtcb.c 6KB
共 698 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
cairia
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功