欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第5章 C语言调试环境和编程课件.ppt

    • 资源ID:1820318       资源大小:2.15MB        全文页数:115页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第5章 C语言调试环境和编程课件.ppt

    第5章,C语言调试环境和编程,5.1概述,F28x由一系列软件开发工具支持,包括C/C+编译器、汇编器、链接器和各种应用程序。,F28xC/ C+编译器:是一个功能齐全的优化编译器。,主要功能:把标准的ANSI C语言和C+语言程序转换成F28x的汇编语言代码。,5.1.1 编译器工具,编译器工具:包含一个完整的实时运行库。,库中包含具有下列功能的库函数:标准输入输出;字符串操作;动态存储空间分配;数据转换;时间记录;三角函数计算;指数计算和双曲函数计算等。,说明,信号处理函数没有包含在内,因为对于不同的目标系统会有很大的区别。该库经过扩充后,包含支持存储器远模式(far)访问的RTS函数。C+库包含了ANSI C子集和支持语言的必备组件。,5.1.2 编译器输出文件特性,汇编源文件输出:编译器生成可以查看的汇编语言文件,该文件是由C/C+源文件产生的。COFF目标文件:通用目标文件格式(COFF)允许在链接时定义自己的系统存储器映射,该优化功能能够把C/C+语言代码和数据链接到特定的存储区域。COFF也支持源程序级调试。初始化ROM中的代码的数据:对于单机嵌入式应用系统,能够链接ROM中所有选用代码和初始化数据,允许复位时运行C/C+代码。,5.1.3 编译器接口连接特性,1. 编译器集成调试程序(shell)编译器工具含有一个集成调试程序,用此程序一步就能完成程序的编译,汇编和连接。2. 灵活的汇编语言接口编译器具有明确的函数调用规范,可以很容易地编写相互调用的C/C+语言函数和汇编语言函数。,5.1.4 编译器操作特性,1. 集成预处理程序 C/C+预处理程序集成了语法分析程序。并能生成单片机预处理信息或预处理列表。2. 最优化编译器将C/C+源程序编译成高效、紧凑的代码。,5.1.5 编译器应用程序特性,1. 源文件交叉列表应用程序将C/C+源文件生成交叉列表,并生成汇编语言输出。2. 创建库应用程序(mk2000-v28)它一步完成从归档源程序库创建目标库。3. C+名称修复应用程序(dem2000)是一个调试助手,它可以把编译器的输出文件(例如汇编文件和链接错误信息)中发现的损坏名称恢复成C+源程序中定义的名称。,5.2 CCStudio 3.1的安装,将安装光盘装入CD-ROM驱动器中,执行安装程序。,在WindowsXP操作系统之下,安装CCS3.1版本的具体步骤。,5.2.1 CCStudio 3.1主程序安装,第1步:找CCS3.1 SETUP.EXE应用程序的图标。双击该图标。,第2步:点击NEXT接钮,第3步:再点击NEXT按钮,第4步:选择I ACCEPT后,再点击NEXT按钮,选择默认典型安装, “Typical install”图标,,第5步:再点击NEXT按钮,第6步:点击Install Now,第7步:安装完成,5.2.2仿真器驱动程序安装,在安装完CCS3.1之后,按以下步骤安装USB仿真器驱动。,第1步:找到USB仿真器驱动程序SEEDUSB2.0,双击SEEDUSB2.0,第2步:点击NEXT按钮,第3步:点击Browse修改安装路径,第4步:选择安装路径,点击OK,第5步:点击Yes,第6步:点击NEXT。,第7步:点击NEXT。,第8步:点击NEXT。,第9步:点击Finish,完成安装。,第10步:安装硬件仿真器与目标系统,硬件连接完毕后,出现硬件安装向导。,点击下一步按钮。,第11步:选择安装选项界面中第二项,点击下一步按钮。,第12步:选择“在搜索中包括这个位置”选项,点击“浏览”选择路径。,第13步:选择选择USB驱动程序所在位置所示,点击下一步按钮。,第14步:点击“仍然继续”。,第15步:点击完成。,第16步:重启计算机。,第17步:安装完毕,重启计算机后,打开控制面板查看系统中的设备管理器。,硬件连接成功。,第18步:找到厂家提供的usb20emurst.exe程序,本例为SEED-XDSUSB2.0 Win2000,XP USBdriver下的usb20emurst.exe,双击该文件 。,5.3 C/C+语言编译器集成调试环境介绍,在系统上安装好编译器CCS3.1调试环境软件后,在计算机桌面上将出现两个快捷图标:Setup CCStudio v3.1CCStudio 3.1,Setup CCStudio v3.1:对该编译器的运行环境进行配置的执行程序。CCStudio 3.1:程序仿真集成调试环境程序。,5.3.1 配置仿真集成调试环境,系统配置决定了编译器选用的仿真工具。在编译一个应用程序之前必须进行系统配置。编译器分为:系统配置;已安装的仿真器类型;设置命令。,修改系统配置的步骤:,第1步:双击“Setup CCStudio v3.1”图标,打开设置界面 。,第2步:选择系统配置:F2812 XDS510 Emulator),双击鼠标左键。,第3步:选中“F2812 XDS510 Emulator”,点击鼠标右键,点击 Properties,第4步:在连接名称和数据文件界面中点击图标处文件条,选中间一个选项。,第5步:点击 Browse,在图 drivers文件夹界面中选择CCStudio_v3.1目录下drivers文件夹中的Seedusb2.cfg文件,并打开。,第6步:点击NEXT按钮。,第7步:在通信端口特性界面中,可以选择I/O Port为0 x240(也可以设为340)。,第8步:点击Finish按钮,,第9步: 点击“Save & Quit”按钮,第10步:点击否,关闭CCS setup,不启动CCS3.1。,5.3.2 集成调试环境介绍,完成对系统的配置之后,给实验开发板供电,双击快捷键“CCStudio 3.1”,即可进入集成调试环境。,系统为未连接状态,集成调试环境的组成:,集成调试环境的标题栏(/F2812 XDS510 Emulator/CPU_1F28xxCode Composer Studio)。菜单栏(File、Edit、View)。工作窗口区(Files、Diassembly、CPU)系统连接状态。,点击菜单栏的Debug-Connect,将系统连接上 。,5.3.3 菜单及功能介绍,CCS3.1不能直接由汇编源代码或C语言源代码文件建立(Build)生成DSP可执行代码,必须使用项目(Project)来管理整个设计过程。项目文件保存在磁盘中后缀为.pjt文件。,项目菜单,(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:对编译器、汇编器、和链接器的参数进行配置。,可以配置寄存器优先调试,特定函数优先调试,或某个子程序优先调试等选项。,编译器设置对话框,观察菜单,(1)View/Disassembly:观察反汇编程序窗口。,当DSP可执行程序COFF文件载入目标系统后,CCS3.1将自动打开一个反汇编窗口,反汇编窗口根据存储器的内容显示反汇编指令和符号信息。,(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)。如果添加变量时,在“添加变量对话框”的文本栏中只是输入变量名,则在观察窗中只显示出该变量的地址;如果需要显示该变量的值,则需要在变量名前加*号。,如果在一个C源文件中定义变量标志,并且特别指定了调试信息标志(-g),则变量标志代表的是相应地址的值。变量的地址或值的显示默认格式为10进制,如果想改变显示格式,则在输入变量时,在其后面紧跟一个逗号和一个格式指示字母。,注意,变量显示常用格式,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:对仿真器进行复位。,5.3.4 工作窗口区介绍,常用工作窗口有:文件(Files)窗口;反汇编程序(Disassembly)窗口;CPU寄存器窗口;存储器(Memory)窗口;观察(Watch)窗口等。,文件窗口,文件(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.4 用C/C+编译器开发应用程序的步骤,1. 书写4种类型的文件,开发一个DSP的C语言应用程序,需要以下4种类型的文件:C/C+语言文件;汇编语言文件;头文件;命令文件。,注意,4种类型的文件必须存储在同一个文件夹中。还需要把一个“rts2800 . lib”的库文件复制到该目录中。在默认情况下, rts2800 . lib文件可以在目录“C:CCStudio_v3.1C2000cgtoolslib”中找到。,2. 建立一个应用项目,安装好CCStudio_v3.1仿真调试软件之后,用户将调试的项目放在安装目录之下的一个文件夹中。文件夹C:CCStudio_v3.1MyProjects。,一个项目的信息存储在一个项目文件中(*.pjt)。当项目中建立多个文件时,每个文件名都是必须是唯一的。,(1)选择菜单命令“ProjectNew”,在弹出的文件选择对话框中,选择要保存项目文件的文件夹,输入项目文件名,再用“保存”退出。,注:由于不同项目使用的源文件以及C语言头文件不尽相同,所以最好每个项目选择一个文件夹,以便把不同的项目分开。,(2)将文件添加到该项目中,点击Project,选择Add Files to Project。将该项目中用到的(*.asm*,*.s*,*.cmd*,*.o*,*.lib等)文件添加到该项目中。,(3)检查源程序代码,(4)编译链接和调试程序,编译和运行程序步骤:,选择项目菜单项“Project”,。选择重建所有项“Rebuild All”或者单击工具 条按钮。CCS3.1就会重编译、汇编并且链接项目中所有的文件。,2) 默认的“. out”文件被内建到项目目录中的调试目录中。3) 选择“File”,选择“Load Program”。4) 选择“View”,选择“Mixed Source”。5) 选择“DebugGo Main”开始主函数里的执行。执行就暂停在主程序并用标识。6) 选择“DebugRun ”或者单击运行工具条按钮运行程序。7) 选择“DebugHalt”,退出正在运行的程序。8) 可以在GEL菜单下查看程序执行时寄存器的变化。,5.5 头文件和命令文件,5.5.1 头文件,头文件中定义:DSP系统用到的寄存器映射地址,用户用到的常量和用户自定义的寄存器,文件名的后缀为.H。,5.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;,命令文件常用的几种伪指令。,段:编译器产生几个可以重新分配的代码块和数据块。它可以以各种模式分配到存储器中以符合多种系统配置。,有两种基本的段类型:已初始化段和未初始化段。,已初始化段:包含数据表或可执行的代码。编译器产生以下已初始化段:.text,.cinit,.const,.econst,.pinit 和.switch。,.text包含所有可执行的代码和常量。.cinit 包含全局变量和静态变量的C初始化纪录。.pinit 包含全局构造器(C+)程序列表。.const 包含字符串常量和明确初始化了的全局和静态变量(由const限定了的)的初始化和说明。.econst 包含字符串常量和明确初始化了的全局和静态变量(由far const限定了的)的初始化和说明。.switch 包含转换语句声明的列表。,未初始化段:在存储器(通常是RAM)中保留了空间。这些段在目标文件中没有实际内容,仅仅保留存储空间而已。在程序运行时,创建和存储变量可以使用这些空间。编译器产生未被初始化段包括:.bss, ebss,.stack,.sysmem 和.esysmem。,.bss 为全局和静态变量保留的空间。在程序启动时,C引导程序将.cinit空间(可以在ROM中)中的数据复制出来并存储在.bss空间中。.ebss 为由far限定的全局和静态变量或者使用大存储器模式时的全局和静态变量保留的空间。在程序启动时,C引导程序将.cinit空间(可以在ROM中)中的数据复制出来并存储在.ebss空间中。.stack 为C系统堆栈保留的空间。这个存储区用于给函数传递变量和为局部变量分配空间。.sysmem 为动态存储分配保留的空间。保留的空间被宏函数所用。如没有使用宏函数,该空间大小保留为0。.esysmem 为动态存储分配保留空间。保留的空间被far宏函数所用。如没有使用far宏函数,该空间大小保留为0。,说明,链接器从不同的模块中取出每个段并将这些段用同一个名称联合起来产生输出段。全部的程序都是由这些输出段组成的。可以根据需要将这些输出段放置到地址空间的任何位置,以满足系统的要求。.text, .cinit和.switch段通常链接到ROM和RAM中,且必须链接到程序存储器中(page 0)。.const段也可以链接到ROM和RAM中,但必须在数据空间(page 1)。.bss/.ebss,.stack和.sysmem/.esysmem段必须链接到RAM中且必须在数据存储器中。,每个段所需要的存储器类型,MEMORY伪指令:用来标示实际存在目标系统中可以使用的存储器范围,每个存储器范围具有名字、起始地址和长度;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 x000020,CPU_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 ramfuncs : PRAMH0, PAGE = 0, TYPE = DSECT,/* 当只使用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 Sc

    注意事项

    本文(第5章 C语言调试环境和编程课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开