打印

求助ARM底层(ADS下裸机)高手

[复制链接]
2974|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xahzs|  楼主 | 2008-4-29 17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AT9261裸奔,不用操作系统,采用SAM-ICE仿真调试的时候,程序是下载到芯片内部SRAM跑的,而脱机的

时候程序是烧写道dataflash里面,资料上说,芯片会自动把dataflash的代码拷贝到芯片sram运行,但结

果是脱机运行速度明显慢于仿真速度。
经过多次试验,是由STR,LDR这样的指令引起的。
例如:
int m,n,flag = 0;
int ram[256];
while(1)
{
    for(m=0;m<10000;m++)
    for(n=0;n<256;n++)
    ram[n] = n;//汇编相当于 LDR [Rn+n],#n

    if(flag)
    pio = 1;//硬件端口便于示波器观测
    else
    pio = 0;//硬件端口便于示波器观测
    flag = ~flag;
}
我用示波器观测仿真时的波形周期比脱机要小200多ms!!!!
这到底是怎么回事,是脱机程序没有下载到sram里面吗?

相关帖子

沙发
and| | 2008-4-29 17:58 | 只看该作者

是不是跑到SDRAM里去了?

看看你的链接配置文件。

使用特权

评论回复
板凳
l0p0c| | 2008-4-30 11:22 | 只看该作者

过来看看!

使用特权

评论回复
地板
微风| | 2008-4-30 11:28 | 只看该作者

说拷贝就拷贝了啊,估计代码里没做拷贝,程序还在FLASH上跑

使用特权

评论回复
5
xahzs|  楼主 | 2008-4-30 15:04 | 只看该作者

求助ARM底层(ADS下裸机)高手

但是读写SDRAM,读写寄存器时仿真速度与脱机速度是一样的哦

使用特权

评论回复
6
overoo| | 2008-4-30 16:01 | 只看该作者

是不是调试的时候条是脚本把频率提升了

dataflash的代码是不能直接运行的,必须放到ram里,可以去看一下时钟配置
是不是调试的时候条是脚本把频率提升了

使用特权

评论回复
7
xahzs|  楼主 | 2008-5-3 15:19 | 只看该作者

求助ARM底层(ADS下裸机)高手

频率是对的,我脱机通过串口打印出来CPU的频率是0x0BD8426AHZ,即198722154HZ。速度区别在于读写sram的时候!

使用特权

评论回复
8
bald| | 2008-5-4 10:11 | 只看该作者

程序载入完成后重新设置SRAM

AT的FLASH存取速度使用的是EBI中SRAM配置。
由于FLASH存取速度的限制,复位时这一设置值是很低的。

使用特权

评论回复
9
xahzs|  楼主 | 2008-5-4 13:50 | 只看该作者

怎样设置读写SRAM速度(程序载入完成后重新设置SRAM)?

在ATMEL底层API函数里面未发现有SRAM速度设置,只有ITCM,DTCM容量设置,我设置ITCM=DTCM=0,所以160K全部当SRAM来用,而资料上做SRAM的速度可与处理器速度一样??

使用特权

评论回复
10
xahzs|  楼主 | 2008-6-2 10:16 | 只看该作者

问题解决了

11111111111111

使用特权

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

本版积分规则

4

主题

54

帖子

1

粉丝