随笔分类 -  ARM软件开发

ARM软件开发
摘要:优化一个codec的时候,MCPS往往作为一个关键的指标,很多公司的datasheet上,也常常把MCPS最为关键参数列出,一个公司能做到多少MCPS,往往成为它技术能力的象征。那么通常做一个项目的时候,怎么确定到底最终能到达多少MCPS呢?怎么能在项目开展之前准确的算出最终能达到多少MCPS, 我感觉也没有很好的方法,不过倒是有几点可以参考。1.项目的需求,实际上,根据项目的需求来确定codec的MCPS比较好。根据采用的dsp/arm的计算能力和整个项目的计算复杂度,然后的分配给codec多少。2. 参考其他公司的指标,在网上可以查到很多公司做的codec的指标,虽然各个公司有偏差,但大致 阅读全文
posted @ 2011-02-15 23:57 c6000 阅读(1663) 评论(0) 推荐(1)
摘要:终于在android 手机上跑了c和汇编,先把以前的资料重新整理下,分以下步骤1. 首先下载并安装交叉编译工具GNU/ARM Linux gcc:  http://www.codesourcery.com/gnu_toolchains/arm/download.html  安装时 直接解压就行了2. 要设置好PATH环境变量。3. 用刚下载的交叉编译工具编译源代码:  # arm-none-linux-gnueabi-gcc test.c -o test -static  -static选项在这里是必须的,不然android平台就不运行此程序。  这也说明了此平台上的C/C++库是不能被C/ 阅读全文
posted @ 2011-01-13 21:16 c6000 阅读(3162) 评论(0) 推荐(0)
摘要:ARMv6 及更高版本中推出了饱和指令:SSAT 和 USAT, SSAT16 和 USAT16有符号饱和到任何位位置和无符号饱和到任何位位置,可选择在饱和前进行移位。SSAT 可将有符号值饱和到有符号范围内。USAT 可将有符号值饱和到无符号范围内。语法其中:op 是 SSAT 或 USAT。cond 是一个可选的条件代码(请参阅条件执行)。Rd 是目标寄存器。 Rd 不能为 r15。sat 指... 阅读全文
posted @ 2010-11-08 23:21 c6000 阅读(5322) 评论(0) 推荐(0)
摘要:最近需要对比ARM9E和cortex a8 NEON的优化效率,虽然NEON的指令在完全适合的情况下,可以做到是ARM9E的1/4的运行周期,但是实际情况下很少有程序完全适合NEON的并行思想,只能是部分适合,所以在网上搜了下,发现visual on 公司做过arm11和cortex a8的对比。实际上,arm11和arm9e的效率基本相当,这点可以从多家公司公布的datasheet看出来。那么我... 阅读全文
posted @ 2010-10-22 23:36 c6000 阅读(2459) 评论(0) 推荐(0)
摘要:DSP存储器特点:• 采用多总线Harvard结构• 支持 >2~4存储器访问/Cycle• 大容量的片内SRAM• 片内SRAM可以配置成程序存储空间或数据存储空间• 没有或较小的片内指令CacheGP存储器特点:• 采用单总线Von Neumann结构• 只支持1次存储器访问/Cycle• 一般没有较大的片内... 阅读全文
posted @ 2010-10-11 23:49 c6000 阅读(499) 评论(0) 推荐(0)
摘要:NEON 中的加法指令其实并不少,大致有以下几种VADDVADDHNVHADDVPADDVQADDVRHADDVRADDH但是使用起来相当的不灵活,尤其是某些加法指令不带饱和,往往加的结果会溢出而无法处理,不得不采用ARM指令来完成饱和加其中VADD,VQADD是可以带饱和的加VHADDVPADDVRHADDVRADDH是不带饱和的加,令其功能逊色不少 阅读全文
posted @ 2010-09-28 23:16 c6000 阅读(1675) 评论(0) 推荐(0)
摘要:ARM NEON Optimization. An Example Http://hilbert-space.de/?p=22 Since there is so little information about NEON optimizations out there I thought I’d write a little about it.Some weeks ago someo... 阅读全文
posted @ 2010-09-14 22:30 c6000 阅读(8586) 评论(1) 推荐(0)
摘要:用RVDS4.0集成开发环境新建一个target为cortex A8 NEON的工程,即便是hellowolrd,也无法正常运行,然而自己写makefile调用amrcc的方式就可以。在水木等地咨询,虽然回复的网友众多,其中不乏一些高手,但是问题总是解决不了。最后还是arm的技术支持技高一筹,给了下面的代码,并设置程序入口点为init_cpu,问题解决http://infocenter.arm.c... 阅读全文
posted @ 2010-08-30 22:38 c6000 阅读(1653) 评论(0) 推荐(0)
摘要:今天检查实习生写的程序,发现他们对跳转指令有混用的现象,想给他们解释,于是重新复习了一下这几条跳转指令。B :强制跳转BL:带链接跳转,将下一个指令的地址复制到 lr(r14,链接寄存器)中。BX:跳转并切换指令集,将下一个指令的地址复制到 lr(r14,链接寄存器)中。BLX:带链接跳转并切换指令集,将下一个指令的地址复制到 lr(r14,链接寄存器)中,   BLX label:无论何种情况,... 阅读全文
posted @ 2010-08-26 22:42 c6000 阅读(4358) 评论(0) 推荐(0)