阿南版主,有几个问题请教

[复制链接]
2369|6
 楼主| eagle758 发表于 2008-1-22 01:26 | 显示全部楼层 |阅读模式
tc, TI, DRAM, pc, sd
阿南版主:<br />&nbsp;&nbsp;&nbsp;&nbsp;你好!正在学习ARM,有几个问题搞得不是很懂,希望能解释下<br />1、AXD调式,通过AXD和JTAG结合进入调试,假设SDRAM的起始地址是0X0C000000,是不是程序必须下载到SDRAM中才能进行调试???<br />&nbsp;<br />2、用AXD和JTAG结合调试,如果程序必须下载到SDRAM中,那么中断是怎样执行的。当发生IRQ中断了,是跳到0X00地址开始的相应中断,还是跳到SDRAM的起始地址0X0C000000开始的相应是中断地址。<br />&nbsp;<br />3、关于烧写FLASH,是必须用并口才能烧写空FLASH吗。用串口可以吗。如果可以应该怎样做。<br />&nbsp;<br />4、下面这段延时程序,是怎样理解。什么要用到WATCH-DOG??也不是很明白这段程序是怎样延时的?<br />static&nbsp;int&nbsp;delayLoopCount=400;<br />&nbsp;<br />void&nbsp;Delay(int&nbsp;time)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,adjust=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(time==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time=200;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adjust=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delayLoopCount=400;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rWTCON=((MCLK/1000000-1)&lt&lt8)|(2&lt&lt3);&nbsp;&nbsp;//&nbsp;1M/64,Watch-dog,nRESET,interrupt&nbsp;disable<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rWTDAT=0xffff;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rWTCNT=0xffff;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WTCON=((MCLK/1000000-1)&lt&lt8)|(2&lt&lt3)|(1&lt&lt5);&nbsp;//&nbsp;1M/64,Watch-dog&nbsp;enable,nRESET,interrupt&nbsp;disable&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;for(;time&gt0;time--)<br />&nbsp;for(i=0;i&ltdelayLoopCount;i++);<br />&nbsp;&nbsp;&nbsp;&nbsp;if(adjust==1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rWTCON=((MCLK/1000000-1)&lt&lt8)|(2&lt&lt3);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=0xffff-rWTCNT;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;1count/16us?????????<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delayLoopCount=8000000/(i*64);&nbsp;//400*100/(i*64/200)&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />
biao.l 发表于 2008-1-22 11:36 | 显示全部楼层

阿南老大忙着呢,我来说两句,再请阿南老大来指正

1,AXD调试,一般下载到相应的地址,虽然加载域和运行域可以不同<br />2,中断异常是跳到异常向量表的,即从0X0000开始一段表格,程序下载到RAM中,但相应的中断向量表还是映射到OX000<br />3,可以用串口,要相应的上位机软件和装载程序支持。<br />4,。。。。。。。不懂<br /><br />简单说一下,留给高手详细回答,因为我也说不详细
1dqmoon 发表于 2008-1-22 22:27 | 显示全部楼层

re

1.&nbsp;程序下载到flash中也可以运行,但就不能调试了,下载到sram中多数是为了调试<br /><br />2.程序被下载到0X0C000000后,中断也进行了re-map,&nbsp;详细的你可以看看axd的对该工程的options,&nbsp;里面的linker项,可以找到类似44b0init.o&nbsp;的东西,这里就指明了中断向量的基地址<br /><br />3&nbsp;串口当然可以,不过如如果你能忍受下载速度的话<br /><br />4.程序注释说了<br />WTCON=((MCLK/1000000-1)&lt&lt8)|(2&lt&lt3)|(1&lt&lt5);&nbsp;//&nbsp;1M/64,Watch-dog&nbsp;enable,nRESET,interrupt&nbsp;disable&nbsp;<br /><br />把看门狗禁止了,估计是怕延时过程中触发看门狗中断
 楼主| eagle758 发表于 2008-1-23 08:35 | 显示全部楼层

re

1dqmoon:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;多谢你的回答!但对于第2点不是很明白.<br />2.程序被下载到0X0C000000后,中断也进行了re-map,&nbsp;详细的你可以看看axd的对该工程的options,&nbsp;里面的linker项,可以找到类似44b0init.o&nbsp;的东西,这里就指明了中断向量的基地址<br /><br />程序是被AXD调试而将RO=0X0C000000,不是很明白中断向量的基址RE-MAP.发生了IRQ中断,不是芯片内核规定跳到0X18处吗.<br /><br /><br />
icecut 发表于 2008-1-23 09:30 | 显示全部楼层

remap 是地址重新映射

ram的地址会变!
dld2 发表于 2008-1-23 09:44 | 显示全部楼层

N0.4

这里把watchdog定时器当普通定时器使用,用来计算代码执行的周期数。<br />具体可查资料,这样设置时,WDT加一,是几个mclk。<br /><br />这个delay函数可以适应不同的主频,自动计算delayLoopCount,使得延时时间基本上是一个定值。<br />调用delay(0)就是让它自动计算。
阿南 发表于 2008-1-23 10:10 | 显示全部楼层

刚输完字,死机了.赶紧切屏幕:

Delay()是100us的延时程序,在使用前要调用Delay(0)进行校准.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

119

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部