打印
[ZLG-ARM]

郁闷:如何提高LPC2131运行速度.急

[复制链接]
2047|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cd666|  楼主 | 2009-2-27 17:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
情况如下:
外部有一频率为1M的时钟信号,占空比为50%,要求在每个时钟的下降沿读回一个8位数据.
系统使用11.0952M的晶体,PLL设为5倍.其它为周工的模板设置.
使用如下读数程序:
PINSEL0 = 0x20000005; //P0.14 为INT1 连接到UART0
EXTMODE = 0x02;        // EINT1下降沿触发
EXTPOLAR = 0x00;

while(1)
{
IO0PIN = IO0PIN ^ IO1;    //引脚取反 测试用
    for(i=0;i<100;i++)
    {
    while(EXTINT == 0);    //等待下降沿
    EXTINT = 0x0F;        //清外部中断标志 
    AD_buf = IO0PIN >> 15;    //读取AD数据
    }

使用如此程序,原本读取100个信号,应用100US,结果实际测试需要125US多.
在使用axd仿真时,除了while(EXTINT==0)这句外,
每个读数循环执行了7条指令,共用16个内核周期.

当将程序改为while(EXTINT==1)时,读数循环包括判定EXTINT标志在内共执行10条指令,用了18个内核周期.

现在我就不明白了,执行不到20个内核周期为什么会用1.25us左右的时间.
按10.0592*5 运行20个内核周期 应是在1US内啊. 为什么实际不是这样的呢.

郁闷...在此请教各位了,是我那个地方理解错了,还是这个内核本来就这么慢.谢谢.

或是谁能提供一个更快读数的方法.谢谢



相关帖子

沙发
ZLG_Dengz| | 2009-2-28 10:03 | 只看该作者

RE

    你好,方便的话请把反汇编的代码贴出来,以便大家分析. 另外I/O属于外设挂在VPB总线上的,他的访问速度是低于内核的访问速度的。另外由于有些跳转会清空流水线,导致内核的实际速度达不到一个周期一条指令。
    另外可以将循环部分由C语言改成汇编看有没有能精简的指令,嵌进去试试。

使用特权

评论回复
板凳
cd666|  楼主 | 2009-3-2 15:54 | 只看该作者

反汇编代码如下

0xe59fe050]   ldr      r14,0x00000414 ; = #0xe01fc000
[0xe3a0200f]   mov      r2,#0xf
[0xe1a0c004]   mov      r12,r4
[0xe59c0000]   ldr      r0,[r12,#0]    //端口取反测试用
[0xe2200d80]   eor      r0,r0,#0x2000
[0xe58c0000]   str      r0,[r12,#0]
[0xe3a00000]   mov      r0,#0         //循环初值
[0xe5de1140]   ldrb     r1,[r14,#0x140]
[0xe3510001]   cmp      r1,#1
[0x0afffffc]   beq      0x3d8  ; (main + 0x9c)
[0xe5ce2140]   strb     r2,[r14,#0x140]  //清中断标志
[0xe59c1000]   ldr      r1,[r12,#0]
[0xe1a017a1]   mov      r1,r1,lsr #15
[0xe7c31000]   strb     r1,[r3,r0]     //存数据
[0xe2800001]   add      r0,r0,#1      //循环增量
[0xe3500ffa]   cmp      r0,#0x3e8     //循环上限比较
[0x3afffff5]   bcc      0x3d8  ; (main + 0x9c)

这是ads1.2的反汇编代码.因为是初学arm,也不知道反汇编的注释有没加错.还请各位提点下.

使用特权

评论回复
地板
cd666|  楼主 | 2009-3-4 08:35 | 只看该作者

难道高手都看不上这种简单问题

看来这个问题问得有些笨.......

使用特权

评论回复
5
王紫豪| | 2009-3-5 01:05 | 只看该作者

这个arm干了这件事还能干别的吗?建议加fifo或者cpld

使用特权

评论回复
6
ddpxy| | 2009-4-2 13:26 | 只看该作者

倍频之后要还是 不行那就没有招了

使用特权

评论回复
7
cd666|  楼主 | 2009-4-4 21:13 | 只看该作者

感谢各位

感谢大家,看来还是要多关心下一下自己发出的贴子.
还好自己又钻研了几天之后,才发现周工的启动代码VBP频率是设为最低的.
现在问题已经搞定.

使用特权

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

本版积分规则

47

主题

153

帖子

0

粉丝