专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
DSP
C54x DSP的软件开发环境与工具,开发流程—编译链接
2019-07-13 11:17
发布
生成海报
站内文章
/
DSP
16803
0
913
本文介绍基于C54x的DSP的软件开发环境与编译器,汇编器,链接器的使用,对开发流程也有所涉及。
以下是基于DSP的实时系统开发设计框图
首先根据需求设计规范,确定设计的目标,然后进行算法研究和仿真,定义系统性能指标,根据性能指标选择DSP芯片,之后就是开发和系统集成测试部分,包括软件和硬件部分。在信号处理中需要考虑的是DSP算法和软件 仿真,在非信号处理中,需要考虑具体的应用环境、可靠性、可维护性、功耗、体积、重量、成本等。
1、'C54xx软件开发过程
编译链接
编译器:cl500 -g -k file.c -z file.cmd -q
汇编器:[asm500 file.asm -s -l file.lst]
链接器:[lnk500 file.obj … file.cmd
-m file.map -o file.out -e start ]
在CCS集成环境中通过 Build Options 选择各选项
2、汇编语言程序的编写格式及COFF(Common Object File Format)文件的一般概念
(1)汇编源程序组成及格式:
[标号][:] 助记符 操作数,操作数 [ ;注释]
(2)常用伪指令:
用它控制汇编和链接过程,不占存储空间;
(3)COFF文件一般概念:
1.
定义:
能被'C54x执行的、由汇编器和链接器创建目标文件格式;
2. 优点:
便于模块化管理;
3. 格式:
有三种:
COFF0、COFF1、 COFF2,每种格式只是标题形式不同,数据部分是相同的;默认格式是COFF2;
② 段(Section)的概念:
定义:
在存储器图中占据相邻空间的代码或数据块称为段,是组成目标文件的最小单元;
符号:
段都用"
.
"开始,用小写字母表示;
段的分类:
(ⅰ) 已初始化的段:包括数据、程序代码等
. text .data .sect .asect
等
(ⅱ) 未初始化的段:为未初始化的数据(变量)预留空间
.bss .usect
等
目标文件中的段与目的存储器间的关系:
(4)段的处理:
#
汇编器在汇编时,根据汇编伪指令用适当的段将各部分程序代码和数据代码连在一起,构成目标文件;
#
链接器将各个段重新定位到目标存储器中;
3、汇编器: .asm 文件 .obj 文件
(1)主要功能:
将汇编源程序汇编成一个可以重新定位的目标文件(
.obj 文件
);
#
按需要生成列表文件(
.lst 文件
);
#
为每个目标代码块设置一个段程序计数器(
SPC
);
#
定义和引用全局,需要时在列表文件后面附加一张交叉引用表;
#
汇编条件块;
#
支持宏调用;
(2) 汇编器对段的处理和列表文件:
#
汇编器根据汇编指令,处理和识别各个段,并将相应的段加到已存在的段中,建立单一的段;
(3) 汇编命令格式及汇编伪指令
#
命令格式:
asm500 [ input file [ object file [listing file] [option]
# option
、汇编伪指令功能及分类以及常用汇编伪指令可以参考用户手册
4、链接器
(1)主要功能:
根据链接命令或链接命令文件(
. cmd
文件),将一个或多个COFF目标文件链接成可执行的输出文件(
.out
文件)和按需要生成存储器映象文件(
.map
文件)。
(2)链接器对段的处理:
#
把一个或多个COFF目标文件中的各个段作为链接器的输入段,经链接后在一个可执行的COFF输出模块中建立相应的输出段;
#
为各个输出段选定相应的存储器地址;
#
链接器根据汇编器建立的段,确定这些段存放在目标存储器中的位置称为重定位;
(3) 链接命令格式及链接伪指令:
1.
命令格式:
lnk500 file1.obj file2.obj –m file.map –o file.out –e start
2. option
3.
链接伪指令:
□存储器指令(MEMORY):
定义目标系统存储器配置图,包括存储器的命名、规定它们的起始地址和长度;
□段指令(SECTIONS):
告诉链接器如何将输入段组合成输出段,以及将输出段放在存储器的什么位置;
(4) 链接命令文件(.cmd文件)的编写:
5、应用C编译器时建立的段
1. 初始化的段
□
.text-
可执行的代码和常数(PAGE 0);
□
.cinit-
初始化的全局和静态变量表(PAGE 0);
□
.const-
字符串常数和初始化的全局和静态变量(PAGE 1);
□
.switch- C
中switch语句描述的表格 (PAGE 0);
2. 未初始化的段
□
.bss-
为全局和静态变量保留的空间(PAGE 1);(在程序开始时,C boot 程序把放在ROM中的
.cinit section
的数据拷贝到
.bss section
中 )
□
.stack-
系统堆栈存储器(PAGE 1);(堆栈存储器用作函数的参数传递和分配局部变量)
□
.sysmem-
为
C
中动态存储器分配函数保留空间(PAGE 1)(如
malloc、calloc
等,其块大小由
head
伪指令定义)
﹡.data section
由汇编器建立,用于初始化数据段,C 编译器不用这个段;
Reference:
http://www.zidonghua.com.cn/dir/zhuti_show.asp?zid=9377
http://focus.ti.com.cn/cn/paramsearch/docs/parametricsearch.tsp?family=dsp§ionId=2&tabId=132&familyId=324
http://www.blog.163.com/houh-1984/
本文介绍基于C54x的DSP的软件开发环境与编译器,汇编器,链接器的使用,对开发流程也有所涉及
Ta的文章
更多
>>
Altium Designer的PCB无法显示Designator
0 个评论
Redhat 5.2 Yum 配置
0 个评论
有关于__align(n)
0 个评论
C54x DSP的软件开发环境与工具,开发流程—编译链接
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