- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CCS中C语言软件开发基础 两个目标: 能理解进而编写.CMD文件 学会如何在C语言中访问外设寄存器 本讲内容 1 公共目标文件格式(COFF) 2 .CMD文件编写 3 C语言中外设寄存器的访问 1 COFF—公共目标文件格式 1.1 块(Section,也可翻译为段) 1.2 汇编器对块的处理 1.3 链接器对块的处理 1.4 重新定位 1.链接时重新定位 将各个段定位到存储器中,每个段都从合适的地址开始。 将符号值调整到相对于新的段地址的数值。 调整对重新定位后符号的引用。 2.运行时重新定位 将代码装入存储器的一个地方,而运行在另一个地方。利用SECTIONS命令选项让链接器定位两次。一些关键的执行代码必须装入在系统的ROM中,但希望在较快的RAM中运行。 链接器提供了一个简单的处理该问题的方法。利用SECTIONS命令选项让链接器定位两次。第一次使用装入关键字设置装入地址,再用运行关键字设置运行地址。 1.5 程序装入 (1)硬件仿真器和CCS集成开发环境,具有内部的装入器,调用装入器的LOAD命令即可装入可执行程序。 (2)将代码固化在片外存储器中,采用Hex转换工具(Hex conversion utility),例如Hex500将可执行的COFF目标模块(.out文件)转换成几种其他目标格式文件,然后将转换后的文件用编程器将代码写入EPROM/Flash。 2 .CMD文件的编写与使用 2.1 MEMORY伪指令及其使用 2.2 SECTIONS伪指令及其使用 CMD文件其实就是用户的“声明” ,包括两方面的内容: 1、用户声明整个系统的存储器资源。 无论是 DSP 芯片自带的,还是用户外扩的,凡是可以使用的、需要用到的存储器和空间,用户都要一一声明出来:有哪些存储器,它们的位置和大小。如果有些资源根本用不到,可以视为不存在,不必列出来,当然列出来也可以。 2、用户如何分配这些存储器资源,即关于资源分配情况的声明。 用户根据自己的需要,结合芯片的要求,把各种段(代码段、数据段)分配到适当种类、适当特点、适当长度的存储器区域。 2.1 MEMORY伪指令及其使用 MEMORY伪指令就是用来指定目标存储器的模型。 MEMORY伪指令的一般语法为: MEMORY { [PAGE 0:] name 1 [(attr)] : origin = constant, length = constant [, fill = constant]; [PAGE 1:] name 2 [(attr)] : origin = constant, length = constant [, fill = constant]; . . [PAGE n:] name n [(attr)] : origin = constant, length = constant [, fill = constant]; } 2.2 SECTIONS伪指令及其使用 SECTIONS伪指令功能如下: 说明如何将输入段组合成输出段。 在可执行程序中定义输出段。 指定输出段在存储器中存放的位置。 允许对输出段重新命名。 Example 5. Assigning Variables to Data Sections /******************************************************************** * Assign variables to data sections using the #pragma compiler statement * C and C++ use different forms of the #pragma statement * When compiling a C++ program, the compiler will define __cplusplus * automatically ********************************************************************/ // #ifdef __cplusplus #pragma DATA_SECTION(SciaRegsFile) #else #pragma DATA_SECTION(SciaRegs,SciaRegsFile); #endif volatile struct SCI_REGS SciaRegs; // #ifdef __cplusplus #pragma DATA_SECTION(ScibRegsFile) #
您可能关注的文档
- 高三历史综合练习十讲解.docx
- 第03章_机器人运动学讲解.ppt
- 高三生物基础知识大检查(310问)讲解.doc
- 高三数学双曲线复习讲解.doc
- 第2章牛顿定律讲解.ppt
- 第3讲_IO_中断_定时_串口讲解.ppt
- 第2章嵌入式操作系统中的基本概念讲解.ppt
- 高三数学一轮复习第7篇第2节空间几何体的表面积与体积课件理讲解.ppt
- 第2章审计主体讲解.ppt
- 高三数学一轮复习第9篇第2节用样本估计总体课件理讲解.ppt
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)