all datasheet 数据手册,加强自身专业技能

提高二十四专业技能的“完全数据表”

Write by Liupin 2010-4-9

嵌入式软件的设计通常完成单个模块的软件功能。 对于release,通常需要更完整的数据表。 从中对关键功能和资源的要求,例如CPU加载,内存大小.如何为软件提供更完整的数据表? 在这篇文章中,我会更详细地介绍。 首先,让我们看看几家公司的数据表。 主要以编解码项目为例。 例如,MP3解码器。

首先,让我们看看spiritDsp在网站上提供的数据表信息。 我个人认为这是一家非常规范的公司。 不仅优化了编解码器的性能,而且每个文档都很丰富。 spirit-MP3 -解码器- data sheet.pdf

33558 www.spirit DSP.com/data sheets/spirit-MP3-decoder-data sheet.pdf

以Feature、specificationsandresourcerequirements为例。 要查看更完整的数据表,请查看上面的链接。

罗列Datasheet中包含的内容。

1 )主要特点

2 )规范,这一部分可以没有,但总体上我们将简要介绍编解码器。 这些都是用合适的spec

取得。

3 )资源请求

这一部分有很多版本,有的像spirit这样详细,有的只有MIPS/Code size/RW size/RO size,有的只有堆栈/heap size。

MIPS/mcps—- cpuloadingparameter

程序存储器大小

rw内存大小

RO memorysize等

3如何完善自己的编码数据表

1 )功能和规范很容易填写。 编码规格和要求手册中有详细说明。

2 )资源请求

这一部分往往难以填写完整和准确,这一部分是本blog重点探索的。

探索MIPS与MCPS的区别

For the platform of ADS,themipsandthemcpsareallretrievedfromthesoftsimulink.themcpscanbegotasfollowingformula 3360

MIPS=total _ instrunctions/(play _ time * 10 ^ 6;

MPs=total _ cycles/(play _ time * 10 ^ 6;

Gernerally speaking,wecancernwiththemcpsjustfortherealdevice,wecanestimatethemcpsaccordingtothefollowingformula 3360

MCPS=(decoded_time/play_time ) ) *dominant_frequency_CPU;

where the play _ timehassometodowiththesamplerateforaudioandtheframerateforvideo。

从上面的内容可以看出MCPS和MIPS的区别。 平时常用实用的是MCPS,它可以直接反应CPU的加载和功耗。

考虑到这些复杂因素,很难确定MCPS和MIPS之间的转换关系,因为一个指令可能需要多个Cycles,并且可能与pipeline stall发生跳转

二.探索模拟器与设备获取the mcps的差异

现在,等待MCPS的方法有两种:一种是在simulator环境(如RVDS4.0 )中获取这些数据,另一种是在实际设备上运行。 一种方法是等待某个系统的实际perform

ance 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先染色,然后再做测试就能获取这个数据。

 

 

 

 

 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注