1 CCStudio 主程序安装主程序安装 第第1步:找步:找CCS SETUP.EXE应用程序的图标双应用程序的图标双击该图标击该图标第2步步:点击NEXT接钮 第3步步:选择I ACCEPT后,再点击NEXT按钮 第4步:选择默认典型安装,“Typical install”图标,选择安装路径后,点击Next,注意路径不能包含中文 第5步步:点击Install Now开始安装 安装结束后出现如下图的告警界面,提示要求安装Perl V5.8版本,不必担心,点击确定即可第7步步:安装完成 安装补丁版本 安装升级补丁包SR12_CCS_v3.3_SR_3.3.82.13.exe双击安装后,会出现以下界面,点击Next:出现如下图所示界面,选择 ActiveState Perl58,点击Next然后一路点击Next,直到开始安装安装补丁版本(2)安装浮点支持库setup_C28XFPU_CSP_v31.3.1207(3)安装烧写插件F2823x_RevA_CSP.exe(4)更新Code Gernerator,将C2000CodeGenerationTools51.1.1.exe安装在CCStudio_v3.3C2000cgtools目录下,安装过程中选择“Yes to all”全部覆盖。
覆盖结果可在component manager中选择“Build Tools”进行查看,覆盖成功应为“texas instruments c2000 code genertion tools”项前面打勾(5)安装仿真器USB驱动和仿真器驱动2让让CCS工作在软件仿真环境工作在软件仿真环境(Simulator)CCS可以工作在纯软件仿真环境中,就是由CCS在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序但一般软件无法构造DSP中的外设,所以软件仿真通常用于调试算法和进行效率分析等在使用软件仿真方式工作时,无需连接板卡和仿真器等硬件单击桌面上“Setup CCStudio v3.3”图标,进入 CCS设置窗口在设置界面的中间栏目中分别对Family和Platform项进行设置然后会在在设置栏的左侧出现添加的软件仿真平台,选择F2812 Device Simulator点击右键会出现如图所示对话框,可以设置配置文件选择CPU点击右键会出现如图所示对话框,可以设置GEL文件点击“Save&Quit”出现对话框后,选择YesCCS闯关小游戏 第一关 找到“Load Program”在那个菜单栏下,以及其快捷键是什么?第二关 新建一个工程是通过那个菜单栏中的那一项实现的?第三关 在调试中所用到的“Step Into、Step over、Run”的快捷键是什么?第四关 Watch Window在那个菜单栏下,对应着工具栏中的哪一个图标?第五关 打开提供的工程,回答以下问题:工程的后缀名是什么?工程中包含哪几类文件?如何编译工程,快捷键及工具栏图标是什么?第六关 加载编译生成的.out文件,回答以下问题:如何设置断点?设置断点后,点击Run(运行)结果如何?3 让让CCS工作在硬件仿真环境工作在硬件仿真环境(Emulator)先删除当前的系统设置先删除当前的系统设置选择硬件仿真F2812芯片驱动 找到开发板相关找到开发板相关F2812的配置文件,的配置文件,路径如下所示:路径如下所示:路径设置完之后,点击路径设置完之后,点击OK即可即可添加完成。
添加完成CCS已经被设置成Emulator的方式(用仿真器连接硬件板卡的方式),并且指定通过TDS510-USB2 仿真器连接EX-DSP-EXP III+试验箱4 集成调试环境介绍集成调试环境介绍完成对系统的配置之后,给实验开发板供电,双击完成对系统的配置之后,给实验开发板供电,双击快捷键快捷键“CCStudio 3.3”,即可进入集成调试环境即可进入集成调试环境系系统统为为未未连连接接状状态态 把CCS软件和F2812芯片连接在一起,然后才能对F2812 芯片进行控制确认CCS和F2812连接是否成功 注意:注意:在实验箱使用结束后,必须按照以下步骤进行操作:1 先断开链接 2 关闭CCS 3 关闭实验箱电源集成调试环境的组成:集成调试环境的组成:1.集成调试环境的标题栏(集成调试环境的标题栏(/F2812 XDS510 Emulator/CPU_1F28xxCode Composer Studio)2.菜单栏(菜单栏(File、Edit、View)3.工作窗口区(工作窗口区(Files、Diassembly、CPU)4.系统连接状态系统连接状态菜单及功能介绍菜单及功能介绍CCS3.3不能直接由汇编源代码或不能直接由汇编源代码或C语言源代码语言源代码文件建立(文件建立(Build)生成)生成DSP可执行代码,必须可执行代码,必须使用项目(使用项目(Project)来管理整个设计过程。
来管理整个设计过程项目文件保存在磁盘中后缀为项目文件保存在磁盘中后缀为.pjt文件1.项目菜单项目菜单(1)Project/New:新建一个项目,将该项目保存至新建项目文件夹里面新建一个项目,将该项目保存至新建项目文件夹里面2)Project/Open:打开一个已有的项目打开一个已有的项目3)Project/Add Files to Project:添加文件到该项目中添加文件到该项目中可以添加到项目中的文件的扩展名:可以添加到项目中的文件的扩展名:*.C:C源文件,项目管理对这一类文件进行编译和链源文件,项目管理对这一类文件进行编译和链接ASM:汇编源文件,项目管理对这一类文件进行汇汇编源文件,项目管理对这一类文件进行汇编和链接编和链接OBJ:目标文件,项目管理对这一类文件进行链接目标文件,项目管理对这一类文件进行链接LIB:库文件,项目管理对这一类文件进行链接库文件,项目管理对这一类文件进行链接CMD:链接命令文件,项目管理在链接各个文件时:链接命令文件,项目管理在链接各个文件时根据此文件分配系统程序空间、数据空间根据此文件分配系统程序空间、数据空间注意注意 对头文件和在程序中用包含文件(对头文件和在程序中用包含文件(include)引用的文件,项目管理程序会自动地加入引用的文件,项目管理程序会自动地加入到项目中。
到项目中项目管理不允许用户添入其它类型的文件项目管理不允许用户添入其它类型的文件4)Project/Save:保存一个已打开的项目保存一个已打开的项目5)Project/Close:关闭一个已打开的项目关闭一个已打开的项目6)Project/Add Files to Project:添加所有用到:添加所有用到的文件和所需的库文件到该项目中的文件和所需的库文件到该项目中7)Project/Compile Files:对项目中的:对项目中的C语言和汇语言和汇编语言源代码文件进行编译编语言源代码文件进行编译8)Project/Build:对项目进行编译、汇编和链接,:对项目进行编译、汇编和链接,生成可执行文件,执行文件的后缀为生成可执行文件,执行文件的后缀为.OUT对于以前编译过到目前为止还没有修改过的源文件对于以前编译过到目前为止还没有修改过的源文件不重新编译不重新编译9)Project/Rebuild All:对项目重新进行一次编:对项目重新进行一次编译、汇编和链接,生成可执行文件译、汇编和链接,生成可执行文件.OUT,不论是否,不论是否修改过都编译一次修改过都编译一次10)Project/Stop Build:停止对项目的编译、汇:停止对项目的编译、汇编和链接。
编和链接11)Project/Show Project Dependencies:显示该:显示该项目中所有用到的文件和所需的库文件项目中所有用到的文件和所需的库文件12)Project/Scan All File Dependencies:详细查:详细查看该项目中所有用到的文件和所需的库文件看该项目中所有用到的文件和所需的库文件13)Project/Recent Project Files:显示最近打开:显示最近打开过的项目过的项目14)Project/Build Options:对编译器、汇编器、:对编译器、汇编器、和链接器的参数进行配置和链接器的参数进行配置可以配置寄存器优先调试,特定函数优先调试,或可以配置寄存器优先调试,特定函数优先调试,或某个子程序优先调试等选项某个子程序优先调试等选项编编译译器器设设置置对对话话框框2.观察菜单观察菜单(1)View/Disassembly:观察反汇编程序窗口观察反汇编程序窗口当当DSP可执行程序可执行程序COFF文件载入目标系统后,文件载入目标系统后,CCS将自动打开一个反汇编窗口,反汇编窗口根据将自动打开一个反汇编窗口,反汇编窗口根据存储器的内容显示反汇编指令和符号信息。
存储器的内容显示反汇编指令和符号信息2)View/Memory:观察存储器窗口观察存储器窗口Address:输入需要观察的存储器的起始地址;:输入需要观察的存储器的起始地址;QValue):填):填0,出现的存储器窗口中的显示值,出现的存储器窗口中的显示值就是实际值;若填其它数,出现的存储器窗口中的就是实际值;若填其它数,出现的存储器窗口中的显示值不是实际值;显示值不是实际值;Format:下拉菜单中有不同的格式;:下拉菜单中有不同的格式;存储器的显示格式:存储器的显示格式:16进制、进制、2进制等进制等IEEE浮点格式显示时,则选中使用浮点格式显示时,则选中使用IEEE浮点格式浮点格式“Use IEEE Float”;Page:下拉菜单中,可以选择显示的存储器的类:下拉菜单中,可以选择显示的存储器的类型:如程序存储器(型:如程序存储器(Program)、数据存储器)、数据存储器(Data)和和I/O空间;空间;(3)View/Registers:包含:包含“CPU”、“Status”两两个选项,点击相应的选项可以观察调试过程中个选项,点击相应的选项可以观察调试过程中CPU寄存器和状态(寄存器和状态(Status)寄存器各个状态位的)寄存器各个状态位的变化情况。
变化情况4)View/Peripherals:点击可以观察调试过程中:点击可以观察调试过程中外设模块寄存器的变化情况外设模块寄存器的变化情况5)View/Mixed Source:选择此选项则能同时显:选择此选项则能同时显示示C语言代码及与之关联的反汇编代码(反汇编代语言代码及与之关联的反汇编代码(反汇编代码位于码位于C语言代码下方)语言代码下方)若需要取消此功能,只要再次点击此选项即可若需要取消此功能,只要再次点击此选项即可6)View/Watch Window:观察调试过程中的变:观察调试过程中的变量,量,C表达式的值,地址空间和寄存器的值表达式的值,地址空间和寄存器的值Watch Window:加入一个新的表达式:加入一个新的表达式:在观察窗中的名字(在观察窗中的名字(Name)中直接输入要观察的变量)中直接输入要观察的变量名,或者在程序窗口中选中要观察的变量名,然后点名,或者在程序窗口中选中要观察的变量名,然后点击右键,再点击加到观察窗(击右键,再点击加到观察窗(Add to Watch Window)即可删除一个表达式:删除一个表达式:用鼠标点击要删除的表达式,单击鼠标右键,在弹出用鼠标点击要删除的表达式,单击鼠标右键,在弹出的对话框中选择删除选择项(的对话框中选择删除选择项(Delete Selected Item(s)。
如果添加变量时,在如果添加变量时,在“添加变量对话框添加变量对话框”的文本栏中的文本栏中只是输入变量名,则在观察窗中只显示出该变量的地只是输入变量名,则在观察窗中只显示出该变量的地址;址;如果需要显示该变量的值,则需要在变量名前加如果需要显示该变量的值,则需要在变量名前加*号3.调试菜单调试菜单(1)Debug/Breakpoints:断点设置断点设置设置断点:设置断点:最简单的方法是用鼠标左键点击需要设置断点的程序最简单的方法是用鼠标左键点击需要设置断点的程序处,再点击鼠标右键,从弹出的对话框中选择处,再点击鼠标右键,从弹出的对话框中选择“Toggle breakpoint”即可;即可;去掉断点:去掉断点:用鼠标左键点击相应的断点处,再点击鼠标右键,从用鼠标左键点击相应的断点处,再点击鼠标右键,从弹出的对话框中再次选择弹出的对话框中再次选择“Toggle breakpoint”即可1)Debug/Probe Points:探测点设置探测点设置在设置探测点的地方,可以将主机文件的数据读到在设置探测点的地方,可以将主机文件的数据读到DSP目标系统的存储器,或将目标系统的存储器,或将DSP目标系统存储器的目标系统存储器的数据写入主机的文件中。
数据写入主机的文件中2)Debug/Step Into(快捷键为快捷键为F8):单步执行单步执行单步执行程序,如果运行到调用函数处,则跳入调用单步执行程序,如果运行到调用函数处,则跳入调用的程序继续单步执行的程序继续单步执行3)Debug/Step Over(快捷键为快捷键为F10):单步执行单步执行单步执行程序,但与单步执行程序,但与Step Into不同的是,不进入调用不同的是,不进入调用的程序(子程序、中断服务程序),即该命令一步执的程序(子程序、中断服务程序),即该命令一步执行完被调用的程序行完被调用的程序4)Debug/Step Out:跳出子程序跳出子程序当使用当使用Step Into或或Step Over单步执行指令时,如果程单步执行指令时,如果程序运行到一个子程序中,执行该命令将使程序执行完序运行到一个子程序中,执行该命令将使程序执行完函数或子程序后,回到调用的地方函数或子程序后,回到调用的地方5)Debug/Run(快捷键为快捷键为F5):执行程序到断点、:执行程序到断点、探测点或用户中断(按系统机键盘上的探测点或用户中断(按系统机键盘上的ESC键中断)键中断)6)Debug/Halt(快捷键为快捷键为Shift+F5):当执行:当执行Run时,用时,用Halt来暂停程序的执行。
来暂停程序的执行7)Debug/Reset CPU:对:对DSP进行复位也复位进行复位也复位DSP的目标系统,停止程序的执行,初始化所有的寄的目标系统,停止程序的执行,初始化所有的寄存器8)Debug/Restart:将程序指针(:将程序指针(PC)指向程序的)指向程序的起始地址起始地址9)Debug/Reset Emulator:对仿真器进行复位对仿真器进行复位4 工作窗口区介绍工作窗口区介绍常用工作窗口有:常用工作窗口有:1.文件(文件(Files)窗口;)窗口;2.反汇编程序(反汇编程序(Disassembly)窗口;)窗口;3.CPU寄存器窗口;寄存器窗口;4.存储器(存储器(Memory)窗口;)窗口;5.观察(观察(Watch)窗口等1.文件窗口文件窗口 文件(文件(Files)窗口包括:当前系统用到的)窗口包括:当前系统用到的GEL文文件和项目件和项目GEL文件:包括缺省的文件:包括缺省的f2812.gel文件项目:包括用户用到的头文件、用项目:包括用户用到的头文件、用include定义的定义的引用文件和用户建立或添加的引用文件和用户建立或添加的C源文件源文件*.C、汇编、汇编源文件源文件*.ASM、目标文件、目标文件*.OBJ、库文件、库文件*.LIB和和链接命令文件链接命令文件*.CMD。
2.反汇编程序窗口反汇编程序窗口 反汇编程序(反汇编程序(Disassembly)窗口:用来显示程序)窗口:用来显示程序的反汇编代码和程序存储器的内容的反汇编代码和程序存储器的内容在这个窗口中,用一反显高亮条来表示当前程序在这个窗口中,用一反显高亮条来表示当前程序指针可用鼠标点击汇编语句的方法来设置断点,再点可用鼠标点击汇编语句的方法来设置断点,再点击一次,则取消断点击一次,则取消断点3.CPU寄存器窗口寄存器窗口CPU寄存器窗口:显示在程序调试过程中寄存器窗口:显示在程序调试过程中CPU寄存器(程序指针寄存器(程序指针PC、累加器、累加器ACC、状态寄存、状态寄存器器ST0和和ST1、重复计数器、重复计数器RTC、辅助寄存器、辅助寄存器XAR0XAR7、中断使能寄存器、中断使能寄存器IER和中断标和中断标志寄存器志寄存器IFR等)的内容等)的内容若要改变寄存器的内容,用鼠标点击要改变的寄若要改变寄存器的内容,用鼠标点击要改变的寄存器,输入值后回车即可存器,输入值后回车即可4.状态寄存器窗口状态寄存器窗口状态寄存器窗口:显示状态寄存器中的各个状态状态寄存器窗口:显示状态寄存器中的各个状态位:位:SXM、OVM、TC、C、Z、N、V、PM、OVC、INTM、DBGM、PAGE0、VMAP、SPA、LOOP、EALLOW、IDLESTAT、AMODE、OBJMODE、CNT、M0M1MAP、XF、ARP的状的状态。
态若要改变状态位内容,用鼠标点击需改变的状态若要改变状态位内容,用鼠标点击需改变的状态位,输入值后回车即可位,输入值后回车即可5.存储器窗口存储器窗口存储器(存储器(Memory)窗口:显示存储器的内容窗口:显示存储器的内容存储器可为程序存储器、数据存储器和存储器可为程序存储器、数据存储器和I/O空间若要改变存储器内容,用鼠标点击需改变的存储若要改变存储器内容,用鼠标点击需改变的存储器地址,输入值后回车即可器地址,输入值后回车即可注意:某些存储器的内容是不能改变注意:某些存储器的内容是不能改变6.观察窗口观察窗口 观察(观察(Watch)窗口:显示所选择的变量、寄存器)窗口:显示所选择的变量、寄存器和存储器的内容和存储器的内容7.建立状态窗口建立状态窗口建立状态(建立状态(Build)窗口:显示一些状态信息,如)窗口:显示一些状态信息,如果在编译、汇编和连接过程中发现错误,则该窗口果在编译、汇编和连接过程中发现错误,则该窗口显示出错误类型和错误的位置显示出错误类型和错误的位置用户可根据此信息对发生错误的地方进行修改点用户可根据此信息对发生错误的地方进行修改点击错误信息处,光标就跳到程序中出错地方的对应击错误信息处,光标就跳到程序中出错地方的对应位置。
位置5 用用C编译器开发应用程序编译器开发应用程序的步骤的步骤1.书写书写4种类型的文件种类型的文件开发一个开发一个DSP的的C语言应用程序,需要以下语言应用程序,需要以下4种类型种类型的文件:的文件:C/C+语言文件;语言文件;汇编语言文件;汇编语言文件;头文件;头文件;命令文件命令文件注意注意 4种类型的文件必须存储在同一个文件夹中种类型的文件必须存储在同一个文件夹中还需要把一个还需要把一个“rts2800.lib”的库文件复制到该的库文件复制到该目录中在默认情况下,在默认情况下,rts2800.lib文件可以在目录文件可以在目录“C:CCStudio_v3.1C2000cgtoolslib”中找到5.5 头文件和命令文件头文件和命令文件5.5.1 头文件头文件头文件中定义:头文件中定义:DSP系统用到的寄存器映射地址,系统用到的寄存器映射地址,用户用到的常量和用户自定义的寄存器,文件名用户用到的常量和用户自定义的寄存器,文件名的后缀为的后缀为.H5.5.2 命令文件命令文件.CMD命令文件:指定存储区域的分配命令文件:指定存储区域的分配文件扩展名为文件扩展名为.CMD文件文件DSP28_Adc.h DSP28_Adc.h#ifndef DSP28_ADC_H#define DSP28_ADC_H/ADC 专用寄存器的位定义:专用寄存器的位定义:struct ADCTRL1_BITS /位描述位描述 Uint16 rsvd1:4;/位位 30 保留位保留位 Uint16 SEQ_CASC:1;/位位 4 级连排序器工作模式选择位级连排序器工作模式选择位 Uint16 rsvd2:1;/位位 5 保留位保留位 Uint16 CONT_RUN:1;/位位 6 连续转换位连续转换位 Uint16 CPS:1;/位位 7 模数转换时钟预分频位模数转换时钟预分频位 Uint16 ACQ_PS:4;/位位 118 采样时间选择位采样时间选择位 Uint16 SUSMOD:2;/位位 1312 仿真悬挂工作模式选择位仿真悬挂工作模式选择位 Uint16 RESET:1;/位位 14 模数转换复位位模数转换复位位 Uint16 rsvd3:1;/位位 15 保留位保留位;union ADCTRL1_REG Uint16 all;struct ADCTRL1_BITS bit;struct ADCTRL2_BITS /位描述位描述 Uint16 EVB_SOC_SEQ2:1;/位位 0 事件管理事件管理EVB对对SEQ2产生产生SOC的屏蔽位的屏蔽位 Uint16 rsvd1:1;/位位 1 保留位保留位 Uint16 INT_MOD_SEQ2:1;/位位 2 SEQ2中断模式位中断模式位 Uint16 INT_ENA_SEQ2:1;/位位 3 SEQ2 中断使能位中断使能位 Uint16 rsvd2:1;/位位 4 保留位保留位 Uint16 SOC_SEQ2:1;/位位 5 启动启动SEQ2的转换位的转换位 Uint16 RST_SEQ2:1;/位位 6 复位复位SEQ2 Uint16 EXT_SOC_SEQ1:1;/位位 7 外部信号对外部信号对SEQ1的启动转换位的启动转换位 Uint16 EVA_SOC_SEQ1:1;/位位 8 事件管理事件管理EVA对对SEQ1产生产生SOC的屏蔽位的屏蔽位 Uint16 rsvd3:1;/位位 9 保留位保留位 Uint16 INT_MOD_SEQ1:1;/位位 10 SEQ1 中断模式位中断模式位 Uint16 INT_ENA_SEQ1:1;/位位 11 SEQ1 中断使能位中断使能位 Uint16 rsvd4:1;/位位 12 保留位保留位 Uint16 SOC_SEQ1:1;/位位 13 启动启动SEQ1的转换位的转换位 Uint16 RST_SEQ1:1;/位位 14 复位复位SEQ 1 Uint16 EVB_SOC_SEQ:1;/位位 15 EVB SOC 使能位使能位;union ADCTRL2_REG Uint16 all;struct ADCTRL2_BITS bit;struct ADCCASEQSR_BITS /位描述位描述 Uint16 SEQ1_STATE:4;/位位30 SEQ1状状态态 Uint16 SEQ2_STATE:3;/位位62 SEQ2状状态态 Uint16 rsvd1:1;/位位7 保留位保留位 Uint16 SEQ_CNTR:4;/位位118 排序计数排序计数器状态位器状态位 Uint16 rsvd2:4;/位位1512 保留位保留位 ;union ADCCASEQSR_REG Uint16 all;struct ADCCASEQSR_BITS bit;struct ADCMAXCONV_BITS Uint16 MAX_CONV:7;/位位60 最大转化通道数位最大转化通道数位 Uint16 rsvd1:9;/位位157 保留位保留位;union ADCMAXCONV_REG Uint16 all;struct ADCMAXCONV_BITS bit;struct ADCCHSELSEQ1_BITS Uint16 CONV00:4;Uint16 CONV01:4;Uint16 CONV02:4;Uint16 CONV03:4;union ADCCHSELSEQ1_REG Uint16 all;struct ADCCHSELSEQ1_BITS bit;struct ADCCHSELSEQ2_BITS Uint16 CONV04:4;Uint16 CONV05:4;Uint16 CONV06:4;Uint16 CONV07:4;union ADCCHSELSEQ2_REG Uint16 all;struct ADCCHSELSEQ2_BITS bit;struct ADCCHSELSEQ3_BITS Uint16 CONV08:4;Uint16 CONV09:4;Uint16 CONV10:4;Uint16 CONV11:4;union ADCCHSELSEQ3_REG Uint16 all;struct ADCCHSELSEQ3_BITS bit;struct ADCCHSELSEQ4_BITS Uint16 CONV12:4;Uint16 CONV13:4;Uint16 CONV14:4;Uint16 CONV15:4;union ADCCHSELSEQ4_REG Uint16 all;struct ADCCHSELSEQ4_BITS bit;struct ADCTRL3_BITS Uint16 SMODE_SEL:1;/位位 0 采样模式选择位采样模式选择位 Uint16 ADCCLKPS:4;/位位 41 模数转换时钟分频器模数转换时钟分频器 Uint16 ADCPWDN:1;/位位 5 模数转换掉电位模数转换掉电位 Uint16 ADCBGRFDN:2;/位位 76 模数转换内部参考电模数转换内部参考电压源电源选择位压源电源选择位 Uint16 rsvd1:8;/位位 158 保留位保留位;union ADCTRL3_REG Uint16 all;struct ADCTRL3_BITS bit;struct ADCST_BITS Uint16 INT_SEQ1:1;/位位 0 SEQ1 中断标志中断标志 Uint16 INT_SEQ2:1;/位位 1 SEQ2 中断标志中断标志 Uint16 SEQ1_BSY:1;/位位 2 SEQ1 忙状态位忙状态位 Uint16 SEQ2_BSY:1;/位位 3 SEQ2 忙状态位忙状态位s Uint16 INT_SEQ1_CLR:1;/位位 4 SEQ1 中断清零位中断清零位 Uint16 INT_SEQ2_CLR:1;/位位 5 SEQ2中断清零位中断清零位 Uint16 EOS_BUF1:1;/位位 6 排序缓冲器排序缓冲器1的的末尾的的末尾 Uint16 EOS_BUF2:1;/位位 7 排序缓冲器排序缓冲器1的的末尾的的末尾 Uint16 rsvd1:8;/位位 158 保留位保留位;union ADCST_REG Uint16 all;struct ADCST_BITS bit;struct ADC_REGS union ADCTRL1_REG ADCTRL1;/模数转换控制寄存器模数转换控制寄存器1 union ADCTRL2_REG ADCTRL2;/模数转换控制寄存器模数转换控制寄存器2 union ADCMAXCONV_REG ADCMAXCONV;/最大转换通道树寄存器最大转换通道树寄存器 union ADCCHSELSEQ1_REG ADCCHSELSEQ1;/通道选择排序控制寄存器通道选择排序控制寄存器l union ADCCHSELSEQ2_REG ADCCHSELSEQ2;union ADCCHSELSEQ3_REG ADCCHSELSEQ3;union ADCCHSELSEQ4_REG ADCCHSELSEQ4;union ADCCASEQSR_REG ADCASEQSR;/自动排序状态寄存器自动排序状态寄存器 Uint16 ADCRESULT0;/转换结果缓冲寄存器转换结果缓冲寄存器 015 Uint16 ADCRESULT1;Uint16 ADCRESULT2;Uint16 ADCRESULT3;Uint16 ADCRESULT4;Uint16 ADCRESULT5;Uint16 ADCRESULT6;Uint16 ADCRESULT7;Uint16 ADCRESULT8;Uint16 ADCRESULT9;Uint16 ADCRESULT10;Uint16 ADCRESULT11;Uint16 ADCRESULT12;Uint16 ADCRESULT13;Uint16 ADCRESULT14;Uint16 ADCRESULT15;union ADCTRL3_REG ADCTRL3;/模数转换控制寄存器模数转换控制寄存器3 union ADCST_REG ADCST;/模数转换状态寄存器模数转换状态寄存器;/模数转换外部参数函数声明模数转换外部参数函数声明extern volatile struct ADC_REGS AdcRegs;#endif /DSP28_ADC_H 定义结束定义结束说明说明上述形式定义后,如果要对上述形式定义后,如果要对ADCTRL1付值付值value,则,则表达式为:表达式为:AdcRegs.ADCTRL1.allvalue;如果要对如果要对ADCTRL1的某一位进行操作,如对的某一位进行操作,如对ADCTRL1的复位位写入的复位位写入1,使,使ADC模块复位,则表模块复位,则表达式为:达式为:AdcRegs.ADCTRL1.bit.RESET1;1.命令文件常用的几种伪指令。
命令文件常用的几种伪指令段:编译器产生几个可以重新分配的代码块和数据段:编译器产生几个可以重新分配的代码块和数据块它可以以各种模式分配到存储器中以符合多种块它可以以各种模式分配到存储器中以符合多种系统配置系统配置有两种基本的段类型:已初始化段和未初始化段有两种基本的段类型:已初始化段和未初始化段已初始化段:包含数据表或可执行的代码已初始化段:包含数据表或可执行的代码编译器产生以下已初始化段:编译器产生以下已初始化段:.text,.cinit,.const,.econst,.pinit 和和.switchtext包含所有可执行的代码和常量包含所有可执行的代码和常量cinit 包含全局变量和静态变量的包含全局变量和静态变量的C初始化纪初始化纪录pinit 包含全局构造器(包含全局构造器(C+)程序列表程序列表const 包含字符串常量和明确初始化了的全局包含字符串常量和明确初始化了的全局和静态变量(由和静态变量(由const限定了的)的初始化和说明限定了的)的初始化和说明econst 包含字符串常量和明确初始化了的全局包含字符串常量和明确初始化了的全局和静态变量(由和静态变量(由far const限定了的)的初始化和说限定了的)的初始化和说明。
明switch 包含转换语句声明的列表包含转换语句声明的列表未初始化段:在存储器(通常是未初始化段:在存储器(通常是RAM)中保留了)中保留了空间这些段在目标文件中没有实际内容,仅仅空间这些段在目标文件中没有实际内容,仅仅保留存储空间而已保留存储空间而已在程序运行时,创建和存储变量可以使用这些空在程序运行时,创建和存储变量可以使用这些空间编译器产生未被初始化段包括:编译器产生未被初始化段包括:.bss,ebss,.stack,.sysmem 和和.esysmembss 为全局和静态变量保留的空间在程序为全局和静态变量保留的空间在程序启动时,启动时,C引导程序将引导程序将.cinit空间(可以在空间(可以在ROM中)中)中的数据复制出来并存储在中的数据复制出来并存储在.bss空间中ebss 为由为由far限定的全局和静态变量或者使用限定的全局和静态变量或者使用大存储器模式时的全局和静态变量保留的空间在大存储器模式时的全局和静态变量保留的空间在程序启动时,程序启动时,C引导程序将引导程序将.cinit空间(可以在空间(可以在ROM中)中的数据复制出来并存储在中)中的数据复制出来并存储在.ebss空间中。
空间中stack 为为C系统堆栈保留的空间这个存储区用系统堆栈保留的空间这个存储区用于给函数传递变量和为局部变量分配空间于给函数传递变量和为局部变量分配空间sysmem 为动态存储分配保留的空间保留的空间为动态存储分配保留的空间保留的空间被宏函数所用如没有使用宏函数,该空间大小保被宏函数所用如没有使用宏函数,该空间大小保留为留为0esysmem 为动态存储分配保留空间保留的空间为动态存储分配保留空间保留的空间被被far宏函数所用如没有使用宏函数所用如没有使用far宏函数,该空间大宏函数,该空间大小保留为小保留为0说明说明 链接器从不同的模块中取出每个段并将这些段用同一链接器从不同的模块中取出每个段并将这些段用同一个名称联合起来产生输出段个名称联合起来产生输出段全部的程序都是由这些输出段组成的全部的程序都是由这些输出段组成的可以根据需要将这些输出段放置到地址空间的任何位可以根据需要将这些输出段放置到地址空间的任何位置,以满足系统的要求置,以满足系统的要求text,.cinit和和.switch段通常链接到段通常链接到ROM和和RAM中,中,且必须链接到程序存储器中(且必须链接到程序存储器中(page 0)。
const段也可以链接到段也可以链接到ROM和和RAM中,但必须在数中,但必须在数据空间(据空间(page 1)bss/.ebss,.stack和和.sysmem/.esysmem段必须链接到段必须链接到RAM中且必须在数据存储器中中且必须在数据存储器中每个段所需要的存储器类型每个段所需要的存储器类型 段段存储器类型存储器类型页页.textROM or RAM0.cinitROM or RAM0.pinitROM or RAM0.switchROM or RAM0,1.constROM or RAM1.econstROM or RAM1.bssRAM1.ebssRAM1.stackRAM1.sysmemRAM1.esysmemRAM1MEMORY伪指令:用来标示实际存在目标系统伪指令:用来标示实际存在目标系统中可以使用的存储器范围,每个存储器范围具有中可以使用的存储器范围,每个存储器范围具有名字、起始地址和长度;名字、起始地址和长度;SECTIONS伪指令:描述输入段是如何组合到输伪指令:描述输入段是如何组合到输出段内的出段内的命令文件可以把程序下载到命令文件可以把程序下载到F28x片内片内RAM中。
中/文件文件:EzDSP_RAM_lnk.cmd/标题:标题:该命令文件假设用户在导入时跳到该命令文件假设用户在导入时跳到H0模式模式MEMORYPAGE 0:/*SARAM H0 在在PAGE 0 和和PAGE 1之间分配之间分配*/PRAMH0 :origin=0 x3F8000,length=0 x001000 /*仅当从仅当从XINTF Zone 7导入时,该存储模块与复位矢量一起下载;否则复位矢量导入时,该存储模块与复位矢量一起下载;否则复位矢量从导入从导入ROM获取查看以下的部分获取查看以下的部分*/RESET :origin=0 x3FFFC0,length=0 x000002 PAGE 1:/*SARAM */RAMM0 :origin=0 x000000,length=0 x000400 RAMM1 :origin=0 x000400,length=0 x000400 /*外设模块组外设模块组0:*/DEV_EMU :origin=0 x000880,length=0 x000180 FLASH_REGS:origin=0 x000A80,length=0 x000060 CSM :origin=0 x000AE0,length=0 x000010 XINTF :origin=0 x000B20,length=0 x000020CPU_TIMER0:origin=0 x000C00,length=0 x000008 CPU_TIMER1:origin=0 x000C08,length=0 x000008 CPU_TIMER2:origin=0 x000C10,length=0 x000008 PIE_CTRL :origin=0 x000CE0,length=0 x000020 PIE_VECT :origin=0 x000D00,length=0 x000100 /*外设模块组外设模块组1:*/ECAN_A :origin=0 x006000,length=0 x000100 ECAN_AMBOX:origin=0 x006100,length=0 x000100 /*外设模块组外设模块组2:*/SYSTEM :origin=0 x007010,length=0 x000020 SPI_A :origin=0 x007040,length=0 x000010 SCI_A :origin=0 x007050,length=0 x000010 XINTRUPT :origin=0 x007070,length=0 x000010 GPIOMUX :origin=0 x0070C0,length=0 x000020 GPIODAT :origin=0 x0070E0,length=0 x000020 ADC :origin=0 x007100,length=0 x000020 EV_A :origin=0 x007400,length=0 x000040 EV_B :origin=0 x007500,length=0 x000040 SPI_B :origin=0 x007740,length=0 x000010 SCI_B :origin=0 x007750,length=0 x000010 MCBSP_A :origin=0 x007800,length=0 x000040 /*CSM端口令位置端口令位置*/CSM_PWL :origin=0 x3F7FF8,length=0 x000008 /*SARAM H0在在PAGE 0和和PAGE 1之间分配之间分配*/DRAMH0 :origin=0 x3f9000,length=0 x001000 SECTIONS /*分配程序空间分配程序空间,导入到导入到H0模式的设置:模式的设置:代码起代码起始区间始区间(可以在可以在CodeStartBranch.asm中找到中找到)重新重新执行到用户的起始代码位置。
在执行到用户的起始代码位置在H0起始时放置该起始时放置该部分或部分或.text部分部分*/codestart :PRAMH0,PAGE=0 .text :PRAMH0,PAGE=0 .cinit :PRAMH0,PAGE=0 /*当只使用当只使用RAM时不使用分配数据空间时不使用分配数据空间*/.stack :RAMM1,PAGE=1 .bss :DRAMH0,PAGE=1 .ebss :DRAMH0,PAGE=1 .const :DRAMH0,PAGE=1 .econst :DRAMH0,PAGE=1 .sysmem :DRAMH0,PAGE=1/*.reset 表示表示C代码的起始代码的起始_c_int00,当使用导入当使用导入ROM时,不需使用该部分时,不需使用该部分,因此,默认类型被设置为因此,默认类型被设置为DESECT*/.reset :RESET,PAGE=0,TYPE=DSECT /*分配外设模块组分配外设模块组0 寄存器结构:寄存器结构:*/DevEmuRegsFile :DEV_EMU,PAGE=1 FlashRegsFile :FLASH_REGS,PAGE=1 CsmRegsFile :CSM,PAGE=1 XintfRegsFile :XINTF,PAGE=1 CpuTimer0RegsFile:CPU_TIMER0,PAGE=1/*CPU_TIMER1和和 CPU_TIMER2 保留,用于保留,用于DSP BIOS和和RTOS。
因此在该例程中不分配该段因此在该例程中不分配该段 CpuTimer1RegsFile:CPU_TIMER1,PAGE=1 CpuTimer2RegsFile:CPU_TIMER2,PAGE=1 */PieCtrlRegsFile :PIE_CTRL,PAGE=1 PieVectTable :PIE_VECT,PAGE=1/*分配外设模块组分配外设模块组2寄存器结构:寄存器结构:*/ECanaRegsFile :ECAN_A,PAGE=1 ECanaMboxesFile :ECAN_AMBOX PAGE=1 /*分配外设模块组分配外设模块组1寄存器结构:寄存器结构:*/SysCtrlRegsFile :SYSTEM,PAGE=1 SpiaRegsFile :SPI_A,PAGE=1 SciaRegsFile :SCI_A,PAGE=1 XIntruptRegsFile:XINTRUPT,PAGE=1 GpioMuxRegsFile :GPIOMUX,PAGE=1 GpioDataRegsFile:GPIODAT PAGE=1 AdcRegsFile :ADC,PAGE=1 EvaRegsFile :EV_A,PAGE=1 EvbRegsFile :EV_B,PAGE=1 ScibRegsFile :SCI_B,PAGE=1 McbspaRegsFile :MCBSP_A,PAGE=1 /*CSM端口令位置端口令位置*/CsmPwlFile :CSM_PWL,PAGE=1。