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

[复制链接]
4405|10
 楼主| xahzs 发表于 2008-4-29 17:29 | 显示全部楼层 |阅读模式
AT9261裸奔,不用操作系统,采用SAM-ICE仿真调试的时候,程序是下载到芯片内部SRAM跑的,而脱机的<br /><br />时候程序是烧写道dataflash里面,资料上说,芯片会自动把dataflash的代码拷贝到芯片sram运行,但结<br /><br />果是脱机运行速度明显慢于仿真速度。<br />经过多次试验,是由STR,LDR这样的指令引起的。<br />例如:<br />int&nbsp;m,n,flag&nbsp;=&nbsp;0;<br />int&nbsp;ram[256];<br />while(1)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;for(m=0;m&lt10000;m++)<br />&nbsp;&nbsp;&nbsp;&nbsp;for(n=0;n&lt256;n++)<br />&nbsp;&nbsp;&nbsp;&nbsp;ram[n]&nbsp;=&nbsp;n;//汇编相当于&nbsp;LDR&nbsp;[Rn+n],#n<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(flag)<br />&nbsp;&nbsp;&nbsp;&nbsp;pio&nbsp;=&nbsp;1;//硬件端口便于示波器观测<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;pio&nbsp;=&nbsp;0;//硬件端口便于示波器观测<br />&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;=&nbsp;~flag;<br />}<br />我用示波器观测仿真时的波形周期比脱机要小200多ms!!!!<br />这到底是怎么回事,是脱机程序没有下载到sram里面吗?
and 发表于 2008-4-29 17:58 | 显示全部楼层

是不是跑到SDRAM里去了?

看看你的链接配置文件。
l0p0c 发表于 2008-4-30 11:22 | 显示全部楼层

过来看看!

  
微风 发表于 2008-4-30 11:28 | 显示全部楼层

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

  
 楼主| xahzs 发表于 2008-4-30 15:04 | 显示全部楼层

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

但是读写SDRAM,读写寄存器时仿真速度与脱机速度是一样的哦
overoo 发表于 2008-4-30 16:01 | 显示全部楼层

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

dataflash的代码是不能直接运行的,必须放到ram里,可以去看一下时钟配置<br />是不是调试的时候条是脚本把频率提升了
 楼主| xahzs 发表于 2008-5-3 15:19 | 显示全部楼层

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

频率是对的,我脱机通过串口打印出来CPU的频率是0x0BD8426AHZ,即198722154HZ。速度区别在于读写sram的时候!
bald 发表于 2008-5-4 10:11 | 显示全部楼层

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

AT的FLASH存取速度使用的是EBI中SRAM配置。<br />由于FLASH存取速度的限制,复位时这一设置值是很低的。<br /><br />
 楼主| xahzs 发表于 2008-5-4 13:50 | 显示全部楼层

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

在ATMEL底层API函数里面未发现有SRAM速度设置,只有ITCM,DTCM容量设置,我设置ITCM=DTCM=0,所以160K全部当SRAM来用,而资料上做SRAM的速度可与处理器速度一样??
 楼主| xahzs 发表于 2008-6-2 10:16 | 显示全部楼层

问题解决了

11111111111111
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

56

帖子

1

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