💡
DSP开发的最终目标验证系统实现满足功能性实时性的指标要求
notion image

1.开发流程

notion image
💡
项目中必须添加的文件
.C——程序文件; .cmd——链接命令文件; .lib——库文件。 .h——头文件,必须以include方式添加
 
编译:源程序文件—>COFF(机器语言目标文件)
链接:链接目标文件的段所使用的存储空间
 
 
 

2. COFF—公共目标文件格式

COFF——Common Object File Format
基于代码块数据块的概念。
💡
COFF的好处:
  • 更利于模块化编程,并为管理代码段和目标系统存储器提供了更强有力和更加灵活的方法;
  • 基于COFF格式编写的汇编程序或高级语言程序时,不必为程序代码或变量指定目标地址,这为程序编写和程序移植提供了极大的方便
 

1️⃣块Section

目标文件中最小的单位称作块,一个块就是最终在TMS320存储器映像中占据连续空间的一块代 码或数据。

C编译器产生的块:

1.已初始化块:
  • .text 可执行代码
  • .cinit 全局与静态变量初始值
  • .const 字符串文字、字符串常量
2.未初始化块
  • .bss 全局和静态变量空间
  • .stack 系统堆栈
  • .sysmem 动态存储器函数
 

汇编器对块的处理:

💡
汇编器的主要任务:确定汇编语言程序各部分属于哪段。
.text、.data、.sect及.asect创建已初始化块
.bss和.usect创建未初始化块
1.已初始化块(包含可执行代码或已初始化的数据。)
notion image
当汇编器遇到上述命令时,它立即停止汇编至当前块中,且开始将随后的代码或数据汇集至相应的块中。块是通过迭代过程建立的。
 
2.未初始化块(存储器中保留空间,他们通常被分配到RAM中)
notion image
汇编器遇到bss和usect命令都不结束当前块,只是暂时离开当前块。该命令可以出现在一个已初始化块中的任何地方。
 

链接器对块的处理

💡
链接器对段的处理主要有两个功能:
  • 将COFF目标文件中的段组合起来,建立可执行的COFF输出模块
  • 为输出段选择存储器地址
 
notion image
.CMD文件中为链接器命令:
格式命令: MEMORY:用于定义目标系统的存储器,可以定义每一段存储器指定的起始地址和长度; SECTIONS:告诉链接器如何组合输入段以及将输出段放至存储器何处
 

例题

notion image
notion image
notion image
全局变量定义文件 DSP2833x_GlobalVariableDefs.c
 

taohu
taohu
一个普通的干饭人🍚
公告
type
Notice
status
Published
date
Jul 2, 2021
tags
slug
#
summary
类型为Notice的文章将被显示为公告,仅 hexo和next支持;仅限一个公告
category
password
icon
🎉这是Taohu的第一个网站🎉
-- 这个网站是干什么的? ---
分享学习笔记,还有一些知识碎片
您可以通过邮箱联系我哦!
我的邮箱:henryxu26@qq.com
-- 感谢您的访问 ---