多核DSP Bootloader代码加载方法

发布者:WanderlustGlow最新更新时间:2012-10-22 来源: 21ic关键字:多核DSP  Bootloader 手机看文章 扫描二维码
随时随地手机看文章
   
引言

 

无线通信产业不断推进创新,像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系统能很好的复位及快速、方便的自举加载,更换版本容易,系统运行稳定可靠。

关键字:多核DSP  Bootloader 引用地址:多核DSP Bootloader代码加载方法

上一篇:基于DSP的经济型车床的多功能化数控改造
下一篇:基于DSP的无人值守地面探测系统硬件设计

推荐阅读最新更新时间:2024-05-02 22:23

【飞思卡尔 MC9S12】BootLoader 上位机
本篇讲述BootLoader上位机开发。 源码地址:https://download.csdn.net/download/u010875635/11692122 此上位机采用WPF框架,C#语言开发,支持周立功的CAN设备和ValueCAN。 由于手头上暂时没有硬件,无法实际演示,大家先凑合看示例图。 注意,有很多人操作误区在于,将S19文件选择成了Bootloader,这里应该选择app,就是你自己的应用程序。 Bootloader与App分别占用2个非分页区。 Bootloader: 0xC000-0xFFFF(实际到0xF7FF,保留一个sector给vector table) Applicati
[单片机]
【飞思卡尔 MC9S12】<font color='red'>BootLoader</font> 上位机
C语言PIC18 serial bootloader和C#语言bootloader PC端串口通信程序
  新PIC18 Bootloader   PhsBoot_v3.0是我最新用C语言实现的PIC bootloader, 采用串口通信,适用于PIC18, 并为其用C#写了PC端通信程序PhsLoader_v3.0。PhsLoader_v3.0通过串口按照自定义的通信协定发送数据PhsBoot_v3.0, PhsBoot_v3.0接收数据,按照通信协定解读数据,解读出其中Hex数据,并将其烧录到正确的位置。   通信协定   PIC18单片机端PhsBoot_v3.0和PC端PhsLoader_v3.0之间的通信数据包采用以下协定 STX CMD ADDRL ADDRH ADDRU LEN DATA ... DAT
[单片机]
基于STM32从零写操作系统系列---bootloader
本章主要使用汇编语言编写STM32F103(以下称为“该芯片”)的启动代码。具体结构如图: 启动模式 该芯片可以通过设置BOOT0和BOOT1两个引脚,选择不同的启动方式,正常情况下BOOT0=0,BOOT1=0(0为低电平)。即,芯片将从Flash中加载代码启动。 当芯片上电/复位后,芯片首先从地址0x0000_0000处获取栈地址,然后将地址0x0000_0004处的值赋值给PC寄存器。按照PC寄存器的值,取第一条指令,执行......具体如图: 地址0x0800_0205处的具体代码如图: 简单来说,地址0x0000_0004处存放的是复位处理函数的地址。当上电/复位时,芯片硬件会自动将地址0x0000
[单片机]
基于STM32从零写操作系统系列---<font color='red'>bootloader</font>
基于自编程功能的MCU Bootloader设计
Bootloader是在单片机上电启动时执行的一小段程序。也称作固件,通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用应用程序准备好正确的环境。 Boot代码由MCU启动时执行的指令组成。这里的loader指向MCU的Flash中写入新的应用程序。因此,Bootloader是依赖于特定的硬件而实现的,因此,在众多嵌入式产品中目前还不可能实现通用Bootloader。 Bootloader的最大优点是:在不需要外部编程器的情况下,对嵌入式产品的应用代码进行更新升级。它使得通过局域网或者Intemet远程更新程序成为可能。例如,如果有5 000个基于MCU的电
[单片机]
基于自编程功能的MCU <font color='red'>Bootloader</font>设计
avr bootloader 源码
assembly.s .text SPMCR = 0x57 ;RWW区忙标志,读RWW区允许,允许写程序存储区 ; void write_page (unsigned int adr, unsigned char function); ; bits 8:15 adr addresses the page...(must setup RAMPZ beforehand!!!) _write_page:: XCALL __WAIT_SPMEN__ movw r30, r16 ;move address to z pointer (R31 = ZH, R30 = ZL) STS SPMCR, R18
[单片机]
ATMEGE32在bootloader区对Flash进行读写操作
注明:本程序采用官方的boot库函数进行实验,开发环境是 atmelstudio6( avrstudio6 )。 官方提供了bootloader相关的写入擦除函数。 主函数如下: int main(void) { USARTInit(115200); for (int i=0;i 256;i++) {//此处数据均为00010203形式 if ((i&3)==0) { databuff.databuff8 =0; } else if ((i&3)==1) { databuff.databuff8 =1; } else if ((i&3)==2) { databuff.databuff8 =2;
[单片机]
展望未来 多核DSP技术不仅仅是小把戏
  “多核DSP”也许对大多数人而言并不是个陌生的概念,早在几年前,为了提升性能、降低功耗,在处理器中增加内核已经成为计算和嵌入式处理器产业的标准作法。   然而,正当多内核技术在处理器领域发展得红红火火之时,多核DSP似乎显得不瘟不火,还仅仅停留在无线基础设施应用上。   多核DSP之困   正如多核技术被计算应用广泛采纳一样:以更低的功率提供更高的性能驱使DSP技术必须“一次又一次打破性能藩篱”。“要么是单板面积受限,要么是处理能力受限,越来越多的客户需要更高的处理平台,”德州仪器中国区DSP业务开发经理郝晓鹏对电子工程世界如是说。   用户的需求是多种多样的。在通信基础设施的信号处理中,无论是语音用户、数据用户还是多
[嵌入式]
使Arduino支持ATMEGA 168P(烧录BOOTLOADER
最近在做一个小玩意,因为第一个DEMO是在Arduino Pro Mini上完成的,使用各种模块用漆包线连接搭起来的,决定还是继续在使用Arduino框架的基础上制作完整的PCB板。 在选购单片机芯片时,发现ATMEGA168P 比 ATMEGA328P便宜一些,在Arduino IDE上似乎可以支持,IDE芯片选型上有ATMEGA168的选项,虽然DEMO是基于ATMEGA328P的,但是Arduino上更换芯片,程序并不需要进行修改,于是就购买了ATMEGA168P,(真是给自己挖了个坑)。 芯片到了以后,因为Arduino程序一般是串口下载的,我画的PCB板上也只留了串口的接口(其实是可以使用ISP下载的,使用11、
[单片机]
使Arduino支持ATMEGA 168P(烧录<font color='red'>BOOTLOADER</font>)
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved