X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
微控制器 MCU
[资料分享] 启动TMS320C62xx在无线传输技术中高性能的方法
Aguilera
2018-3-18 18:54
楼主
1 引言
在极低谱密度,高频谱利用率的大容量无线传输技术中,高速实时信号处理成为技术的关键。目前市场上,能满足对高速实时信号处理的需要有具有良好的可编程性的器件主要有
DSP
和FPGA。
TMS320
C6000
系列DSP 是TI 公司推出的一种高性能的数字信号处理器,包含定点和浮点两个系列,其中定点系列包括TMS320C62xx 和TMS320C64xx,浮点系列包括TMS320C67xx。 C6000 系列DSP 有三种启动方式:
(1) 主机启动
如果选择主机启动模式,在复位信号结束后,DSP 的CPU 被内部“阻塞”而其他部分都被释放。在此期间,一个外部的主机在必要时可以通过主机接口初始化CPU 的内存空间,包括配置与启动相关的内部寄存器。一旦主机完成了所有必须的初始化,它必须将HPIC 寄存 器的DSPINT 位置“1”来完成启动过程。在程序加载完后,CPU 被从“阻塞”中唤醒,然后从地址0 处执行指令。在CPU 被唤醒后,CPU 需要将DSPINT 位清零[1]。
(2) ROM 启动
如果采用ROM 启动模式,则C6000 系列的DSP(C621x/C671x/C64x)复位后自动从CE1 空间的起始处拷贝1K 字节的代码到内存空间。该拷贝过程由EDMA 完成,使用默认的Rom 时钟。在此过程中CPU 一直处于“阻塞”状态,直到拷贝完成后才被被唤醒,然后从地址0 处开始执行程序[1]。
(3) 无启动
如果选择无启动模式,CPU 复位后直接从地址0 处开始执行指令。 C6000 系列DSP 的器件配置情况决定了选择的启动方式。具体来说就是DSP 的启动模式 管脚(boot mode pins)接上拉还是下拉电阻。以C6416 为例,BEA[19:18]是启动模式管脚,它们取不同的值(上拉电阻代表“1”,下拉电阻代表“0”)代表的含义如表1-1 所示:
如果DSP 的程序小于1K 字节,那么上述ROM 启动机制已经可以完成程序的加载。然而事实上大部分DSP 的程序会大于1K 字节,这时就需要创建一个特定启动程序来完成更多代 码的加载。该特定启动程序又被称作二级bootloader[2]。
在需要二级bootloader 的程序中,这段特定启动代码通常驻留在ROM 存储器的起始位 置以便在DSP 复位后能自动被加载到内存地址0 处。当1K 字节代码被加载完毕后,CPU 开始从地址0 处执行,也就是执行二级bootloader 的内容。二级bootloader 的功能就是将程序的剩余部分拷贝到内存中。
2 启动方法的设计与实现
采用二级bootloader 的DSP 启动方法的实现大体分为四步:配置存储器;编写 secondary bootloader 代码;编译程序,转换目标文件的格式;将程序烧写进Flash。图1 为实施该启动方法的硬件平台示意图,其中DSP 的型号选择C6416,Flash 的型号选择 AM29LV800B。
2.1 配置存储器
2.1.1 定义存储器分区
为了实现使用二级bootloader 的ROM 启动,需要将Flash 划分为FLASH_BOOT, FLASH_REST 两个区。这两个区分别存储由on-chip bootloader 拷贝的程序段和由secondary bootloader 拷贝的程序段。对于BIOS 程序,Memory 段的定义在MEM(Memory Section Manager)对象里。对于非BIOS 程序,Memory 段定义在linker command file 中。一个C6416 的Memory 段定义的例子如下所示:
2.1.2 COFF 段的定位
DSP 程序是以COFF 段的形式在内存中存放的。一个COFF 段就是一个代码或数据块, 它在内存中占据连续空间。COFF 段分为自定义段,初始化段和未初始化段三种。COFF 段可 以有各种属性,其中load 属性和run 属性跟DSP 启动有密切关系。Load 属性指明段的存储 地址,run 属性指明段的执行地址。二级bootloader 负责将所有的段从load 地址拷贝到run 地址。例如:.text: LOAD= FLASH, RUN= IRAM
表示代码段.text 被存储在flash 中,DSP 启动时二级bootloader 将该段拷贝到IRAM 中。
2.2 编写Secondary Bootloader 代码
对于C6416,外部存储器接口(EMIF)需要正确配置以后才可以访问外部存储器件。在这 项工作完成后,二级bootloader 应该将所有的初始化段从它们的load 地址拷贝到run 地址, 之后再跳转到_c_int00,也即是程序入口点。Secondary Bootloader 用汇编语言编写,因 为此时C 环境尚未建立。
二级bootloader 必须知道所有初始化段的大小,在Flash 中存储的位置以及应该被加载到何处才能进行正确的拷贝。事实上,二级bootloader 通过读取段拷贝表获得上述信息。本文第三部分详细说明了有关段拷贝表的内容。完成二级bootloader 代码的编写后,应将它添加入工程,与工程的其他代码一同编译链接生成.out 文件。
2.3 转换目标文件的格式
编译链接生成的是.out 格式文件,然而Flash 一般接收的是ASCII 格式的文件[3]。
CCS
附带的工具hex conversion utility 可将.out 文件转换为ASCII 格式的.hex 文件,Hex6x 以命令行文件的形式执行。Hex 命令行文件中,首先指明输入文件(.out),输出文件的格式和ROM 的大小及类型,以及哪些段需要被放在ROM 中。一个Hex 命令行文件的例子如下所示(注释内容用“/*”和“*/”括起):
2.4 将程序烧写进Flash
将2.3 节生成的ASCII 文件烧写进Flash 可以使用CCS 自带的FlashBurn 工具。 FlashBurn 是一个带图形界面的软件,它首先将一个称作FlashBurn Target Component (FBTC) 的程序下载到DSP 内存中,通过与FBTC 的实时数据交换完成对Flash 的擦除编程等操作。 针对不同的硬件(DSP,Flash 型号)修改FBTC 是该方法的关键。所需修改处包括Flash 的基地址,大小,及读写命令字等。
3 段拷贝表
二级bootloader 使用一个段拷贝表(section copy table)进行段的拷贝。段拷贝表包含每个需要拷贝的段的必要信息,如段的load 地址,段的run 地址,段的大小。段拷贝表被插入在secondary bootloader 的末尾。
生成段拷贝表的方法有两种: 1) 使用 hex conversion utility 的-boot 选项 在2.3 节中我们讨论了程序文件格式的转换和hex 命令行文件,事实上
Code Composer Studio
自带的工具hex conversion utility 提供了一种更为方便的生成段拷贝表的方法, 只要在hex 命令行文件中使用一些特殊的选项即可。特殊的选项有–boot, ?bootorg 和 –bootsection,这三个选项的含义分别如下:
-boot 使用该选项时hex conversion utility 将自动转换所有初始化段的格式
-bootorg 指明段拷贝表的地址
-bootsection 指明二级bootloader 所在的段的名称
2) 使用 linker 选项(LOAD_START,RUN_START,SIZE)
涉及段拷贝表的生成的有三个选项:LOAD_START,RUN_START 和SIZE,可分别获得一个段的驻留地址,运行地址和大小。例如下列代码可获得text 段的驻留地址(存于_text_ld_start 中),运行地址(_text_rn_start)和段的大小(存于_text_size)
.text : load = FLASH_REST, run = IRAM
LOAD_START(_text_ld_start),
RUN_START(_text_rn_start),
SIZE(_text_size)
4 结束语
本文针对在极低谱密度,高频谱利用率的大容量无线传输技术研究中C6000 系列DSP 的应用程序大于1K 字节的情况,提出了一种使用二级bootloader 从Flash 启动DSP 的方法。 该方法可应用于采用了C6000 系列DSP 的嵌入式系统中,不需要额外的Flash 编程器,具有 广泛的适用性。
点赞
回复评论
暂无评论,赶紧抢沙发吧
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
毕业设计最后阶段!找高手帮忙编程!TMS320LF2407芯片!高薪悬赏!!
ubuntu环境搭好,编U-BOOT找不到arm-linux-gcc
CODE GENERATOR 错误提示
数字钟
电子驱蚊器
Atmel AVR远程接入控制方案适合遥控车门开关,电池寿命超过10年
IAR不能"DownloadandDebug",问题严重了
简单的行为心理学-教会你看人!
一周精彩回顾:2018.6.11-6.18
预期收益20%一年下来竟为零 投资者称被银行忽悠
陕西省西安电信114成为游客“交通导游”
说实话。。。。感觉广东比湖南外婆家还冷。。
嵌入式GUI FTK介绍(3)-XML界面描述语言
关于rfs_816x压缩,再解压出现的问题??
基于ARM的TMS320C645_省略_PHPI的动态程序加载设计与实现
请教 DSP 汇编 伪指令 .EUQ 和.SET 的区别
【申裤】开源stm32+AD9851做的DDS,25M带宽
BOOST型PFC电路中电感的设计方法
多功能八回路信号报警控制器原理图
【米尔MYD-YA15XC-T评测】+ 使用STM32CubeProgrammer软件更新系统固件
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复