二十四  提高专业技能之 “完整DataSheet”

Write by Liupin 2010-4-9

在嵌入式软件设计中,往往你完成一个单独模块的软件功能,在release时往往要一张较为完整的datasheet,从这中能获取主要feature和对资源的要求,如CPU loading, Memeory size. 如何为软件提供一较为完整的datasheet? 在这篇文章中,我将较为详细的介绍。先来看看一些公司的datasheet,主要是以Codec project为例,如MP3 decoder.

  1. 先来看看spiritDsp 在其网站上提供的Datasheet 信息。个人认为这是一家非常规范的公司,不仅仅其优化Codec性能在行内是首屈一指的,而且各项文档也是很完善。

SPIRIT-MP3-Decoder-Datasheet.pdf

http://www.spiritdsp.com/datasheets/SPIRIT-MP3-Decoder-Datasheet.pdf

例举Feature,Specifications and Resource Requirements, 如大家要看更为完整的datasheet就看上面的linking.

2 罗列一下Datasheet包括的内容。

1)                          主要的特点

2)                          Specification,这一部分可有可无的,就是整体简单介绍一下Codec。这些在相应的spec都能

获取。

3)                          ResourceRequirements

这一部分有很多版本,有的像spirit这样很详细的,有的就只要MIPS/Code size/RW size/RO size,有的还会把stack/heap size 也加入。

MIPS/MCPS---- CPU loading parameter

ProgramMemory size

RW memorysize

RO memorysize 等

3 怎么完善自己Codec Datasheet

1)     Featureand Specification 是很容易填写的,在codec spec and requirement book 中都会有详细的说明。

2)     ResourceRequirements

这部分往往很难填写的完整和准确,这一部分是本blog重点探究的东西。

探究一:MIPS 与 MCPS 区别

For the platform of ADS, the MIPSand the MCPS are all retrieved from the soft simulink. The MCPS can be got asfollowing formula:

MIPS  = total_instrunctions/(play_time*10^6);

MCPS  = total_cycles/(play_time*10^6);

Gernerally speaking, we can concern with the MCPS just for the realdevice, we can estimate the MCPS according to the following formula:

MCPS = (decoded_time/play_time) *dominant_frequency_CPU;

where the play_time has some to do with thesample rate for audio and the frame rate for video.

从上面的可以知道MCPS和MIPS的不同。平时用得较多且实用的是MCPS, 这个能直接反应出CPU loading和 功耗。

由于一条指令可能要多个Cycles, 还有就是可能出现pipeline stall 和 跳转,考虑这些复杂的因素,导致很难确定MCPS与MIPS的转换关系,但我们还能得到不同ARM系列的CPI(每条指令的平均时钟周期数) 值来大致转换MCPS and MIPS.

探究二:Simulator and device get the MCPS 差异

现在等到MCPS往往有二种方式,一种是在simulator环境下,如RVDS4.0下得到这些数据,另一种放到实际的devices上跑,等到在某一系统中的实际performance data.

Simulator performance testing: 只是简单模拟CPU对算法的执行情况,对单纯的算法时间性能较准确的测试。

Devices performance testing: 由于实际的设备中,往往有CPU不是全力在工作,所以实际CPU MHz是一个比峰值小的值,这也是导致二个值的误差原因。

Standalone performance testing: 考虑到实际的CPU和系统,测试出来的值往往比simulator所得到的值偏大。同时实际系统中,由于系统还在跑很多别的系统程序,还有Cache的影响导致测出的数据不准确或每次测得的值发生变化。所以应该多测试几次,在测试Codec performance时,最好不要运行别的系统程序。

探究三:时间性能参数怎样测才会准,以及如何比较这些数据。

例如,同时的MP3 decoder, 不同的公司会提供不同的MCPS Datasheet,那如何判别那个Codec性能好。由于测试的码流和测试的平台不一样,往往导致这些MCPS数据没有什么可比性,只能做一下参考。

