基于TMS320C6678的国产DSP操作系统引导程序设计

2022-03-24 09:17:37 | 浏览次数:

zoޛ)j馒K}4
#H<4S1-.?iiLķ@!3mJ{$w9uۑύ0�aK84
#H`?iLķ@N0(u<4DM8;])zA,AD,	!xČ4K}y$H8|zA T#]<#! <4
#K}]8815Cw0@N93Ow0mt<A/i_K
#,TR<6Ci-Mx(jgznWBw6?io4I<方案,其内核完全自主设计,并针对TI公司TMS320C6678芯片进行了系统优化。

锐华DSP实时操作系统使用AMP多核并行处理架构,操作系统部署在每个DSP核上,每个核都有自己的存储空间和任务队列、上下文操作空间、堆栈等,核间提供了多核屏障、自旋锁等多核同步和资源保护机制。锐华DSP实时操作系统具有强实时、高可靠特征,基于微内核及组件技术,能根据实际应用需要对操作系统内核进行配置、裁剪、扩展与定制。同时支持模块的动态加卸载,易于系统重构及应用升级,解决了多核DSP难于使用的问题,改变了原有的DSP处理器编程模式,提高了用户的软件开发效率。

銳华DSP实时操作系统的所有核使用同一份映像代码,每个核根据核号执行不同的代码分支。操作系统将DDR内存分为2块大的区域,高端为多核共享区,低端为每个核的私有区。其中,引导、系统代码、共享数据以及用户自定义内存均位于共享区,每个核的堆和栈位于私有区。

在私有区中,每个核使用虚拟地址,也就是说每个核的物理地址不同,但逻辑地址是相同的,因此在操作系统引导方案设计过程中必须考虑这一因素。

多核加载功能是在操作系统中实现的,引导程序首先加载核O,对于另外7个核来说,主要是挂载IPC中断,然后进入等待状态。当核0启动后,通过系统参数读取哪些核需要被引导,然后向需要被引导的核发送IPC中断,其它核收到中断后,即跳到入口地址,并完成多核的加载过程。

5 引导流程

针对传统启动方式的缺陷和实时操作系統的特点,本文设计了一种新的二次引导的加载程序(RBOOT)。与其它的二次引导不同,RBOOT重点考虑了操作系统参数、内存构架、板卡外设配置等。RBOOT可以作为通用的DSP芯片引导程序,无需为专门的DSP板卡或特殊的硬件设备定制,具有非常好的通用性。

RBOOT可以固化在外部存储器(EEPROM. NOR Flash. NAND Flash),通过RBL引导。RBOOT支持主机启动和存储器启动,包括但不限于RBL的全部启动方式。如果有必要RBOOT甚至可以通过串口、GPIO等非常规启动接口引导操作系统。

在RBOOT加载后进入读秒过程,并待串口的输入。如果串口上有输入,则进入SHELL界面等待用户的命令,如果无输入,则使用默认的引导方式加载。DSP操作系统镜像加载流程如图1所示。

在SHELL界面用户可以完成以下功能:

(1)配置操作系统,包括操作系统的物理地址空间、虚拟地址空间,需要引导的核的个数等,引导程序可根据这些参数正确的加载操作系统;

(2)配置硬件,可配置的硬件包括网卡、SRIO、PCIe的参考频率、发送和传输通道的参数、工作模式、波特率、板卡上的交换芯片、PHY芯片、DDR等。在加载过程中,根据这些参数启动外设,从而将镜像文件读入到芯片内部;

(3)配置环境参数,包括主机和目标机的IP地址、子网掩码、网关信息、SRIO端口号、PCIe端口号、镜像文件名称等,如果从存储器启动,还可设置操作系统镜像文件在存储器上的偏移等;

(4)配置加载方式,目前可支持的加载方式有网卡、SRIO、PCIe、SPI、EMIF等,用户可根据当前的硬件特点选择任何一种方式加载;

(5)加载操作系统,读取用户配置的信息,根据当前的启动方式加载操作系统,如果用户未设置,会使用默认的方式(EMIF接口)加载,因为在系统正式运行后,以EMIF方式加载为主。

在板卡外设启动后,RBOOT首先会读取ELF文件的文件头,从文件头中解析出程序头( Program Header)、段头(Section Header)和操作系统入口地址( Entry point address)的信息。根据这些信息将ELF文件中的数据复制到内存地址并进行校验。

在复制数据段到内存的过程中,需考虑操作系统的物理地址和虚拟地址的转换,如果读到的是虚拟地址空间,需要计算出物理地址,并将数据复制到真实的物理地址中,这是和无操作系统镜像加载最显著的区别。

当所有的数据复制完成并成功通过校验后,跳入到操作系统镜像的入口地址,并运行操作系统。

6 实验结果

RBOOT实现了自动加载操作系统镜像程序,支持多种加载方式。实验结果表明该引导程序能够满足加载方式多样化的需求,可以从网络( TFTP)、SRIO、PCIe、SPI、EMIF等加载操作系统镜像,且加载过程中用户无需更改镜像文件的格式。

除了多种功能外,还对加载时间进行了测试,测试使用相同的镜像文件,大小为1.2Mbytes,程序的代码段放在DDR上,8核同时加载。实验结果表明,加载时间优于传统的JTAG加载以及RBL的网络等加载方式,具体的实验数据参见表1。

某些特定领域对多节点DSP的加载时间有特殊要求,如多个节点(64或128个)同时加载,必须在很短的时间内通过网络将操作系统完全加载成功,并且达到可用状态。实验结果表明,RBOOT可以用并行化的方式从TFTP服务器加载程序,完全满足多节点同时加载的性能指标。

7 结束语

RBOOT作为一款可配置硬件参数和操作系统参数DSP的引导程序,非常适合于国产DSP操作系统的引导。和传统的引导方式相比,不仅性能上有了显著提高,而且提供了灵活的启动方式,对于提高开发效率,缩短产品的研制周期有非常重要的意义。

参考文献

[1] TMS320C6678 Multicore Fixed andFloating-Point Digital SignalProcessor

(SPRS691E). TI

Inc. http://.2 014.

[2]Key Stone Architecture DSP BootloaderUser Guide (SPRUGY5C). TI Inc.http://www. ti. com. 2013.

[3]牛金海.TMS320C66x KeyStone架构多核DSP入门与实例精解[M],上海交通大学出版社,2014.

推荐访问: 程序设计 引导 操作系统 TMS320C6678 DSP