多核DSP的以太网远程程序加载方法
扫描二维码
随时随地手机看文章
摘要:为了解决工业远程控制设备的软件更新带来的成本和效率问题,在研究了以TMS320C6670为核心的DSP系统的结构和程序启动的基础上,提出了基于以太网的DSP程序远程加载方法。该方法主要基于BOOTP协议的广播和以太网UDP协议实现。实践表明,该加载技术灵活可靠,为远程控制系统的调试和更新提供了便利。
引言
随着科学技术的不断进步,网络通信技术和DSP技术飞速发展,许多智能仪器仪表、工业远程控制设备等能够接入到互联网,实现网络化、智能化的管理和控制。在这些设备中,有很多是以DSP为核心的设备,这些设备的程序代码的引导启动是一个很重要的问题。传统的DSP设备的程序加载方法是通过硬件仿真器来完成的,但在实际工业应用中,这种方法存在仿真器携带不便携和设备软件维护更新不方便等缺点。因此基于网络的DSP软件更新就是一种很好的解决方案。
文中介绍了DSP程序加载的基本原理,以TI公司的多核DSP TMS320C6670为例,实现了一种基于以太网BOOTP协议的DSP程序加载技术,利用网络通信实现DSP程序的动态加载,提高软件更新效率。
1 原理
这里使用传统的PC机作为下载服务器,以TMS320C6670为核心的DSP设备作为客户机,客户机启动后,不知道任何网络信息,需要通过TCP/IP协议的相关协议IP、UDP、BOOTP提供的功能来实现信息的传播。客户机通过BOOTP协议获得所需相关网络信息,然后通过UDP协议包获取待执行的引导程序,并运行之。
1.1 IP协议和UDP协议
IP(Internet Protocol,互联网协议)是TCP/IP中网络层协议。UDP(User Datagram Protocol,用户数据报协议)是TC尸/IP传输层的无连接协议。由于完整的TCP/IP协议将占用大量系统资源,所以在高可靠的局域网中,可以采用UDP协议发送数据包。
1.2 BOOTP协议
客户机启动时,需从网络上获取三种信息:本机的IP地址、下载服务器的IP地址、待下载的运行程序。
BOOTP(BOOTstrapping Protocol)能为无盘机获得启动所需的所有信息。在发送BOOTP请求之前,BOOTP客户既不知道自己的IP地址,也不知道服务器的IP地址,BOOTP必须通过广播方式发送请求。BOOTP服务器收到请求后,根据以太网地址,从下载数据库中查出相应应答表项,构成BOOTP响应,再应答之。对于服务器而言,此时客户机的IP地址已经知道,可以直接应答,不必用广播方式。
BOOTP报文交易就是请求,响应一个来回,交易成功与否只有客户知道,因此当服务器关闭或网络工作不正常时,将导致交易出错或报文丢失,客户需进行重传处理(每3 s重传一次)。当有多个响应(多服务器响应或BOOTP应答延时),可设一个标志,客户只接受并处理第一个响应,其余都抛弃。
1.3 BOOTP包格式
BOOTP包格式如图1所示。
包操作码/消息类型:1=BOOTREQUEST(引导请求),2=BOOTREPLY(引导应答)。硬件地址类型:1=10M以太网。硬件地址长度:6是10M以太网。跳跃点数:用于跨网引导,由路由器使用。事务ID:一个随机数,用来匹配引用请求和应答。客户端引导所用秒数:由客户端填写,客户端引导开始后的过去的秒数。客户端IP地址:BOOTP客户将此置为0,要求服务器应答本客户的IP地址。你的IP地址:BOOTP客户将此设置为0。服务器IP地址:由服务器在引导应答返回。网关IP地址:用于跨网引导时使用。客户端硬件地址:客户填充本机MAC地址。服务器主机名:用于跨网引导时使用。引导文件名:BOOTP请求置为0,服务器应答时将由BOOTPTAB填充一个特定的运行程序路径名。标准选项域:此域用于BOOTP客户从服务器获得一系列标准选项,例如网管IP地址、网关IP地址、DNS域名服务器IP地址、客户机名等。
1.4 以太网数据包格式
以太网请求包格式如图2所示。
DIX以太网中包含目标MAC地址(一般为FF:FF:FF:FF:FF:FF)和源MAC地址(即设备本身MAC地址)。IPV4中包含版本号、长度、协议、校验和及源地址IP和目标地址IP(这里IP地址均为0.0.0.0)。UDP中包含源端口、目标端口、长度及校验和。
以太网引导包格式如图3所示。
2 硬件设计
系统采用多核TMS320C6670 DSP芯片作为主控芯片,其内置千兆网络协处理器,所以外围电路只需增加物理层芯片。结构框图如图4所示。
3 下载实现过程
客户机:当硬件复位时,在RESET信号上升前,配置好开发板上的拨码开关SW3、SW4、SW5、SW6,确定TMS320C6670芯片为以太网引导方式。RBL(ROM BootLoader)配置SerDes,SGMII和PASS准备接收来自以太网接口的引导包。RBL配置发送通道发送以太网请求包(每3 s发送一次)。
服务器即PC机端用Wireshark软件作为抓包软件,以太网请求包广播到服务器端,见图5,从中可以看出间隔约3 s多客户机广播一次BOO TP包。
图6为以太网请求包主要内容,与原理中描述的以太网请求包格式是一致的,包含DIX以太网、IPV4、UDP协议和BOOTP协议包。
图7为接收到的BOOTP包内容。
服务器此时收到了BOOTP协议包,获得了客户机的MAC地址,此时要进行ARP(Address Resolution Protocol,地址解析协议)地址绑定。在完成上面两步后,通过上位机通信程序将帧文件发送给客户机。图8为截取的UDP发送图。
图9为以太网引导包内容。
当帧文件发送完毕后,客户机根据接收来的数据进行处理,找到数据部分,进行启动加载。
在CCS开发环境下生成的目标文件是*.out,即通用目标文件格式(COFF)。该文件可以在CCS开发环境下通过仿真器下载到DSP目标板中运行调试,但该代码文件并不是DSP中实际运行的程序代码,需用Hex工具(hex6x.exe)进行转换成引导表文件,然后再用bconvert64x.exe和bootpacket.exe下具将引导表文件转换成以太网引导格式数据文件,并封装成帧文件。
结语
文中介绍了一种基于以太网的DSP引导程序加载技术,该技术在多核高性能DSP系统的程序引导及系统的软件更新等工程应用领域具有独特的优势和较好的应用前景。目前已成功运用在网络视频监控系统的软件更新。实践表明,该引导加载技术灵活可靠,为远程控制系统的调试和更新提供了便利。