C语言DSP开发与应用举例(精_哈工大课件)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/5/12
DSP原理及应用
1
C语言DSP开发
基于上述原因,各个DSP芯片公司都相继推出了 相应的高级语言(如 C语言)编译器,使得DSP芯片的 软件可以直接用高级语言编写而成,从而大大提高了 DSP芯片的开发速度,也使程序的修改和移植变得简 单易行。
本节将介绍TMS320C54系列DSP芯片的C语言的 软件设计和程序开发。
interrupt关键字定义函数既没有参数 也没有返回值。
2020/5/12
DSP原理及应用
11
2020/5/12
DSP原理及应用
12
注意:
在编译后的代码中,c_int00是C语言 程序开始的标志。这是专门为系统复位 中断设定的保留字。系统复位中断将初 始化整个系统并调用main()函数。
2020/5/12
porthex_num指的是 I/O 端口号,hex_num变量是一 个十六进制数据。必须注意的是,所有的端口变量 在函数级说明端口变矗是无效的,必须在支存级予 以说明:同时在函数原型中不能使用ioport关键字。
2020/5/12
DSP原理及应用
9
下面的代码定义 I/O端口为unsigned port10h, 将数据a写 port 10h,然后从port10h读人数据 存到b中:
2020/5/12
DSP原理及应用
6
const
const关键字有助于更好地控制对特定 数据对象存储空间的分配。可以用const 关 键字定义任何变量或数组,来保证变 量或数组的值不被改变。
如果定义一个对象为const,则const 段会为此对象分配特定的存储空间。
2020/5/12
DSP原理及应用
2020/5/12
DSP原理及应用
16
2.DSP的c语言运行环境
DSP的C语言程序能否正确执行,关键是所有的运行 代码是否能保持一个正确的运行环境。包括:存储器模 式,字符串常量,寄存器规则,函数的结构和调用规则 ,C语言和汇编语言混合汇编,中断处理等。本节主要介 绍一下两点:
(1)存储Biblioteka Baidu模式 (2)C语言与汇编语言的混合编程方法
2020/5/12
DSP原理及应用
8
ioport
Ioport 关键字读写DSP的I/O端口空间。 ioport关键 字的用法如下:
Ioport type porthex_num
ioport是指定这是个端口变量的关键字;
type是指端口的数据类型,必须是char,short,int 或unsigned;
2020/5/12
DSP原理及应用
2
DSP中的C语言
1.数据类型及相互之间的转换 2.C语言关键字
2020/5/12
DSP原理及应用
3
1.数据类型及相互之间的转换
2020/5/12
DSP原理及应用
4
不同类型的数据可以相互转换:
浮点数据向整型数据的转换是以0为中心截断的。 例如:一3.3转换成整型为一3。 此外,当转换后的数据类型可以存储源数据类型时,则指 针型数据和整型数据也可以相互转化。
2020/5/12
DSP原理及应用
17
(1)存储器模式
DSP的C编译器将存储器分成两个线性的段,分别是程 序存储器和数据存储器。程 序存储器包含可执行的代 码。数据存储器包含外部变量、静态变量和系统堆栈。
由C程序生成的代码段和数据段将连续地存放在存储器 中。
C编译器生成的段 C编译器对C程序进行编译后生成可以重定位的代码 和数据段,这些段可以用不同的方式分配到存储器以符 合不同系统配置的需要。这些段可以分为两种类型,一 种是已初始化段,另一种是未初始化段。
2020/5/12
DSP原理及应用
5
2.C语言关键字
在CCS环境中使用C语言开发程序,可以使用C语言中 常用的一些关键字和表达式。 如:定义数据类型的关键字:char,int,double等。
条件判断关键字:if ,else , switch,case等。 循环语句关键字:for ,while等 注:在C语言中,三目运算符:表达式?语句一:语句二;
存档器 目标 文件库
COFF 目标文件
链接器
建库工具 运行时 支持库
HEX代码 转换工具
可执行的 COFF文件
调试工具
TMS320C54x
EPROM 编程器
绝对地址 列表器
交叉引用 列表器
2020/5/12
DSP原理及应用
15
C编译器
C编译器的编译时通过运行cl500.exe程序完成 的,编译器运行指令: Cl500 filenames objectfiles Filenames:一个或多个C语言源文件的名称。 Objectfiles:编译器所创建目标文件的文件名
DSP原理及应用
13
DSP的C语言运行环境
1.C程序设计流程 2.DSP的c语言运行环境
2020/5/12
DSP原理及应用
14
1.C程序设计流程
1. ’C54x应用软件开发流程
开发过程的宏目源文件的是产生一个可C源文以件 由’C54x目标系
统执行的模块。 存档器
汇编 源文件
C编译器
宏库
汇编器
汇编 源文件
C语言DSP开发
使用C语言开发DSP的原因
基于DSP芯片的软件开发,用DSP芯片的汇编语 言编写程序是一件比较繁杂的事情。一般来说,各个 公司的DSP芯片所提供的汇编语言并不相同,即使是 同一公司的芯片,由于芯片的类型不同(如定点和浮 点)、芯片的升级换代,其汇编语言也有所不同,使 用汇编语言开发DSP产品的周期相对较长,因为开发 人员在编写DSP程序之前必须熟悉这种DSP芯片的汇 编语言。而产品一旦开发完毕,如果需要对软件进行 修改和升级都将非常困难,这是因为汇编语言的可读 性和可移植性比高级语言差。
7
volatile
Volatile关键字用来定义一些变量, 保证该变量不会被优化器优化。优化器 会自动分析数据流来避免一切可能存取 内存的操作。如果在写C代码的时候确实 需要用到内存存取的代码,则必须用 volatile关键字来区别这些存取操作。 对存储器映射寄存器都使用volatile关键 字来定义。
2020/5/12
DSP原理及应用
10
interrupt
interrupt关键字用来定义一个中断服 务函数,中断服务函数必须保存中断控制 寄存器和返回序列。当C语言程序被中断时, 中断服务程序将保存所有用到的寄存器。 当用interrupt关键字定义一个函数的时候, C编译器会生成寄存器来保存中断控制寄存 器和中断返回序列。