要得到更加准确和有参考价值的MCPS数据,那应该指定码流和测试的平台,这样才能得到相对准确的数据。

探究三:如何得到memory size.

1)首先弄清应该要列举那几种size, 也就是嵌入式系统更关注那几个size. 我认为有以下几个。

Program size/Code size  ---- 这个是衡量Codec要多少bss 段memory, 往往有些系统会要求这个值应该小于多少的。

RO size --- 这个也就是constant table size

RW size --- 这个应该是malloc space, 也就是heap, 这个值很重要,嵌入式系统拿到这个值就知道Codec在运行中对memory需求size.

还有一个 Stack: 这个也很关键,有的application或CPU对这个参数也有自己的限定,所以也应该要把这个值拿到。

2 ) 如何获取这些值。

分二种情况,一种是在VS2005/VS2008; 一种是在RVDS下。 个人觉得在RVDS下较为方便和准确

二种情况下都是通过生成对应的Map文件来实现的。

VS2005/VS2008:打开如下编译选项:

RVDS 下,在IDE或makefile中,加如下编译选项:

LFLAGS += --map  --info totals --symbols --list ./test.map

RVDS下将会生成test.map文件,文件中有会有如下信息,我们通过这些信息就有得到很多size.

==============================================================================

Image component sizes

Code (inc.data)   RO Data    RW Data   ZI Data      Debug

888        208         48          0     40960      10995   Object Totals

8          4         48          0          0          0  (incl. Generated)

0          0         0          0          0          1  (incl. Padding)

51036        934     27836        680        524     16284   Library Totals

10          0          0          0          0          0  (incl. Padding)

==============================================================================

Code (inc.data)   RO Data    RW Data   ZI Data      Debug

51924       1142     27884        680      41484     18788   Grand Totals

51924       1142     27884        608      41484     18788   ELF Image Totals(compressed)

51924       1142     27884        608          0          0  ROM Totals

==============================================================================

TotalRO  Size (Code + RO Data)                79808 ( 77.94kB)

TotalRW  Size (RW Data + ZI Data)             42164 (  41.18kB)

Total ROMSize (Code + RO Data + RW Data)     80416 (  78.53kB)

==============================================================================

3)     如何得到stack size.

Stack 也就是函数的局部变量所占空间的大小,在VS2005/VS2008下还没有很好的方法来获取这个数据,在RVDS下有如下方法,通过对stack先染色,然后再做测试就能获取这个数据。

