DSP具有高速的计算能力与丰富的外设接口,被广泛应用于嵌入式系统中。很多基于DSP的嵌入式系统被配置于苛刻的环境或偏远地区,当需要软件升级或程序更新时,人员无法进入或很难到达相应环境中,必须采用远程加载技术来完成升级和更新。以太网具有传输距离远、传输速率高的优点,是远程数据传输的良好载体,目前主流的DSP芯片均可扩展以太网接口。本文结合以太网技术,以TI公司的DSP芯片为例对DSP远程加载技术进行了研究。
DSP远程加载的核心思想包括3个方面:
① DSP能够收发远程控制端数据;
② DSP能够更新存放用户程序的Flash区域;
③ DSP能够获取用户配置选择是否需要远程加载。
基于上述3点,本文对DSP网络接口技术、DSP与Flash接口及驱动技术、远程加载配置技术进行了研究。
1 远程加载的硬件基础
1.1 DSP以太网接口技术
(1) 通过专用接口芯片扩展以太网接口
在TI公司早期的DSP中,如C5000、C6201、C6701等系列,芯片内部没有集成专用的以太网控制器,无法直接与以太网进行通信,必须通过DSP的EMIF(外部存储接口)与专用接口芯片连接来扩展以太网。这些专用芯片有CP2200、MC9S12NE6等。图1给出了TMS320C5410与CP2200的接口示意图[1]。
图1 TMS320C5410与CP2200的接口示意图
(2) 通过片内专用接口扩展以太网接口
随着DSP制造工艺的提高,很多DSP芯片内部已经集成了以太网控制器,如DM642、C6455、C6416等,只需要外接物理层芯片(如RTL8019AS、82540EM等)即可扩展以太网接口。图2给出了DSP通过片内专用接口直接扩展以太网示意图。
图2 DSP通过片内专用接口直接扩展以太网示意图
1.2 可编程Flash芯片
TI公司的高速DSP(C5000、C6000系列)均没有片上非易失性存储器,必须将程序保存在外部非易失性存储器中。通常采用可编程Flash存储器对DSP程序进行存储和加载,常用的Flash芯片有Intel公司的E28Fxx系列和AMD公司的AM29xx系列。图3给出了DSP与Flash的典型接口电路[2]。
图3 DSP与Flash的典型接口电路
1.3 远程运行模式配置
DSP在上电后,需要明确知道当前是处于程序更新模式还是处于程序正常运行模式,这就需要采用外部硬件控制电路,对DSP的加载进行配置,
图4 远程DSP配置加载模式电路示例
图4给出了一种远程DSP配置加载模式电路的示例。
用户通过远程配置DSP的GPIO接口为高电平或低电平来告知加载程序是否执行远程加载,在实际应用中具体实现可由用户自己定义。
2 远程加载的软件基础
2.1 NDK简介
在DSP上直接编写网络接口程序非常复杂,为了屏蔽底层细节,使用户可以将资源重点投入到应用程序的开发中,TI公司提供了网络开发套件NDK( Network Developer’s Kit)。NDK提供了从DSP底层驱动到TCP/IP" target="_blank">IP协议的整体解决方案,支持常规的TCP/IP服务,是实现DSP以太网扩展的重要支撑工具。图5给出了NDK的系统结构图[3]。
图5 NDK系统结构图
2.2 Flash驱动程序
Flash芯片需要专用的指令对其进行操作,主要指令包括擦除、读、写、复位等,根据这些操作指令就可以设计Flash驱动程序,图6给出了C6000系列的DSP对AM29F040进行编程的流程[4]。其中EMIF_Base_Addr为DSP外部存储接口地址;Prog_addr为目标Flash编程地址;Prog_data为目标Flash编程数据。
图6 Flash编程流程
3 基于网络的远程加载方法
3.1 远程加载流程
图7给出了典型的DSP加载方式以及程序在Flash中的存储方式,二次加载程序直接将用户程序加载到DSP中,无需额外处理[5]。
图7 典型的DSP加载方式
采用图7中所示方式无法实现远程加载,可以对典型加载方式进行扩展,增加网络接口功能,更改Flash存储方式,从而实现远程加载。DSP远程加载方式如图8所示。
图8 DSP远程加载方式
图8所示的远程加载步骤如下:
① 上电后DSP运行二次加载程序;
② DSP读取外部控制电路状态,判断是否处于程序更新模式;
③ 如果是更新模式,跳转到第4步,否则跳转到第5步;
④ DSP从Flash中加载网络接口程序到DSP片内并运行,通过网络接口接收远程数据,将接收到的数据烧写到用户程序区域完成软件的更新。
⑤ DSP加载Flash中用户程序到DSP片内,正常运行程序。
为了配合远程加载流程,需要对图7所示的Flash存储结构进行扩展,在图8中同时给出了用于远程加载的Flash存储结构。与图7中的典型Flash存储结构相比,远程加载的Flash存储结构在二次加载程序和用户程序之间增加了网络加载程序,该区域仅对二次加载程序可见,用于存放远程加载程序。当需要远程加载时,二次加载程序就调用网络加载程序,采用DSP远程加载方式;当无需远程加载时,二次加载程序直接调用用户程序,采用典型的DSP加载方式。
在设计存储结构时需要注意两点:网络加载程序是不能被改变的,必须使用固定大小的存储区域;网络加载程序区域应放在用户程序区域前,便于用户程序的扩展。
3.2 网络加载程序设计
网络加载程序运行流程是远程加载的核心部分,如图9所示。
图9 网络加载程序运行流程
网络加载程序运行流程主要包括:
① 加载NDK网络硬件驱动,配置DSP片上硬件以太网控制器,包括网络速率、单双工传输方式以及MAC地址配置等。
② 启动TCP/IP服务。实现配置DSP的网络IP地址、绑定TCP通信端口、开始接收远程数据等功能。
③ 接收远程数据。从以太网接收远程数据并进行数据正确性和完整性校验,将远程数据存入到数据缓存区中,当缓存区满后启动Flash更新程序。
④ Flash程序更新。Flash首先擦除当前用户区域,然后将数据缓存区中的数据烧写到用户区域中。
⑤ 判断远程数据是否接收完成,如果未完成,跳转到步骤③;如果完成,进行步骤⑥。
⑥ 完成数据更新后,跳转到二次加载程序,重新加载用户程序。
需要注意的是,当网络加载程序完成用户程序更新后,远程控制端必须及时将DSP加载模式切换到直接加载用户程序模式。
结语
本文研究了基于网络的DSP远程加载技术,介绍了远程加载需要的硬件基础和软件基础,并给出了典型设计;然后从远程加载流程、Flash存储模型设计以及网络接口流程设计三个方面研究了具体的远程加载方法。本文提出的方法不仅能够解决基于DSP的远程嵌入式系统的加载问题,同时为基于其他处理器的远程加载提供了思路,具有较好的工程价值和广阔的应用前景。
评论
查看更多