找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] TMS320VC54x系列DSP的用户Bootloader设计

[复制链接]
admin 发表于 2013-3-25 14:21:23 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: TMS320VC54x系列DSP的内部ROM固化了一个称为Bootloader程序。在DSP上电时Bootloader将外部Flash中的用户程序搬移到DSP的片上RAM或片外RAM程序区中,并将程序指针指向用户程序运行时的首地址执行。在16 bit并行自举方式下,DSP提供的这个Bootloader程序要求用户程序代码长度不能超过32 KB。文介绍了一种用户Bootloader的设计方法,通过二次自举可实现对应用程序代码长度超过32 KB的加载。
关键词: TMS320VC54x;数字信号处理器;自举;二次自举
       TMS320VC54x系列DSP上电时,需要通过掩膜在DSP片上ROM的Bootloader(自举)程序完成对用户应用程序的加载过程,即DSP上电后自动将固化在Flash中的应用程序读入到DSP的片上RAM或片外RAM映射成的存储区间的一个过程[1]。由于片上Bootloader程序在外扩Flash并行自举方式下,用户应用程序可执行代码长度不能超过32 KB,所以在实际应用中常常会遇到可执行代码超过32 KB的问题。因此,用户必须设计自己的Bootloader程序,通过二次自举的方法完成对应用程序的自举。
1 TMS320VC54x系列DSP的自举
1.1 自举方式

     TI公司的TMS320VC54x系列DSP所提供的自举功能非常强大,它支持多种自举方式,可以满足用户多种不同的需求。
     这些方式包括串行口(标准串口、时分串口、缓冲串口)输入方式、并行口输入方式、HPI口输入方式、I/O口等方式。此外,按照数据进入DSP时的字长又分为8 bit方式和16 bit方式[2]8-11。
1.2 自举过程
     当MP/MC=0时,TMS320C54x被置于微计算机模式。上电或复位时,程序指针指向片内ROM区的0xff80单元。该单元放置了一条跳转指令,使程序跳转到0xf800单元,而0xf800单元的内容就是Bootloader引导程序的起始地址。Bootloader将存放在外部Flash中的应用程序搬移到DSP内部或外部的RAM区,搬移完成后跳转到该程序的入口处执行。存放在外部Flash的用户程序与一些必要的引导信号组合在一起称为自举表。自举表内容不仅包括了欲加载的各段代码,而且包括各段代码长度、各代码段存放的目标地址、程序入口地址等信息。TMS320VC54x 系列DSP的自举表结构[3]如表1所示。
    20121107050010327671872.gif
   2 用户Bootloader设计
2.1 外扩Flash并行自举的局限性及解决方法

     采用外扩Flash的16 bit并行自举是一种比较方便的使用方式。由于TMS320VC54x DSP系列CPU的数据空间只有64 KB,其中低端32 KB(地址从0000h-7fffh)映射到内部,映射到外部数据空间的只有高端32 KB(地址从8000h-ffffh)。TI掩膜自举程序的处理方式是仅在这32 KB空间内进行寻址搬移[4]。如果用户应用程序超过了32 KB,则无法完成自举过程。
     文中设计的TMS320VC5410A目标平台采用的Flash为39VF800,存储容量512 KB×16 bit,用来存储超过32 KB的用户主程序。由于TI的5410 ADSP的外部数据空间只有32 KB(地址从8000h-ffffh)。因此,将Flash分为16页,每页32 KB,重用8000h-ffffh地址空间。页编号从0开始,在访问Flash时需要先指定页号,然后读取数据。将用户自举程序放在Flash上电默认页(即第0页)的最后2 KB,因此需要在Flash的第0页的ffffh位置写上F800h。用户自举程序从F800h开始连续存放。fffdh中存放主程序常用区起始页,供Bootloader程序寻址,Flash资源分配示意如表2所示。
    20121107050010374541873.gif
   2.2 二次自举
     所谓二次自举是指上电时CPU片上自举程序首先将用户的自举程序搬移到片内RAM中运行,用户自举程序取得控制权后,再将用户的应用程序自举到RAM中运行。由于用户自举程序是自己编制的,在需要时可以控制Flash换页,因此也就突破了32 KB的限制。
2.3 可自举文件的生成
     用户的自举过程完全仿照TI的处理方法,只是增加了处理超过32 KB时的寻址切换问题。首先,利用CCS5000的集成开发环境编写调试自举程序和应用程序,并生成 .out文件[5]。然后利用TI公司提供的Hex转换工具Hex500.exe程序将.out文件转换为ASCII码文件,生成的ASCII码文件是一个严格按照自举表格式排列的可执行代码。同时生成的还有该文件的MAP文件,可以从MAP表中找到程序的入口地址[2]352-380,用户需将ASCII码文件进一步转换为二进制文件,最后,将二进制的用户自举程序和用户主程序分别烧写到Flash中相应的位置(如表1所示)即可。
     可以利用编程器对Flash进行烧写。此外,CCS5000的集成开发环境提供了丰富的BIOS函数,使得文件读写变得极为方便。用户也可以自己编写Flash的文件烧结程序,并通过仿真器将用户程序烧制到Flash中。
2.4用户Bootloader实现
     如图1所示,用户的自举程序需要完成CPU初始化、自举表格式实现、Flash读写操作、Flash分页切换等工作。当地址增加由0xffffh变为0x0000h时,则表明地址溢出,需要换页。自举程序从数据空间读取用户主程序数据写入到程序空间,搬移完毕后,用户自举程序将控制权交给用户主程序,从而完成自举过程。
    20121107050010437041874.gif
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-27 13:07 , Processed in 0.057481 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表