• 提高cpu性能的软件 > DSP应用程序的移植和软件架构体系
  • DSP应用程序的移植和软件架构体系

    免费下载 下载该文档 文档格式:PDF   更新时间:2006-06-02   下载次数:0   点击次数:15
    文档基本属性
    文档语言:
    文档格式:pdf
    文档作者:aa
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    DSP应用程序的移植和软件架构体系
    Qianyong(anqian88@etang.com)
    一.基于X86(Pentium4)平台的VC++应用程序 如何移植到DM642平台 有哪些关键点
    .c/.cpp/.asm /.lib/.dll…… .c/.cpp/.asm /.lib/……
    Visual C++
    移植
    CCS
    X86 Platform
    DM642
    关键点一:分析并提取VC++应用程序中与 算法相关的代码
    算法移植的第一步就是分析并提取VC++应用程序中与算法相 关的代码,并参考VC++应用程序,重新建立算法验证的程序框架和 测试环境.
    void algo_verify(void) { Setup&Init AlgoEnv; Create&Init AlgoObj; while(1){ Get InData; Processed by Algo; Output Result; }
    Algorithm (API)
    Dsp/bios ……
    CDB/Cmd }
    1.创建CCS项目并加入 算法和验证等代码/库
    2.描述并配置(CDB)验 证平台以及系统环境; Sim/Dm642
    关键点二:编译器&平台相关的基本数据 类型之间的差别:
    DATA TYPE char short int long float double VC&x86 8-bit 16-bit 32-bit 32-bit 32-bit 64-bit CCS&Dm642 8-bit 16-bit 32-bit 40-bit 32-bit 64-bit
    注:1. CCS&Dm642体系中,long型数据的取值范围是按40-bit 来计算的,而占用的存储空间却是按照64-bit来计算的; 2.VC& x86体系中定义了bool数据类型,它占用8-bit(VC5.0 and later); 而CCS&D m642体系中并未定义bool数据类型,用户使用之前应 该自己定义;3.CCS&DSP/BIOS系统中也定义适用于不同应用场 合的数据类型预定义,具体参见头文件std.h和csl_stdinc.h;
    关键点三:编译器&平台相关的序的问题 (LittleEndian/BigEndian):
    1. Dm642硬件平台的序是由Dm642芯片复 位时管脚TOUT1/LENDIAN的电平决定 (0-BigEndian/1-LittleEndian); 7~0 15~8 23~16 31~24 高地址
    2. CCS编译工程之前,需要手工指定工程的 一编译设置以确定输出的模式(Project BuildOptions Compiler Advanced Endianness和CDB中); 3. X86硬件平台序的默认设置为BigEndian; VC编译器的输出默认为BigEndian模式;
    BigEndian
    31~24 23~16 15~8 7~0 低地址
    31~24 23~16
    15~8
    7~0
    LittleEndian
    关键点四:汇编程序的处理(通常在.asm类 文件中)
    很多被移植的开源项目中,譬如Xvid(Mpeg4)/X264(H.264), 很多运算量比较集中的函数,譬如FDCT/IDCT/Quant/Dequant /SAD,都是使用mmx汇编指令来优化实现的.mmx指令是依赖于 X86平台的,所以在移植的时候要用功能完全等同的C函数来替代, 进而做算法的功能验证.(这些汇编函数也是我们以后进行汇编级 优化的重点对象.)
    关键点五:二进制库调用的处理(.lib/.dll)
    如果被移植的项目中调用了二进制库(.lib/.dll)中的函数,那么: 1.如果被调用的函数包括在随CCS提供的库中(rts.lib),那么无需 -修改;例如getchar()/printf()/fread()等待; 2.如果被调用的函数不包括在随CCS提供的库中,那么根据该函数 -的性质加以处理:直接删除/用功能完全等同的C函数来替代.
    关键点六:存储系统的合理配置
    开发VC++应用程序时,程序员无需关心堆(heap)和栈(stack)大小 的配置,因为它是由操作系统来分配管理的.而在嵌入式系统的开发 中,程序员必须根据系统的需求来合理地配置系统的存储系统. 基于DSP/BIOS(A Realtime OS)的系统中,程序员必须合理配 置如下几个内存块的大小: 1)系统堆栈--用于C环境的建立,系统的初始化,中断服务程序; 2)任务堆栈--用于任务切换时上下文环境的保存,临时变量; 3)系统的堆--用于内存的动态分配(malloc-free/MEM_alloc-free); 基于实时库+main-loop的系统中,程序员必须合理配置如下两个 内存块的大小: 1)系统堆栈--用于C环境的建立,中断服务程序; 2)系统的堆--用于内存的动态分配(malloc-free); 在算法的移植过程中,3)显得尤其需要注意,因为它比较隐蔽. 在系统的稳定性测试过程中,1)和2)显得尤其需要注意,因为它出现 比较偶然(有时也是必然)和隐蔽.

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • cpu性能测试软件  测cpu温度软件  最新cpu超频软件  手机cpu超频软件下载  intelcpu超频软件  电脑cpu超频软件下载  笔记本cpu降温软件  cpu温度测试软件  cpu降温软件官方下载