程序编写和调试环境简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

联系。用.sect定义的段可包含代码或数据。
(4).text 标示.text段内代码部分。.text段通常包含可执行
代码。
(5).usect 在 未 初 始 化 命 名 段 内 保 留 空 间 。 .usect 伪 指 令
和.bss伪指令相类似,但是它允许用户与段.bss分开保留空间。
2
DSP芯片技术及应用
7
DSP芯片技术及应用
寄存器头文件F2407_C.H
F2407_C.H头文件中定义DSP系统用到的一些寄存 器映射地址。用户用到的常量和用户自定义的寄存 器都在头文件中定义,头文件名的后缀为.H。 寄存器头文件可以从其他文件或相关资料中复制, 或复制后根据需要进行修改。
8
DSP芯片技术及应用
左图为纯汇编使用 的头文件 F2407REGS.H的片断。
第4章 程序编写和调试环境简介
4.1 程序的编写
TMS320LF240x DSP提供两种编程语言:汇编语 言和C/C++语言
下面的介绍以汇编语言为主
进入程序调试之前要求有3种格式的文件:头文件、 汇编语言文件和命令文件
1. 常用的几个汇编伪指令 * 定义段的伪指令: .sect .bss .text等 * 初始化常数的伪指令:.word .int .byte 等 * 引用其他文件的伪指令: .copy .include .global .def .ref 等
定义的符号。
6
DSP芯片技术及应用
第4章 程序编写和调试环境简介
2. 3种基本的文件
源程序: 汇编语言文件:后缀为.asm,C混编 .c
头文件:后缀为.h, 包含以字符定义的一些寄存器 命令文件:后缀为.cmd,实现对程序存储器和数据存 储器空间的分配。(一般写好后不再改动) 命令文件中常用的伪指令有:MEMORY 和 SECTIONS。
有效的4个属性包括:
R 表示存储器可以读出;
W 表示存储器可以写入;
X 表示存储器含有可执行代码;
I 表示存储器可以初始化。
origin
表示存储器范围的起始地址。
length 表示存储Biblioteka Baidu范围的长度。
13
DSP芯片技术及应用
SECTIONS伪指令的一般语法
SECTIONS
{ name :[property,property,property,…] name :[property,property,property,…] name :[property,property,property,…]
1
DSP芯片技术及应用
定义段的伪指令
定义段的伪指令:把汇编语句程序的各部分与适当 的段联系起来。
(1).asect 创建具有绝对地址的初始化命名段。包含代码或
数据。在绝对段内,用户可以使用.label伪指令来定义可重定位
标号。
(2).bss 为未初始化的变量。在.bss段内保留存储器空间。
(3).sect 定义初始化命名段并把后续代码或数据与该段相
}
以name(名字)开始的段的规格说明定义了一个输 出段。
在段名之后是特性列表,定义段的内容以及它们是
怎样被分配的,特性可以用逗号来分开.
14
DSP芯片技术及应用
段可能具有的特性:
(1)装载位置:规定段将被装载在存储器内何处; (2)运行位置:定义段将在存储器内何处运行; (3)输入段:定义组成输出段的输入段; (4)段类型:定义特定段类型的标志; (5)填充值:定义用于填充未初始化空位的数值。
(2).label:定义一个特定的标号,表示当前段的 装载地址。当段在一个地址处装载但在另一个地址 处运行时,该指令特别有用。
(3).version:告诉汇编器该代码是属于哪一种处 理器。.version伪指令必须出现在指令之前,否则将 出错。
5
DSP芯片技术及应用
引用其它文件的伪指令
(1).copy和.include:告诉汇编器开始从其它文件
19
DSP芯片技术及应用
各类仿真器品牌及接口类型
20
DSP芯片技术及应用
21
DSP芯片技术及应用
22
DSP芯片技术及应用
23
DSP芯片技术及应用
24
DSP芯片技术及应用
25
DSP芯片技术及应用
26
DSP芯片技术及应用
27
DSP芯片技术及应用
作业
根据如下的存储空间配置,编写一个*.CMD文件,并在本文件中 对.text, .vectors(有自定义的中断向量段),.bss段定位。 其 中,.bss定位在B2区)
初始化常数的伪指令
(1).byte:将一个或多个8位的数值置入当前段连续 的字中。除了每个数值的宽度限制为8位以外, 与.word类似。 (2).int和.word:将2个或多个16位值置入当前段 的连续字中。
(3).long和.blong:将32位数值置入当前段连续两 个字中,先存放低位字。
.blong:保证目标不会跨越数据页的边界。
据页。
PAGE0规定程序存储器,PAGE1规定数据存储器。
name
命名存储器范围。存储器可以是1至8个字
符。在不同页上的存储器范围可以具有相同的名字,
但是在一页之内所有的存储器范围必须具有唯一的名
字12 且必须不重叠。
DSP芯片技术及应用
attr
规定与已命名范围有关的1~4个属性。
未规定属性的存储器具有所有4个属性。
11
DSP芯片技术及应用
Memory伪指令的一般语法
MEMORY
{ PAGE0: namel[(attr)]: origin=constant ,length=constant; PAGEn: namen[(attr)]: origin=constant ,length=constant;
}
PAGE 标示存储器空间。用户可以规定多达255数
其中可定义常用的 (部分)寄存器、宏、 用户自定义的变量等
头文件的使用使软 件编程的灵活性和程序 的可读性大大提高
9
DSP芯片技术及应用
P95页 头文件
混编中寄存器都是以指针方式进行寻址
volatile 告诉编译器变量是随时可能发生变化的,每次使
用它的时候必须从i的地址中读取,因而编译器生成的可执 行码会重新读取数据. 而优化做法是,由于编译器发现两次读数据的代码之间的 代码没有对i进行过操作,它会自动用上次读的数据。而不 是重新读。这样以来,如果i是一个寄存器变量或者表示一 个端口数据就容易出错,所以说volatile可以保证对特殊地 址的稳定访问,不会出错。
15
DSP芯片技术及应用
命令文件实现 对程序存储器空间 和数据存储器空间 的分配
MEMORY指 明目标系统中可被 使用的存储器范围
SECTIONS主 要标明输出段在存 储器中的一般位置
16
DSP芯片技术及应用
4.2 调试环境代码编译器CC
17
DSP芯片技术及应用
18
DSP芯片技术及应用
采用传统的电路仿真方法很难实现可靠的仿真
中读入源语句。
当汇编器完成从copy(复制)或者include(包含)
文件内读入源语句时,恢复从当前文件读源语句。
(2).def:识别在当前模块中定义且可以被其它模
块使用的符号。
(3).global:声明外部符号。
.global伪指令对于已定义符号起.def的作用,对于未
定义符号起.ref的作用。
(4).ref:识别在当前模块中使用但在其它模块中
3
DSP芯片技术及应用
汇编时(Assembly-Time)符号伪指令
.set和.equ:把常量值赋予符号。
类C的结构定义使用户能把类似的元素组合在 一起,然后把元素偏移量(offest)的计算留 给汇编器。
4
DSP芯片技术及应用
其他伪指令
(1).end:终止汇编。它是一个程序的最后一条源 语句。此伪指令与文件结束符具有同样的效果。
28
DSP芯片技术及应用
10
DSP芯片技术及应用
命令文件 .CMD
命令文件名的后缀为.CMD,命令文件实现对程序存储 器空间和数据存储器空间的分配。
文件常用的伪指令有MEMORY和SECTIONS伪指令。
MEMORY :用来标示实际存在目标系统中且可被 使用的存储器范围,每个存储器范围具有名字,起 始地址和长度。
SECTIONS :描述输入段怎样被组合到输出段内; 在可执行程序内定义输出段;规定在存储器内何处放 置输出段;允许重命名输出段。
相关文档
最新文档