- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 C语言程序设计与混合编程
* 第6章 C语言程序设计与混合编程 第6章 C语言程序设计与混合编程 6.1 C语言程序设计 6.2 用C语言和汇编语言混合编程 本章小结 习 题 代码效率高,程序执行速度快,可充分合理地利用芯片提供的硬件资源。但程序编写比较烦琐,可读性较差,可移植性较差,软件的修改和升级困难。 可读性强,开发速度快,便于修改和移植。但C编译器无法实现在任何情况下都能够合理地利用DSP芯片的各种资源。 C54x DSP软件设计的方法通常有三种: 采用混合编程的方法能更好地达到设计要求,完成设计任务。 (1) 用汇编语言开发 (2) 用C语言开发 (3) C语言和汇编语言混合编程开发 6.1 C语言程序设计 1. C语言特点及语 (1) 语言简洁、紧凑,使用方便、灵活。 (2) 运算符丰富,表达式类型多样化。 (3) 数据结构类型丰富,具有现代化语言的各种数据结构。 (4) 具有结构化的控制语句。 (5) 语法限制不太严格,程序设计自由度大。 (6) C语言允许访问物理地址,能进行位操作,能实现汇编 语言的大部分功能,能直接对硬件进行操作。 C系统的堆栈可以完成的主要功能如下: * 分配局部变量; * 传递函数参数; * 保存所调用函数的返回地址; * 保存临时结果。 3. 系统堆栈的使用 运行堆栈的增长方向是从高地址到低地址, 即入栈则地 址减少,出栈则地址增加。堆栈的管理者是堆栈指针SP,堆 栈的容量由链接器(Linker)设定。 如:在链接命令文件(.cmd文件)中加入选项 -stack 0x1000 堆栈的容量被设为1000H个字 2. C语言基本语法(略) (1)存储器模式 C54x DSP定点处理器有两种类型的存储器: 程序存储器:主要用于装载可执行代码; 数据存储器:主要用于装载外部变量、静态变量、系统堆栈 以及一些中间运算结果。 程序代码或数据以段的形式装载于存储器中,C语言程序 经C编译器编译后,生成七个可重定位的段,其中四个被称为 已初始化段,三个被称为未初始化段。 4. 存储器模式及分配 四个已初始化段分别是: * .text段 包括可执行代码、字符串和编译器产生的常量。 * .cinit段 包括初始化变量和常量表。 * .const段 包括字符串常量和以const关键字定义的常量。 * .switch段 为.const语句建立的表格。 三个未初始化段分别是: * .bss段 保留全局和静态变量空间。在程序开始运行时,C的 引导(boot)程序将数据从.cinit段拷贝到.bss段。 * .stack段 为C的系统堆栈分配存储空间,用于变量的传递。 * .sysmem段 为动态存储器函数malloc、calloc、realloc分配存 储器空间;若C程序未用到此类函数,则C编译器不产生该段。 在编写链接命令文件(.cmd文件)时, .text、.cinit、.switch段通常可以链接到系统的ROM或者RAM中去,但是必须放在程序段(page0); .const段通常可以链接到系统的ROM或者RAM中去,但是必须放在数据段(pagel); .bss、.stack和.sysmem段必须链接到系统的RAM中去,并且必须放在数据段(pagel)。由实验程序所建的某工程的链接命令文件(.cmd文件),如例6.1所示。 【例6.1】某工程的链接命令文件(.cmd文件) MEMORY /* TMS320C54x DSP存储器分配 */ { PAGE 0 : HPIRAM: origin = 0x100, length = 0x200 PROG: origin = 0x2000, length = 0x1000 PAGE 1 : DARAM1: origin = 0x03000, length = 0x1000 PAGE 2 : FLASHRAM: origin = 0x8000, length = 0x7fff } SECTIONS { /* 由C 定义 */ .vectors : load = PROG page 0 /*中断向量表*/ .text : load = PROG
文档评论(0)