无忧商务网,免费信息发布推广平台,您可以 [登陆后台] 或 [免费注册] 无忧商务网 | 企业黄页 | 产品库存 | 供求信息 | 最新报价 | 企业资讯 | 展会信息
黄页信息| 库存信息| 技术服务| 供应信息| 求购信息| 二手信息| 加工信息| 供求库| 报价库| 展会库| 代理信息| 保健| 生活黄页| 食谱| 网络黄页| 水族休闲| 人力HR| 招聘
首页>>生活网>>生活保健>>3C小百科-消费性电子-其他
DSP集成开发环境中的混合编程及FFT算法的实现

 CCS(Code Composer Studio)是TI公司的DSP集成开发环境。它提供了环境配置、源文件编辑、程序调试、跟踪和分析等工具,帮助用户在一个软件环境下完成编辑、编译链接、调试和数据分析等工作。与TI提供的早期软件开发工具相比,利用CCS能够加快软件开发进程,提高工作效率。CCS一般工作在两种模式下:软件仿真器和与硬件开发板相结合的在线编程。前者可以脱离DSP芯片,在PC机上模拟DSP指令集与工作机制,主要用于前期算法实现和调试。后者实时运行在DSP芯片上,可以在线编制和调试应用程序。
<P>     <STRONG>  2  C语言和汇编语言的混合编程</STRONG><BR><BR>       TMS320 C5000系列的软件设计通常有三种方法:<BR><BR>       (1) 用C语言开发;<BR><BR>       (2) 用汇编语言开发;<BR><BR>       (3) C和汇编的混合开发。<BR><BR>       其中用C语言开发具有兼容性和可移植的优点,有利于缩短开发周期和减少开发难度,但是在运算量较大的情况下,C代码的效率还是无法和手工编写的汇编代码的效率相比,比如FFT运算,用汇编语言开发的效率高,程序执行速度快,而且可以合理利用芯片的硬件资源,但是开发难度较大,开发周期长,而且可读性和可移植性差。C和汇编的混合编程则可以充分利用前两者的优点,以达到最佳利用DSP资源的目的。但是,采用C和汇编语言混合编程必须遵循相关函数调用规则和寄存器调用规则,否则会给程序的开发带来意想不到的问题。<BR><BR>     <STRONG>  2.1  C语言和汇编语言混合编程的四种方法</STRONG><BR><BR>       (1) 独立编写汇编程序和C程序,分开编译或汇编成各自的目标代码模块,再用链接器将二者链接起来。这种方法比较灵活,但是设计者必须自己维护各汇编模块的入口和出口代码,自己计算传递的参数在堆栈中的偏移量,工作量较大,但是能做到对程序的绝对控制。<BR><BR>       (2) 在C程序中使用汇编程序中定义的变量和常数。<BR><BR>       (3) 在C程序中内嵌汇编语句。这种方法可以实现C语言无法实现的一些硬件控制功能,如修改中断控制寄存器。<BR><BR>       (4) 将C语言编译生成相应的汇编代码,手工修改和优化C编译器生成的汇编代码。采用这种方法可以控制C编译器,从而产生具有交叉列表的汇编程序,而设计者可以对其中的汇编语句进行修改,然后对汇编程序进行编译,产生目标文件。<BR><BR>       后3种方法由于在C中直接嵌入了汇编语言,易造成程序混乱,破坏C环境,甚至导致程序崩溃,而开发者又很难对不良结果进行预期和有效控制。而如果采用第一种方法,只要遵循有关C语言函数调用规则和寄存器规则,就能预见到程序运行的结果,保证程序正确。<BR><BR>    <STRONG>   2.2  编程注意事项</STRONG><BR><BR>       C编译器对函数调用制定了一组严格的规则。除了特殊的运行时间支持库函数外,任何调用函数和被C函数调用的函数都必须遵守这些规则。结合作者在编程中的实际情况和切身体会,提出在编程时要注意以下几点:<BR><BR>       (1) 必须保护任何被函数修正的专用寄存器。这些专用寄存器包括:AR1,AR6,AR72和堆栈指针(SP)。其中,如果对SP正常使用,则不必明显的保存。换句话说,只要汇编函数在调用返回时弹出压入的对象,实际上就已经保护了SP。<BR><BR>       (2) 中断函数必须保存其使用的所有寄存器。<BR><BR>       (3) 从汇编函数中调用C函数时,第一个参数(最左边的)必须放入累加器A中,剩下的参数按照自右向左的顺序压入堆栈。<BR><BR>       (4) 如果函数有返回值,则返回值存放在累加器A中。<BR><BR>       (5) 调用C函数时,注意C函数只保护了几个特定的寄存器,对于其他寄存器C函数是可以自由使用的。<BR><BR>       (6) 长整数和浮点数存储在存储器中的方法是最高有效字在低位地址。<BR><BR>       (7) 汇编语言模块不能改变由C模块产生的.cinit段,如果改变其中的内容将会引起不可预测的后果。<BR><BR>       (8) 在汇编语言模块中,对可以从C中访问的变量和函数名需加上前缀&#8220;_&#8221;。对于仅用于汇编语言模块中的标识符,不用加下划线。而且如果仅在汇编中使用,只要不加下划线,即使与C程序中定义的对象名相同,也不会造成冲突。<BR><BR>       (9) 任何在汇编语言模块中声明的将要从C访问或调用的对象或函数,都必须在汇编语言中用.global伪指令声明为全局变量。同样,任何在C程序中定义而将在汇编中访问或调用的对象或函数,在汇编中也必须用.global声明。<BR></P>
相关资讯
类别浏览
安徽 北京 福建 甘肃 广东 广西 贵州 海南 河北 河南 黑龙江 湖北 湖南 吉林 江苏 宁夏 青海 山东 山西 陕西 上海 四川 天津 新疆 西藏 云南 浙江 重庆 辽宁 江西 内蒙古
无忧商务网 版权所有 Copyright © 2020.6 www.cn5135.com All Rights Reserved. 湘ICP备12008603号
本站所有产品都是会员自行发布,所有信息都有对方的企业名片和联系方式,如果您需要咨询产品具体参数和细节,请直接联系和咨询厂商,谢谢。
行业子站: 机械 库存 建材 物流 礼品 能源 农业 汽摩 食品 通讯 五金 玩具 矿产 印刷 休闲 服务 服装 化工 环保 电子 纺织 电工 电脑 电器 办公 安全 包装 仪器 家居