版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DSP器件及应用,佘勇,成都信息工程学院新技术研究所,汇编语言伪指令和目标代码的生成,7.1.1 宏汇编语言伪指令,汇编伪指令:用于预设变量、参数,控制程序汇编过程,简化程序编辑,提高程序的可读性。 只在程序汇编过程中有效,并不能实际执行。 由汇编器进行控制和计算,1、段定义伪指令,初始化段: .text .data .sect “section name” .asect “section name” , address 非初始化段 .bss symbol, size in words blocking flag Symbol .usect “ section name”, size in w
2、ords, blocking flag,.text,.text 定义代码段,用于代码段开始前,给汇编器和链接器以说明 如果还没有代码汇编到.text段,SPC为0,如果原来已有代码汇编到.text段,SPC重载原来的值 举例: .text Adcproc:clrcsxm ;从此段开始处放置一个子程序Adcprog,.data,.data 定义数据段,用于数据段开始前,给汇编器和链接器以说明 .data段可以包含代码,但通常是初始化的数据变量 举例: .data .word0abcdh, 01234h, 9876 ;从此段开始处定义三个常数,.sect,.sect ”section name”
3、定义初始化了的命名段,其后的源码将汇编到此段以便以后以此名调用 .sect ”var_defs” .word 17, 18 ;Start assembling into a named, initialized ;section, var_defs,.asect,.asect “section name”,地址 指定有名初始化段地址,为绝对地址 代码/数据段均可 举例: .asect“dataout”, 02000h,.bss,.bss symbol, size in WORDS , blocking flag 定义非初始化变量空间,为未初始化变量保留若干字空间 symbol指向保留空间的第一
4、个字,可作为变量名 blocking flag非0,则保留空间将不会跨越页边界 举例: .bss sym, 19 ; Reserve space in .bss .word 15, 16,.usect,Symbol .usect ”section name”, size in words, blocking flag 定义非初始化有名变量空间,为该名称的段保留若干字空间 举例: usym.usect ”xy”, 20 ; Reserve space in xy,举例,2、初始化常数伪指令,在当前段保留若干位空间: .bes size in bits 或 .space size in bits
5、在当前段连续定义一个或多个字节: .byte value 1 , . , value n ; 将数值置入当前字的特定数量的位中: .field value , size in bits 定义32bit,IEEE单精度浮点常数注意不要越过页界 .float value ;或 .bfloat value,定义一个或多个32bit值注意不要越过页界: .long value 1 , . , value n 或 .blong value 1 , . , value n 定义一个或多个16-bit整数: .int value 1 , . , value n .word value 1 , . , val
6、ue n 定义一个或多个字符串: .string ”string1”, . , ”string n”,.space macro call addx*+; macro call,MIN.macroa,b lacca subb bcndm1?, NC laccb bm2? * 不能用 .mexit 伪指令代替 m1?lacc a m2? .endm,Operators in Expressions,在C2xx DSP中,当在表达式中为了便于表达算式含义或避免运算次序混淆时,可使用“( )”,但不能使用“ ”和“ ”,Expressions 1,Expressions 2,表达式举例,8/(4/2)
7、 = 4, but 8/4/2 = 1 8 + 4/2 = 10 (4/2 is evaluated first) 8/4*2 = 4, but 8/(4*2) = 1 xyz.equ1234 W.equ 5678 .text larar2, #w/xyz,7.1.2 链接控制命令文件-CMD文件,可执行目标文件的生成,1、编辑源程序文件 *.ASM *.C *.LIB 2、编译成目标文件 *.OBJ 3、生成可执行文件 *.OBJ、*.LIB、*.CMD *.OUT,目标代码的存储器定位,目标程序代码和数据在存储器中的位置定位 绝对定位:在源程序中直接访问固定物理地址 链接时可重定位:在链接
8、过程中确定代码和数据在存储器中的位置 代码和数据在存储器中的定位以段(section)为定位基本单元 段定位受控于链接命令控制文件(cmd文件),常见的段,ASM语言 初始化段:.text、.data 未初始化段:.bss 编程者命名段 C语言 初始化段:.text、.cinit、.switch、.const 未初始化段:.bss、.sack、.system、 编程者命名,Cmd文件组成,链接参数列表 -o xxx.out -m xxx.map 输入文件(OBJ、LIB)列表 Xxx.obj Aaa.obj 存储器资源 MEMORY 段定位 SECTIONS ,Syntax: MEMORY d
9、irective,决定用于安置输出模块的存储器,格式如下: MEMORY PAGE 0 : name 1 (attr) : origin = constant ,length = constant; PAGE n : name n (attr) : origin = constant ,length = constant; ,attr,R specifies that the memory can be read. W specifies that the memory can be written to. X specifies that the memory can contain exe
10、cutable code. I specifies that the memory can be initialized.,MEMORY Directive举例,SECTIONS,输入模块如何组合成输出模块 定义用于生成可执行程序的输出模块 指定输出模块在可执行程序中的定位(相互关系和整个存储器定位) 允许输出块重命名,语法,SECTIONS name : property, property, property,. name : property, property, property,. name : property, property, property,. ,Possible pro
11、perties,Load allocation, which defines where in memory the section is to be loaded Syntax: load = allocation or allocation or allocation,Run allocation,which defines where in memory the section is to be run Syntax: run = allocation orrun allocation,Input sections,which defines the input sections tha
12、t constitute the output section Syntax: input_sections ,cmd文件格式,/* Title: c203.cmd */ /* Generic command file for linking */ /* TMS320C2xx assembler files */ /* input files: *.obj files */ /* -o output files: *.out file */ /* -m Map files: *.map file (optional) */ /* TMS320C2xx architecture */ /* de
13、claration for linker use */,MEMORY PAGE 0: /* PM Program memory */ EX1_PM: ORIGIN=0H, LENGTH=0FEFFH /* External program RAM */ B0_PM:ORIGIN=0FF00H, LENGTH=0100H /* BLOCK MAP IN CNF=1 */,PAGE 1: /* DM Data memory */ REGS: ORIGIN=0H,LENGTH=60H/* MM REGS */ BLK_B2:ORIGIN=60H,LENGTH=20H /* B2 */ BLK_B0:
14、ORIGIN=200H,LENGTH=100H /* B0 */ BLK_B1:ORIGIN=300H,LENGTH=100H /* B1 */ EX1_DM:ORIGIN=0800H,LENGTH=7800H /* EXTERNAL DATA RAM */ GM_DM: ORIGIN=8000H,LENGTH=8000H /* External DATA RAM AS GLOBAL*/,PAGE 2: /* I/O SPACE */ IO_IN: ORIGIN=0FF00H, LENGTH=0FFH /* I/O MAPPED PERIPHERAL */ IO_EX: ORIGIN=0000
15、H, LENGTH=0FF00H /* EXT. I/O MAPPED PERIPHERAL */ ,SECTIONS/* Linker directive to specify */ /* section placement in the memory map */ vectors : EX1_PM PAGE 0 /* Vectors at 0 x0000 */ .text : EX1_PM PAGE 0 /* .text placed after vectors */ .bss : EX1_DM PAGE 1 /* .bss in 0 x800 in DM */ new : BLK_B2
16、PAGE 1 /* new in 0 x0060 in DM */ .data : 0 x0370 PAGE 1 /* .data at 0 x0370 in DM */ ,第5章 C2000 DSP开发环境,软件开发工具 命令格式的代码生成:汇编、编译、链接、 代码格式转换 集成环境下的代码生成:CCS 软件仿真Simulator及实时调试工具Debug / Emulator 硬件开发工具 硬件仿真器(XDS510) EVM(Evaluation Module) DSK(DSP Starters Kit),5.1 C2xx编程-开发流程,5.2 CCS中的代码生成工具,C编译器 汇编器 链接
17、器 文档管理器 库生成工具 运行支持库 代码格式转换工具 交叉列表程序 绝对地址列表,1、使用编辑器建立源程序(如test.asm)和链接命令控制文件(c203.cmd); 2、然后汇编上述源程序,生成目标代码(test.obj)和列表文件(test.lst),目标代码目标代码用于链接,列表文件用于查错,若出现错误应修改源程序; 3、最后将目标代码通过命令控制文件指定定位、分配资源,生成可加载执行文件(test.out)和列表影像文件(test.map)。 4、此时可进行仿真调试。,汇编,使用汇编器可将汇编源程序汇编成目标代码.obj文件,命令格式汇编器为dspa.exe,使用格式如下: ds
18、pa 汇编源程序 版本信息 选项,如源程序为myprog.asm,使用DSP为C2xx,产生列表输出(使用-L选项),将符号放进目标文件的符号表中(使用-S选项),以方便带符号调试,则汇编命令为: dspa myprog.asm V2xx L S,-V10 - TMS320C1x系列DSP -V16 - TMS320C16系列DSP -V20 - TMS320C2x系列DSP -V25 - TMS320C25系列DSP -V2xx - TMS320C2xx系列DSP -V50 - TMS320C5x系列DSP,链接,控制dsplnk工作的是命令控制文件.cmd,它指出输入目标文件列表;控制产生
19、输出文件列表;确定存储器分配(分页);落实存储器定位。 dsplnk myprog.cmd CMD文件中常用Memory和Section伪指令,5.3 代码调试工具,CCS的组成,CCS-Code Composer Studio:代码设计工作室 组成: TMS320C系列CCS代码产生工具。 CCS集成开发环境(Integrated Developing Environment,IDE) DSP/BIOS(Basic Input and Output System )插件及API(Application Program Interface)函数。 RTDX(Real Time Data eXc
20、hange)插件,主机(Host)接口及API函数。,CCS特点,CCS具有以下特点: 完全基于Windows的集成开发环境; CCS中提供了最新的、编译效率更高的C编译器; DSP/BIOS能实现实时分析,观察数据不需要中断CPU; BIOS中提供了DSP芯片内基本资源管理函数,用户可以直接调用; 先进的数据显示功能,用波形和图像显示出DSP目标板上的信号和数据,从而得到系统直观易懂的属性;,DSP/BIOS,DSPBIOS可以看做是一个准实时操作系统。 DSPBIOS提供的运行服务包括基于优先级的任务调度、中断处理和I/O服务: 在软件开发阶段,它们为实时应用提供底层软件,从而简化实时应用
21、的系统软件设计,节约开发时间。 DSPBIOS在软件调试阶段与主机CCS内的分析工具BIOScope配合,可以完成对应用程序的实时探测(Probe)、跟踪(Trace)和监控(Monitor),与RTDX技术和CCS的可视化工具相配合,除了可以直接实时显示原始数据(二维信号波形或三维图像)外,还可以对原始数据进行处理,硬件仿真,TI DSP 芯片提供片上仿真支持,使CCS能控制程序运行并实时监视程序活动。主机通过仿真器(如TI XDS510)提供的JTAG接口完成与目标DSP的通信,对DSP目标系统的实时性能没有太大得影响,片上仿真硬件提供以下功能: 运行、停止或复位DSP芯片; 将代码和数据
22、加载到DSP芯片; 检查DSP中寄存器和存储器; 检查硬件指令或数据相关的断点; 各种计算功能,包括精确到指令周期的剖切(Profiling)功能; 提供主机和目标DSP间的实时数据交换,实时数据交换技术-RTDX,RTDX允许系统开发者在不停止运行目标应用程序的情况下在计算机和DSP芯片之间传输数据,同时还可在主机上利用对象链接嵌入(OLE)技术分析和观察数据 RTDX由目标和主机两部分构成: 一个小的RTDX软件库运行在目标DSP上,DSP应用程序调用软件库的API函数,从而可通过增强型JTAG接口将数据发往主机或从主机接收数据。数据的传输是实时进行的,且不影响目标DSP的程序运行 主机平
23、台提供一个RTDX库配合CCS工作。显示和分析工具可以通过一个简单易用的COM API与RTDX通信,从目标板获得数据或将数据发往DSP芯片,EPP口的仿真工具,XDS510PP原理,XDS510PP并口(打印机接口)DSP仿真器,使用并行接口芯片(PPC/SMC34C60)将SPP/EPP/ECP信号转换成ISA格式,使用ISAJTAG转换接口芯片SN74ACT8990将控制/状态信号格式进行转换。通过译码和缓冲驱动电路变成标准JTAG边界扫描接口信号。通过短线仿真头与目标DSP芯片相连,达到仿真、调试、下载程序等的目的,ISA接口的仿真调试工具,PCI接口的仿真调试工具,14PIN的DSP-JTAG仿真头,C5401 DSK,FLASH烧录,过程: 1、Clear:清除,Flash阵列置0 2、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水利工程测量技师考试试卷及答案
- 水产种质资源鉴定工程师考试试卷及答案
- 食品过敏原检测工程师考试试卷及答案
- 建筑施工中合作框架协议书
- 合伙种植蚯蚓协议书范本
- 补偿协议书与原合同冲突
- 拆迁协议书中的私有住房
- 代开药授权协议书
- 幼儿受伤继续读书协议书
- 广州天然气安全协议书
- 2025年物业维修服务与客户满意度提升手册
- 2026年聊城幼儿师范学校第二批公开招聘工作人员9人备考题库及1套完整答案详解
- 2026保安员(初级)考试题模拟考试题库及答案(必刷)
- 语音厅保密协议书
- 燃气管道旁开挖施工方案
- 2025安徽黄山市徽城投资集团有限公司招聘10人笔试历年难易错考点试卷带答案解析2套试卷
- 《三峡》课件 部编语文八年级上册
- 2025年易制毒化学品安全培训试卷(含答案)
- 农业行政执法课件
- 湖北省高速公路改扩建施工路域环境提升指南(试行)2025
- 政府公务接待培训课件
评论
0/150
提交评论