打印

STM32 SD+算术运算指今所占周期

[复制链接]
2006|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
06quzhi|  楼主 | 2009-9-24 18:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请路过的朋友指点啊!
我在SD卡读操做时,顺序读音60个BLOCK,速度可以达到达2.4M,加入地址运算符后只有不到期120K!
有谁知道在SMT32中,各种运算符所占的时间是多少?如%,*,+等等!
沙发
06quzhi|  楼主 | 2009-9-24 18:58 | 只看该作者
补充:
加运算符前代码:BlockSize=512     NumberOfBlocks=60   
  Status = SD_ReadMultiBlocks(0x00, Buffer_MultiBlock_Rx, BlockSize, NumberOfBlocks);


加运算符控制地址之后:
   for(i=30;i>0;i--)
   {
    printf("SD read\r\n");
    Status = SD_ReadMultiBlocks(((i%10)*512), Buffer_MultiBlock_Rx, BlockSize, 2);
   }

使用特权

评论回复
板凳
seawwh| | 2009-9-25 09:20 | 只看该作者
这里不应该是算术指令导致的延时,是由于每次读2个block造成的。

一次连读10blocks 需要的时间大大小于,每次读1block的时间x10.

使用特权

评论回复
地板
06quzhi|  楼主 | 2009-9-25 13:13 | 只看该作者
我顺序读60个block为2.4M/S随机读60个速度为640k/s,觉的主要的时间是浪费在每次重新找地址上,有没有什么办法可以提高随机读的速度?

使用特权

评论回复
5
IJK| | 2009-9-25 14:06 | 只看该作者
顺序读60个block为2.4M/S随机读60个速度为640k/s

这是正常现象,几乎所有的卡(SD、MMC等等)和U盘都是这样,这是NAND FLASH的特性造成的。只有在SSD(固态硬盘)之类的设备里面,使用了不少DRAM进行缓存后,才能提高随机读的速度

使用特权

评论回复
6
kiton_law| | 2009-11-29 05:08 | 只看该作者
printf???????
楼主不知道这函数的威力吗?号称速度终结者。

使用特权

评论回复
7
xsgy123| | 2009-11-29 20:44 | 只看该作者
这个时间肯定是微妙级的吧

使用特权

评论回复
8
gxgclg| | 2009-11-30 09:38 | 只看该作者
运算的时间肯定很快,知道这个时间意义不大,也不好测

使用特权

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

本版积分规则

3

主题

11

帖子

0

粉丝