多核DSP Boot load 代码加载方法研究
引言
无线通信产业不断推进创新,像WCDMA、WiMAX、MIMO和4G都需要增强的性能.性能增强,提供更大通信带宽的同时意味着越来越大的数据流量.多内核DSP强大的处理能力,兼具FPGA的扩展特性和阵列优点以及DSP的相似性和效率。提供了一种高效、易于开发的解决方案,倍受设备商的青睐.而无线协议标准从2G的GSM到3G的WCDMA,冉到4G的LTE,其协议标准的不断更新,以及运营商、设备商对低硬件成本的要求,需要实现一种平滑的协议标准软升级方案,即不改变硬件平台就可实现协议标准的升级.TI公司推出的3内核DSP芯片TCl6488以其强大的数据处理能力,同时支持多种代码加载方式,在满足数据处理要求的同时,支持网络式代码加载,正迎合了这种软升级需求。
1 协议介绍
TI公司推出的DSP芯片TCl648718 (Faraday)具有3个内核,每个内核工作频率均为1GHz.其支持的boot load模式有12C EEPROM、EMAC(以太网口)、SRIO(Serial Rapid IO.即串行快速10)i种模式[3].其中EMAC支持IOM/IOOM/I 000M bit/s传输速率,SRIO支持1.25G/2.5G/3.125G bit/s传输速率.以太网口EMAC支持IPV4,因此可以实现远程、快速的加载代码.SRIO支持内存代码的直接读写,外部主机可以将DSP内存视为本地内存进行直接的读写.SRIO boot load模式时,外部主机直接写DSP本地内存.其3.125G biffs的线上速率,可以达到2.5G bit/s的传输带宽,效率高达80%,加载代码速度极快.采用EMAC和SRIO相结合的方式可以实现一点到多点的快速代码加载。
1.1 EMAC boot load传输协议
以太网口EMAC支持的拓扑结构有星型、总线型、树型、混合型.其boot load帧格式分为以下几个部分分别讨论:DIX Ethernet、IPV4、Boot Table Frame. Header、Boot Table Frame. Payload。如表1所示。
(1)DIX Ethenet:14 bytes
该部分占用14 bytes,分别为6 byte8的DMAC。目的MAC地址、6 bytes的SMAC.源MAC地址和2 bytes的类型参数Type.该部分固定为Ox0080.目的MAC地址(DMAC)为DSP芯片自身的MAC地址.源MAC地址(SMAC)为主机MAC地址。
(2)IPV4
支持的IP协议类型为IPV4,可选长度为20 bytes或84bytes.本文中采用20 bytes。
1.2 SRIO协议
TCl6488支持的SRIO协议1.2版本link rate速率为1x, 2x,4x。即1.25G,2.5G,3.125G bit/s.支持的拓扑结构有星型、环型等。
SRIO协议规定有两种传输方式:Direct IO与Message方式.当DSP处于SRIO boot load模式时,利用外部引脚进行配置其NODE ID,根据配置的不同,采用Direct IO方式对不同NODE ID的DSP内存直接进行读写,将代码直接写入到DSP内存.类似于外部主设备将DSP内存视为自身内存进行写操作,以此完成boot load.当代码加载完毕时发送Doorbell中断到不同NODE ID的DSP主核(即核0).DSP立即从boot模式跳转到正常模式。执行加载的代码。
2 现有方案分析
代码加载主要依靠DSP芯片的各个接口实现.TI公司C64x系列主要接口有12C、HPI、EMIF等接口,C64x+系列主要接口有12C、EMAC、SRIO等。
I2C传输速率为lOkbps到400kbps,外接EEPROM,常用于固化代码的boot load,不利于升级.
HPI接口有效带宽往往最多只能达到20~30Mbps.操作较复杂,且不易组网.在多核DSP系列里已经去掉HPI接口.
EMAC接口支持10M/100M/1000Mbps三种速率,支持总线形、星形拓扑组网结构.
SRIO接口支持1.25G12.5G/3.125G bps三种速率,支持星形、环形、U形菊花链等拓扑结构.
利用EMAC与SRIO结合的方式可以实现基于IP、可远程控制的局部传输网络,组网灵活可控.
3 原理框图
利用DSP EMAC接口支持IPV4的网络特性,以及SRIO接口使DSP间可以形成的U形菊花链或星形拓扑结构,可以灵活组网。原理框图如图I所示。其中基带处理板与主控板之间由背板连接,主控板通过网线与交换机或路由器连接。主控板与基带板之间组建局域网,由主控板分配IP。远程PC可以通过主控板IP访问到任何一块基带板的CPU。对CPU进行操作,可以对任意一块基带板上的DSP进行代码加载。
4 加载流程
流程图如图2所示。CPU加载DSPl的详细过程说明如下:基带板上电后主控板为背板上各槽位上的基带板的CPU分配IP地址.CPU通过EPLD加载自身程序,与主控板通过SGMII接口获取自身IP地址。远程PC机telnet登录到CPU,下发命令加载CPU底层驱动程序;CPU底层驱动加载成功后,远程Pc下发加载DSP程序命令.以加载DSP1为例,详细说明加载DSP1的过程.CPU加载DSP1时首先给该DSP1复位获取DSP1的MAC地址,成功获取到DSP1的MAC地址后,利用ftp协议从远程PC上获取DSP1的代码,将DSP1的代码存到CPU的内存.此时DSP1一直处于boot load的EMAC加载模式.CPU将DSP1的代码根据EMAC加载协议往DSP1发送代码.当发送完毕代码后,向DSP1发送一包长度为0的加载代码,作为结束包.DSP1根据EMAC加载协议,当收到该包后则从加载模式跳转为正常模式,PC指针从OxOOS00000开始运行.因此对于DSP而言,Ox00800000地址开始的一段空间,必须存放中断向量表.
否则程序将不会正确运行.此时DSP的3个内核同时从Ox00800000开始运行。
加载DSP2至加载DSPn时,首先由CPU根据ftp协议从PC端获取DSPk(k=2?3.n)的代码.根据EMAC发送协议,将DSPk代码发送到DSP1.DSP1收到DSPk的代码后,根据SRIO加载协议加载DSPk的代码.DSPk代码加载完毕后,DSP1向DSPk发送一个SRIO中断。标志加载结束.DSPk响应该SRIO中断。从SRIO加载模式跳转到正常模式,开始从Ox00800000地址开始运行.整个加载过程结束。
5 结束语
通过方案的比较,选择了易于组网,且可控、方便,利于软升级的方案.很方便的设计了TI TCI6488 3内核DSP的bootload程序.完成了DSP系统自举加载.按照该设计思路编制的boot load程序已在WCDMA基站的基带处理板中得到应用,DSP系统能很好的复位及快速、方便的自举加载,更换版本容易,系统运行稳定可靠。
评论