打印

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

[复制链接]
1491|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eagle758|  楼主 | 2008-1-22 01:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
tc, TI, DRAM, pc, sd
阿南版主:
    你好!正在学习ARM,有几个问题搞得不是很懂,希望能解释下
1、AXD调式,通过AXD和JTAG结合进入调试,假设SDRAM的起始地址是0X0C000000,是不是程序必须下载到SDRAM中才能进行调试???
 
2、用AXD和JTAG结合调试,如果程序必须下载到SDRAM中,那么中断是怎样执行的。当发生IRQ中断了,是跳到0X00地址开始的相应中断,还是跳到SDRAM的起始地址0X0C000000开始的相应是中断地址。
 
3、关于烧写FLASH,是必须用并口才能烧写空FLASH吗。用串口可以吗。如果可以应该怎样做。
 
4、下面这段延时程序,是怎样理解。什么要用到WATCH-DOG??也不是很明白这段程序是怎样延时的?
static int delayLoopCount=400;
 
void Delay(int time)
{
    int i,adjust=0;
    if(time==0)
    {
      time=200;
      adjust=1;
      delayLoopCount=400;
      rWTCON=((MCLK/1000000-1)<<8)|(2<<3);  // 1M/64,Watch-dog,nRESET,interrupt disable
      rWTDAT=0xffff;
      rWTCNT=0xffff;  
      WTCON=((MCLK/1000000-1)<<8)|(2<<3)|(1<<5); // 1M/64,Watch-dog enable,nRESET,interrupt disable 
    }
 for(;time>0;time--)
 for(i=0;i<delayLoopCount;i++);
    if(adjust==1)
    {
       rWTCON=((MCLK/1000000-1)<<8)|(2<<3);
       i=0xffff-rWTCNT;   //  1count/16us?????????
       delayLoopCount=8000000/(i*64); //400*100/(i*64/200)   
    }
}

相关帖子

沙发
biao.l| | 2008-1-22 11:36 | 只看该作者

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

1,AXD调试,一般下载到相应的地址,虽然加载域和运行域可以不同
2,中断异常是跳到异常向量表的,即从0X0000开始一段表格,程序下载到RAM中,但相应的中断向量表还是映射到OX000
3,可以用串口,要相应的上位机软件和装载程序支持。
4,。。。。。。。不懂

简单说一下,留给高手详细回答,因为我也说不详细

使用特权

评论回复
板凳
1dqmoon| | 2008-1-22 22:27 | 只看该作者

re

1. 程序下载到flash中也可以运行,但就不能调试了,下载到sram中多数是为了调试

2.程序被下载到0X0C000000后,中断也进行了re-map, 详细的你可以看看axd的对该工程的options, 里面的linker项,可以找到类似44b0init.o 的东西,这里就指明了中断向量的基地址

3 串口当然可以,不过如如果你能忍受下载速度的话

4.程序注释说了
WTCON=((MCLK/1000000-1)<<8)|(2<<3)|(1<<5); // 1M/64,Watch-dog enable,nRESET,interrupt disable 

把看门狗禁止了,估计是怕延时过程中触发看门狗中断

使用特权

评论回复
地板
eagle758|  楼主 | 2008-1-23 08:35 | 只看该作者

re

1dqmoon:
     多谢你的回答!但对于第2点不是很明白.
2.程序被下载到0X0C000000后,中断也进行了re-map, 详细的你可以看看axd的对该工程的options, 里面的linker项,可以找到类似44b0init.o 的东西,这里就指明了中断向量的基地址

程序是被AXD调试而将RO=0X0C000000,不是很明白中断向量的基址RE-MAP.发生了IRQ中断,不是芯片内核规定跳到0X18处吗.


使用特权

评论回复
5
icecut| | 2008-1-23 09:30 | 只看该作者

remap 是地址重新映射

ram的地址会变!

使用特权

评论回复
6
dld2| | 2008-1-23 09:44 | 只看该作者

N0.4

这里把watchdog定时器当普通定时器使用,用来计算代码执行的周期数。
具体可查资料,这样设置时,WDT加一,是几个mclk。

这个delay函数可以适应不同的主频,自动计算delayLoopCount,使得延时时间基本上是一个定值。
调用delay(0)就是让它自动计算。

使用特权

评论回复
7
阿南| | 2008-1-23 10:10 | 只看该作者

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

Delay()是100us的延时程序,在使用前要调用Delay(0)进行校准.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

119

帖子

0

粉丝