提高专业技能之 “完整DataSheet”相关推荐

  1. JavaWeb完整项目要用到的专业技能

    完成JavaWeb项目用到哪些专业技能?在经典的JavaWeb的开发模式中,我们使用Jsp技术来作为展现层的实现,其实也就是所谓的前端.Web开发中经典的MVC模式,Model-View-Contro ...

  2. 计算机教学训练的有效性,提高对口单招计算机专业技能训练的有效性.doc

    提高对口单招计算机专业技能训练的有效性 对口单招是职业教育的一种特殊形式,从最初只有少部分人参加,到现在各职业学校有规模的组建各专业的对口单招班级,参加普通高校对口单招考试有机会进入高职院校学习,进一 ...

  3. 让人迷茫的三十岁,从专业技能、行业知识和软实力的人才三角谈起

      --------我今年三十岁,我很迷茫,不知道未来该选择什么发展方向. 一.背景 这是我无意中在社区微信群中看到的一位年轻的开发者说的话,之前他也经常会在技术群中抛出一些有深度有内容的问题,并能积 ...

  4. 让人迷茫的三十岁!从专业技能、行业知识和软实力谈一下!

    作者:邹溪源,长沙资深互联网从业者,架构师社区合伙人! 我今年三十岁,我很迷茫,不知道未来该选择什么发展方向. 这是我无意中在社区微信群中看到的一位年轻的开发者说的话,之前他也经常会在技术群中抛出一些 ...

  5. 服务器运维应该报什么专业,数据中心基础设施运维人员应该掌握哪些专业技能?...

    所谓专业技能就是对某一专业有深入的研究,很高的造诣.但人的精力是有限的,一个人很难做到每个专业都精通:并不是每个人都能成为达芬奇这样的天才. 在数据中心基础设施领域,能精通供配电或暖通专业已经是需要很 ...

  6. 2022-2023年度广东省职业院校学生专业技能大赛 中职组网络安全赛项竞赛规程

    2022-2023年度广东省职业院校学生专业技能大赛 中职组网络安全赛项竞赛规程 一.赛项名称 赛项编号:Z27 赛项名称:网络安全赛项组别:中职 赛项归属:信息技术类 二.竞赛目的 为检验中职学校网 ...

  7. 计算机专业技能知识,2017年度计算机专业技能知识资料基础知识资料试题'及其答案...

    2017年度计算机专业技能知识资料基础知识资料试题'及其答案 (19页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 ''第一部分   一 ...

  8. 十个提高编码技能的诀窍,你掌握了几个?

    译者注:此文主要介绍一些提高编程技巧的小方法或者说是技能,嗯,我比较推崇第一条-..多练,熟能生巧. 你想成为一名程序员,并且正在为之奋斗,那么你努力的方式,比如做事方法.思维习惯都将会影响你会成为怎 ...

  9. 教师计算机应用研讨交流,计算机应用技术专业技能比赛研讨交流活动在济南信息工程学校举行...

    2012年度技能比赛的市赛.省赛已落下帷幕,为及时交流大赛经验,查找不足,促进教师技能教学水平和学生技能操作水平的进一步提高,为来年大赛成绩的再上台阶做准备,5月17号,在济南信息工程学校举行了济南市 ...

  10. 计算机网络管理2018版,2018~2019学年度第二学期“计算机网络管理”专业技能竞赛火热进行中...

    原标题:2018~2019学年度第二学期"计算机网络管理"专业技能竞赛火热进行中 为进一步加强我校学生技能训练,提高技能水平,让学子们更好地发挥一技之长.我校于2019年6月11日 ...

最新文章

  1. 为什么我们很难看到代码 5 分钟前的样子?
  2. 【C#学习笔记】退出程序
  3. Python中的sort() key含义
  4. (Spring)依赖注入
  5. FDMemTable 数据集
  6. 前端学习(759):预解析案例
  7. Laya自动图集原理
  8. MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验...
  9. JVM面试1 :谈谈你对Java的理解
  10. 德国沃达丰成功商用4.5G 德国最快基站峰值速率达375Mbps
  11. python可视化计算器_Python tkinter实现简单加法计算器代码实例
  12. 戴着人工心脏上脱口秀大会——王十七的充电人生
  13. if scl.shape = avg.shape: AttributeError: ‘float‘ object has no attribute ‘shape‘
  14. JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!
  15. r语言做绘制精美pcoa图_科学网-R语言 PCA PCoA ggplot2-靳泽星的博文
  16. 解决win10右击鼠标卡顿问题
  17. 如何在有限的plt下getshellcscctf_2019_qual_babystack
  18. ajax实验,AJAX实验报告.doc
  19. 在虚拟机中安装kali
  20. Mac OS平台上全世界上最广泛使用的扫描仪驱程序,能够随时随地为旧的扫描仪创建驱动程序

热门文章

  1. html可以移动的按钮插件,纯css3按钮动画插件
  2. python: 正则表达式2--元字符与re模块
  3. 上海译文公布2019年“新书目录” 名家名译作品结集出版
  4. 【python】面向对象编程
  5. Selenium中的xpath定位
  6. 关于代码审查的几点建议
  7. django -- url 的 命名空间
  8. Env:Cscope安装与配置
  9. RedHat Linux 企业5 oracle 10g
  10. 开源版多用户博客系统