|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
2210跳转比较多时执行速度怎么提高? |
作者:teleheart 栏目:ARM技术 |
我用的是easyram2200 自己做了个PACK板子,想从上面高速存取数据,测试了一下性能: volatile uint16 *packadd; while(1){*packadd = 0x0000; *packadd = 0xffff; } 编译完: 0x80000358 [0xe1c040b0] strh r4,[r0,#0] 0x8000035c [0xe1c010b0] strh r1,[r0,#0] 0x80000360 [0xeafffffc] b 0x80000358 ; (main + 0x2c) 测试了一下CS0和CS2,80%左右的时间是在读RAM,PACK上的CS2有效时间很少。请问各位大侠怎么加速啊? 2 还有个菜问题,没有缓存的话是不是指令都应该直接从FLASH里读进来,怎么是RAM的CS有效呢?(是不是可以把程序影射到RAM里执行?我是用书上的例子修改的) |
2楼: | >>参与讨论 |
作者: zlgarm 于 2006/7/10 8:57:00 发布:
2210跳转比较多时执行速度怎么提高 1、while(1){*packadd = 0x0000; *packadd = 0xffff; } 可能被优化,不是很好的测试方式,可以试试块拷贝,并用定时器的方式测试拷贝完成时间。 2、无CASH时,CPU从程序存储器直接取指。程序所存放的位置,看分散加载文件。 |
3楼: | >>参与讨论 |
作者: teleheart 于 2006/7/10 20:34:00 发布:
如何加速执行速度? 重新写了个汇编函数在C环境里调用: while(1){ function(); } function中使用下面3行重复多次,发现ldrh执行60ns,但两次ldrh间隔将近500ns,我怀疑是easyarm2200是16位总线比较慢的原因,是这样吗 function里重复多次的3行: ldrh r2,[r1],#2 tst r2,#0x8000 strneh r2,[r0],#2 如果想加速的话具体怎么把程序加载到内部RAM执行? * - 本贴最后修改时间:2006-7-11 18:37:43 修改者:teleheart |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |