全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

TMS320VC5410的BOOT设计与实现

[复制链接]
958 0

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

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

x
  TMS320VC54X系列DSP芯片一般都在片内设置有BOOT程序。BOOT程序的主要作用是在开机时将用户程序从外部装入到程序存贮器。不同型号的DSP芯片中BOOT引导程序的大小是不同的。TMS320VC5410内部就具有2K字的BOOT程序,下面就介绍TMS320VC5410的BOOT设计方法。
     1 BOOT的模式选择
     我们使用TMS320VC5410的BOOT程序时,需要将DSP设置为微机工作方式(硬件复位后采样MP/MC=0),则当执行片内的引导程序,并且DSP复位后,程序就从内部ROM的FF80H处开始执行程序。在FF80H处,有一条跳转指令,转向ROM中已掩模的BOOT程序,这样便开始运行内部的BOOT程序。这个引导程序首先进行初始化。初始化工作包括使中断无效(INTM=1)、将内部的双存取块/单存取块映射到程序/数据空间(OVLY=0),对程序和数据空间都设置7个等待状态。
     TMS320VC5410程序引导共有5种模式:
     (1)HPI模式,这是一种主机接口模式。主机通过写入主机控制寄存器(HPIC)来中断DSP,而  DSP则通过主机中断信号来中断主机。主机可以响应HINT信号和清除该信号。HINT是否为低电平决定了是否选用主机接口HPI引导模式。
     (2)并行I/O口BOOT模式(支持8bits和16bits)。
     (3)串行口模式(标准/TDM/BSP)(支持8bits和16bits),串口引导共有8种方式。按字长8位与16位两种格式和CLKX/FSX引脚的设置决定引导模式。采用8位子长时需要对下列控制位置位:
    接收复位信号RRST;
    发送模式位TXM;
    时钟模式位MCM(使CLKX由片内时钟源驱动);
    帧同步模式位FSM(必须由外部施加帧同步脉冲信号到FSR引脚);
    格式位FO(选择8位数据传输方式)。
     (4)外部并行模式(支持8bits和16bits)。
     (5)WARM BOOT,即热引导模式,可以使传输控制入口地址,也可以在器件热复位或用其他方式把程序代码已经传输到片内或片外存储器(如DMA)后使用WARM引导模式。在WARM引导模式时,由BRS字中的SRC或ADDR字段指定入口地址的高6位。
     本文主要就8位/16位并行I/O口引导模式作探讨。
     I/O口引导模式提供了一种异步地把程序代码从I/O口地址空间0h处传输到内部或外部的程序存储器的方法。图1是程序流程图。
    20121107053600928863799.jpg
     由图1的流程图我们可以看到设置合理的数据区的FFFFH地址的内容,使它成为有效地并行引导,就可以实现我们的并行I/O的BOOT模式。
     2 设计FFFFH地址的内容使它成为有效的并行引导数据
     FFFFH地址所填的内容就是所设计的应用程序开始的地址,在所设计的程序中起始地址是0页的08000h,因此,在此程序中将FFFFH的内容设置为08000h。
     3 设置08000h的内容,实现引导功能
     我们可以根据图2来得到我们所需要填写的数据。
    20121107053600975743800.jpg
     由图2的流程图我们可以知道,要往08000h地址开始写入所规定的值才符合要求。见表1。
    20121107053601053863801.jpg
     依照表1,我们可以填入符合要求的字。
     4 获取填入字的信息
     要获取填入字的信息就要生成一张表,而生成这张表之前需要做一个批处理文件,批处理文件的做法如下:
     (1)首先编译通过生成“.out”文件;
     (2)打开UltraEdit-32编辑批处理的软件;
     (3)用hex命令进行编辑。
     hex命令形式如下:
    myfile.out/*输入的COFF文件名.
    -e 0x0000/*程序的起始地址.
    -a/*ASCII输出形式.
    -boot/*引导所有的程序单元.
    -bootorg PARALLEL/*创建PARALLEL的BOOT引导.
    -memwidth 16/*16bits的EPROM.
    -o myfile.hex/*输出文件名.
     这里有一个小程序可以看出具体操作过程(程序的起始为0x2000):
     hex500 test1.out-e 0x2000-boot-bootorgPARALLEL-memwidth 16-romwidth 16-o test1.hex
     这样可以生成一个表,如表2所示。
    20121107053601116363802.jpg
    20121107053601163233803.jpg
    20121107053601241363804.jpg
    20121107053601288233805.jpg
     表2中带下划线者代表每一个Section的起始地址,有框线者是这一个Section的长度(注意,当我们依据这张表填的时候,应该将Section的长度加1,这是应用后得出来的经验),最后一个Section的最后四个0表示结束。
     由上,我们就可以使用并行的BOOT模式了。

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表