




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第9章章 C语言程序开发语言程序开发 DSP软件开发有两种途径 专用汇编语言程序 开发和高级 软件开发有两种途径 专用汇编语言程序 开发和高级C语言程序开发 语言程序开发 专用汇编语言程序开发专用汇编语言程序开发 直接用汇编语言编 写源程序 经过汇编 连接后生成可执行代码 直接用汇编语言编 写源程序 经过汇编 连接后生成可执行代码 out 然后再进行调试 固化 然后再进行调试 固化 高级高级C语言程序开发语言程序开发 采用高级采用高级C语言编写 源程序 先利用 语言编写 源程序 先利用C编译器把编译器把C源程序转换成汇 编语言源程序 然后与汇编语言程序一样处 理 源程序转换成汇 编语言源程序 然后与汇编语言程序一样处 理 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 返回返回 C语言程序开发语言程序开发 DSP库函数库函数 C语言程序编写语言程序编写 C语言程序调试语言程序调试 C和汇编混合编程和汇编混合编程 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 注意 在程序中使用某一类库函数或 者宏时 必须使用 注意 在程序中使用某一类库函数或 者宏时 必须使用 include语句把定义该 函数或宏的头文件包含进程序中 语句把定义该 函数或宏的头文件包含进程序中 比如说要使用sin函数 必须使用下列语句把 其头文件math h包含进程序 include math h x sin y 返回返回 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 C语言程序编写语言程序编写 采用任何文本编辑器 比如采用任何文本编辑器 比如Windows的记事本 编写 的记事本 编写C程序 编写程序 编写C程序时应注意 程序时应注意 1 在一个在一个C程序中必须并且只能有一个函数 名称为 程序中必须并且只能有一个函数 名称为main 2 函数定义时 同时要声明变量的类型 函数定义时 同时要声明变量的类型 3 用户自己定义的子函数一般放在主程序之 前 若放在主程序之后 必须在程序开头声明 各子函数 用户自己定义的子函数一般放在主程序之 前 若放在主程序之后 必须在程序开头声明 各子函数 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 C语言程序调试语言程序调试 C语言程序的调试也可以使用集成调试工具语言程序的调试也可以使用集成调试工具 CC2000 调试步骤同汇编程序大致相同 调 试时需要以下五种文件 调试步骤同汇编程序大致相同 调 试时需要以下五种文件 1 C语言程序 语言程序 c 2 头文件 头文件 h 3 库文件 库文件 rts2xx lib 4 命令文件 命令文件 cmd 5 复位和中断向量文件复位和中断向量文件vectors asm 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 头文件 头文件 h 示例 示例 在头文件中 寄存器以指针方式寻址 在头文件中 寄存器以指针方式寻址 Volatile关键字用于避免对变量的优化 关键字用于避免对变量的优化 ioport关键字用于定义需要访问关键字用于定义需要访问I O端口空间 格式 端口空间 格式 ioport 类型标识符 端口号类型标识符 端口号 ioport为定义端口变量的关键字 数据类型必须是字 符型 短整型 整型或者无符号型变量 端口号为十 六进制的端口编号 为定义端口变量的关键字 数据类型必须是字 符型 短整型 整型或者无符号型变量 端口号为十 六进制的端口编号 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 例 下面代码把端口例 下面代码把端口port10h定义为无符号型变量 写定义为无符号型变量 写 port10h 并把它读到 并把它读到b ioport unsigned port10 定义变量访问定义变量访问 I O端口端口 10h int func port10 a 把把a写入端口写入端口 10h b port10 把端口把端口10h 读入读入b 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 命令文件 命令文件 cmd文件 示例文件 示例 C编译器产生如下两类段 编译器产生如下两类段 1 初始化段 其中包括数据表和执行代码 初始化段 其中包括数据表和执行代码 text段 用于存放可执行代码和实型常量 段 用于存放可执行代码和实型常量 cinit段 存放初始化变量表和常量表 段 存放初始化变量表和常量表 const段 存放字符串常量 全局变量和静态 变量的定义及其初始化内容 switch段 存放switch语句建立的表格 段 存放字符串常量 全局变量和静态 变量的定义及其初始化内容 switch段 存放switch语句建立的表格 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 C语言与汇编相互调用C语言与汇编相互调用 C语言缺点 语言缺点 C代码的执行速度和效率在某些情况 下不如汇编代码 比如 代码的执行速度和效率在某些情况 下不如汇编代码 比如FFT算法 中断处理 对 硬件进行控制 算法 中断处理 对 硬件进行控制 C代码效率低 速度也慢 解决措施 把 代码效率低 速度也慢 解决措施 把C语言和汇编语言结合起来 程序 主体由 语言和汇编语言结合起来 程序 主体由C来控制 对实时性要求较高或者需要对来控制 对实时性要求较高或者需要对 DSP底层资源进行操作的代码用汇编语言实现 然后把 底层资源进行操作的代码用汇编语言实现 然后把C和汇编连接起来 这样可以使得二者取长补短 相得益彰 达 到对 和汇编连接起来 这样可以使得二者取长补短 相得益彰 达 到对DSP软硬件资源的最佳利用 软硬件资源的最佳利用 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 在开发在开发DSP程序时 必须遵循系统对程序时 必须遵循系统对C运 行环境的约定 包括存储器模式 寄存器使用 规则 函数调用规则 运 行环境的约定 包括存储器模式 寄存器使用 规则 函数调用规则 C与汇编接口 中断处 理方法等方面 与汇编接口 中断处 理方法等方面 存储器模式存储器模式 寄存器使用规则寄存器使用规则 函数调用规则函数调用规则 C与汇编接口与汇编接口 返回返回 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 寄存器使用规则寄存器使用规则 C编译器中规定了严格的寄存器使用规则 包括编译器如何使用寄存器和调用函数期间如 何保存环境两方面的内容 编译器中规定了严格的寄存器使用规则 包括编译器如何使用寄存器和调用函数期间如 何保存环境两方面的内容 1 辅助寄存器使用规则辅助寄存器使用规则 必须保护必须保护AR0 FP AR1 SP AR6和和AR7 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 3 局部帧局部帧 C编译器利用软件堆栈来保存函数返回地址 分配局部 编译器利用软件堆栈来保存函数返回地址 分配局部 auto 变量 传递函数参数 只有当函数 嵌套层数超过 变量 传递函数参数 只有当函数 嵌套层数超过8层时才会使用硬件堆栈 当函数需 要局部存储时 就在堆栈中产生一个局部幀 层时才会使用硬件堆栈 当函数需 要局部存储时 就在堆栈中产生一个局部幀 C编译器使用三个指针来管理系统堆栈和局部 幀 它们是 堆栈指针 编译器使用三个指针来管理系统堆栈和局部 幀 它们是 堆栈指针SP 幀指针 幀指针FP和局部变量 指针 和局部变量 指针LVP 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 AR1被指定为堆栈指针被指定为堆栈指针SP 使用时堆栈向高 地址方向生长 使用时堆栈向高 地址方向生长 SP指向下一个可用的字 指向下一个可用的字 AR0被指定为幀指针被指定为幀指针FP 指向当前函数的局 部幀的首地址 指向当前函数的局 部幀的首地址 AR2被指定为局部变量指针被指定为局部变量指针LVP 包括参数在 内的所有存放于局部幀内的存储目标都通过该指 针进行间接寻址 包括参数在 内的所有存放于局部幀内的存储目标都通过该指 针进行间接寻址 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 函数调用规则函数调用规则 C编译器对函数的调用有一套严格的规则 除了特殊的运行支持函数外 任何调用 编译器对函数的调用有一套严格的规则 除了特殊的运行支持函数外 任何调用C函数的 函数和被 函数的 函数和被C调用的函数都必须遵循这些规则 否 则可能会破坏 调用的函数都必须遵循这些规则 否 则可能会破坏C环境 使得程序无法运行 环境 使得程序无法运行 1 参数传递 给函数传递参数时 必须遵循以下规则 参数传递 给函数传递参数时 必须遵循以下规则 1 函数运行之前 将参数压入运行堆栈 函数运行之前 将参数压入运行堆栈 2 以逆序传递参数 以逆序传递参数 3 对对32位数 先压低位 后压高位 位数 先压低位 后压高位 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 2 局部帧的产生局部帧的产生 调用函数时 编译器在运行堆栈中建立一个局部帧 调用函数时 编译器在运行堆栈中建立一个局部帧 1 从从C2xx堆栈弹出返回地址并压入堆栈弹出返回地址并压入C软件堆栈 软件堆栈 2 把旧的把旧的FP内容压入内容压入C运行堆栈 并把当前运行堆栈 并把当前SP设 置为新的 设 置为新的FP 3 把把SP的值加上 的值加上 N 1 其中 其中N为需要保存的 局部变量的个数 增加的一个字位于帧的开始 用于 存放临时变量 为需要保存的 局部变量的个数 增加的一个字位于帧的开始 用于 存放临时变量 4 若函数使用若函数使用AR6和和AR7作为寄存器变量 则将 它们的内容压入堆栈 作为寄存器变量 则将 它们的内容压入堆栈 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 3 函数结束函数结束 函数结束返回时 必须恢复函数结束返回时 必须恢复C环境 环境 1 处理要传递给调用者的返回值 处理要传递给调用者的返回值 2 如果使用了如果使用了AR6和和AR7 必须恢复 必须恢复 3 撤消为局部变量和临时值分配的空间 撤消为局部变量和临时值分配的空间 4 恢复原来的帧指针恢复原来的帧指针FP 5 把返回地址压入把返回地址压入C2xx堆栈 堆栈 6 返回 返回 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 汇编程序和汇编程序和C程序接口程序接口 在使用在使用C和汇编混合编程时 必须注意以下 规则 和汇编混合编程时 必须注意以下 规则 1 无论是无论是C还是汇编函数 在编写时都必须遵 循寄存器规则 还是汇编函数 在编写时都必须遵 循寄存器规则 2 必须保护必须保护AR0 FP AR1 SP AR6和和AR7 3 保护状态寄存器 如果程序中改变了状态寄存器中各状态位 的期望值 则必须加以恢复 尤其注意 保护状态寄存器 如果程序中改变了状态寄存器中各状态位 的期望值 则必须加以恢复 尤其注意ARP必 须设置为 必 须设置为AR1 南航自动化学院南航自动化学院 南航自动化学院南航自动化学院南航自动化学院南航自动化学院DSPDSPDSP技术应用实验室 技术应用实验室 技术应用实验室技术应用实验室技术应用实验室技术应用实验室 7 汇编模块中被汇编模块中被C访问的标识符前要 加下划线 访问的标识符前要 加下划线 C编译器在所有编译器在所有C标识符前加下划线 所以 在汇编模块中被 标识符前加下划线 所以 在汇编模块中被C访问的汇编标识符前也必须 加下划线 访问的汇编标识符前也必须 加下划线 例 若变量例 若变量x要被要被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 丝绸产业国际市场多元化战略考核试卷
- 冷藏食品的调味品添加与控制考核试卷
- 五金店全渠道零售的顾客价值评估模型构建考核试卷
- 设备数据备份周期规划考核试卷
- 2024年事业单位考试云南省昆明市富民县《公共基础知识》最后冲刺试题含解析
- 安全生产法规培训
- 江苏省无锡市普通高中2024-2025学年高一下学期期末历史试卷(含答案)
- 汉服派发礼物活动方案
- 江盛公司团购活动方案
- 楼盘政策活动方案
- 机械电子工程考试试题及答案
- 2025-2030晶圆贴片机行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 青少年去极端化安全教育宣传
- AI赋能与素养导向:初中英语智慧课堂的融合实践研究
- 构建中药材种植标准化模式
- 《2025年危险化学品企业安全生产执法检查重点事项指导目录》解读与培训
- 心脑血管疾病创新药物研究-全面剖析
- 2025年03月四川成都农业科技中心公开招聘笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 《2025年CSCO非小细胞癌诊疗指南》解读
- 人工水磨钻劳务合同标准文本
- 全过程工程咨询投标方案(技术方案)
评论
0/150
提交评论