论文网首页|会计论文|管理论文|计算机论文|医药学|经济学论文|法学论文|社会学论文|文学论文|教育论文|理学论文|工学论文|艺术论文|哲学论文|文化论文|外语论文|论文格式
中国论文网

用户注册

设为首页

您现在的位置: 中国论文网 >> 计算机论文 >> 计算机应用论文 >> 正文 会员中心
 计算机应用论文   计算机理论论文   计算机网络论文   电子商务论文   软件工程论文   操作系统论文   通信技术论文
如何通过网络接口实现DSP片外Flash在线系统编程
摘要:文章针对传统设计采用rs232作为数据传输手段而造成的速度过慢的问题,设计了一种通过网络接口,使用一种特殊的udp包对bf531片外flash在线系统编程的方案,并给出了在系统编程的具体步骤和实现结果。实践证明该方法无须实现tcp/ip协议栈,速度快,体积很小,很好地解决了以dsp为核心的应用系统软件的维护和升级问题。
关键词:bf531;flash;网络接口;isp;udp
 
  在以dsp为核心的现代电子设备中,通常将可执行代码存放在flash中,设备启动的时候,dsp通过引导加载机制将flash中的代码转移到高速存储器中运行。flash在系统编程(isp)是指以在不改变硬件环境的条件下,在线将程序代码(固件)下载到flash中,从而方便地实现系统软件的调试和升级。bf531是adi公司生产的一款高性能dsp。adi公司在其软件vdsp下提供了通用的在系统编程工具“flash programmer”,但是该工具需要使用jtag接口,并且需要专用仿真器。另外一种方法是采用rs232作为通信接口,通过一段引导程序来进行flash的在系统编程,缺点是速度很慢。由于目前大多数电子仪器都已经具有网络接口,本文设计了一种通过网络接口进行flash在系统编程的方案。采用的网络接口芯片为常见的dm9000a,由于网络通信中常见的tcp/ip协议栈过于庞大,本文中未使用协议栈,而是设计了一种简单的实现方法:直接构建含特殊标记头的udp广播包来代替。
  一、bf531的flash启动加载过程
  ldr文件是最终烧写到flash上面的程序文件,可以有多种格式。WWW.11665.CoM这里,我们生成的ldr文件是二进制格式,ldr文件分为多个块,每个块都分为一个“block”和一个10字节的“head”。在“head”中,头四个字节表示块应加载在bf531地址空间的地址,后四个字节表示“block”的大小,最后两个字节表示块的属性。
  bf531芯片本身已经提供了4种启动代码加载方式,通过启动模式引脚bmode来选择,本设计中将该引脚设置为最常见的“01”模式,即“从8/16位的flash/prom启动”模式。
  bf531内部有一个bootrom区,用以存放“引导核”, bf531启动的时候会先运行该引导核,自动将从flash起始地址0x2000000开始的ldr文件分块按照用户的要求分别加载到片内ram和sdram中。加载完毕后,引导核会修改程序指针pc,使之为片内ram的启动地址0xffa08000,启动用户自己的应用程序。
  二、总体设计
  需要设计一个bootloader程序和一个与之配合的上位机程序,并将bootloader烧在地址0x20000000处。dsp启动后,“引导核”会自动启动该程序,bootloader程序延时判断上位机是否发出了连接命令。如果有,进入更新固件模式,可以进行flash的烧写;否则,则进入正常启动模式,用以加载并执行用户程序。
  (一)bootloader与用户程序
  根据上面所述,启动的顺序是:“引导核”自动启动bootloader,运行完成后再加载运行用户程序。所以bootloader程序应该独立于用户程序,因为bootloader一般不需要更新,而且,在系统编程出现意外的时候,不会导致bootloader被破坏。由于bootloader需要在启动的时候就运行,所以应该事先通过jtag使用仿真器将其烧写到地址0x20000000处。而对于常用的nor flash,编程的时候会先把相应的整个扇区擦除,所以为了方便编程,应该使用户程序的ldr文件的起始烧写地址固定,并且为一个扇区的起始地址,本设计中固定为0x20004000。
  (二)网络通信协议设计
  嵌入式仪器一般资源都比较少,所以bootloader体积应该设计的尽量的小。最常用的网络通信协议为tcp/ip协议栈,虽然功能强大,但是体积过于庞大。考虑bootloader只需要网络接口完成最简单的通讯功能,而且通信量很小,本文设计了一种简单的方法:直接构建含特殊标记头的udp广播包。
  详细的实现方法:上位机端发送数据的时候,在普通的udp包的“payload”区加上一个自定义字符串的“标记头”,并定义为广播包,发送。bootloader端接受时采用“杂散模式”接受,直接分析网络芯片dm9000a接受到的数据,如果发现是udp包并且具有自定义字符串的“标记头”,则接受,否则,抛弃。相反,bootloader端发送数据的时候,按照udp包标准格式直接手动填充一个完整的udp广播包,并加上“标记头”,上位机接受的时候,按正常接收方式,即可根据“标记头”判断是否是bootloader传出来的包。
  三、bootloader设计
  如图1所示,bootloader功能上可以分为4个模块,主控制模块,数据通信讯模块,flash操作模块,用户程序加载启动模块。bootloader运行的时候,先向上位机发出握手请求,等待1秒,如果有握手回应信号则证明有上位机相连,bootloader进入命令等待状态,如果没有,则直接进入用户程序加载启动模块。当一个完整的上位机命令被接收到后,bootloader解析命令,并执行相应的功能。执行完相应的功能后会再发出握手请求(除非命令为退出命令),等待上位机握手,周而复始。
  (一)主控制模块
  实现功能:实现bootloader与上位机的握手,解析并执行上位机发出的命令,并总体控制各个模块。
  (二)数据通信模块
  实现功能:控制网络控制芯片dm9000a进行数据输入和输出。主要需要实现数据接收功能,数据发送功能,dm9000a芯片的初始化和复位功能。

 本设计中采用了上文中已经叙述的特殊的网络通信方式。设计数据发送函数时,先定义一个udp的标准广播包的模版,在udp包的“payload”区开始的地方添加好自定义的“标记头”,发送的时候直接在该模版的“payload”区后上加入准备传送的数据,通知dm9000a发送即可,为了避免计算校验位造成速度减慢,本设计中将udp头的校验位设置为0,即不校验。设计数据接收函数时,只需要先读取“payload”的头几个字节,判断是否为定义的“标记头”,如果是,则去掉该“标记头”和udp包的头,获得真正需要的数据,如果不是,则抛弃。
  (三)flash操作模块
  实现功能:实现一些常用的操作flash功能接口函数,供主控制模块使用。主要需要实现的功能函数有:flash写函数,flash读函数,flash块擦除函数,flash解锁函数,flash校验函数。
  普通的nor flash编程前需要将相应的扇区解锁并擦除,所以如果该扇区有别的数据,会被一并擦除。为了能自由地编程任意地址的数据,本设计中特别定义了一个1个块大小的缓冲区,暂存原flash块里面的数据,编程的时候将更新数据和原数据进行合并再后在一起编程进入flash,解决了该问题。
  (四)用户程序加载启动模块
  实现功能:完成类似bootrom区“引导核”的工作,即加载起始地址为0x20004000的用户程序ldr文件到片内ram或sdram,然后清空所有相关堆栈和寄存器,最后修改pc指针为0xffa08000,开始执行用户程序,所以该程序应该使用汇编编写。adi在vdsp下提供“引导核”的示例程序,可以参考该程序设计本模块。需要注意的是本模块绝对不能被加载的用户程序覆盖掉,所以不能把这段程序放到片内ram,而应该把这段程序放在sdram的最后,保护起来。
  四、上位机设计
  本设计中上位机在windows xp操作系统下采用ni公司的labwindows/cvi 8.0开发设计,如图2所示。需要实现通过udp包与bootloader的通信和程控面板的显示。由于cvi8.0自身没有带udp相关驱动,需要加入windows的api库wsock32.lib进行开发。调用该库进行socket编程,设计好udp的读、写、打开、关闭函数。在设计发送/接收函数的时候应该加上或去掉定义的“标记头”。 五、实现结果
  本设计已经在使用dsp芯片bf531和网络控制芯片dm9000a的目标板上成功实现。完整的实现步骤如下:先将bootloader生成ldr文件,再将其通过仿真器烧写到0x20000000,使用交叉双绞线将目标板与电脑相连接,在电脑上打开上位机,给目标板上电,此时上位机与目标板进行握手,如果成功,面板会显示“已经成功连接目标板”,选择需要烧写的用户程序的ldr文件和烧写地址,点击开始烧写即可。
  六、结语
  本文提出了一种通过特殊的udp广播包进行flash的在系统编程的方法,并成功实现。该方法抛弃了tcp/ip协议栈,因而大大的减小了自身的体积,而且采用网络接口,使系统编程的速度得到了极大的提升。很好地解决了目标系统的系统程序升级和调试的问题。
参考文献
 [1]analog devices,inc.adsp-bf533 blackfin processor hardware reference,2007.
 [2]analog devices,inc.visualdsp++4.5 loader and utilities manual,2006.
 [3]analog devices,inc.adsp-bf533 blackfin booting process,2006.
 [4]lvzhiyong.auto-load and auto-update the dso’s software,2007.
  • 上一个计算机论文:
  • 下一个计算机论文:
  •  作者:未知 [标签: 网络接口 实现 在线 系统 编程 ]
    姓 名: *
    E-mail:
    评 分: 1分 2分 3分 4分 5分
    评论内容:
    发表评论请遵守中国各项有关法律法规,评论内容只代表网友个人观点,与本网站立场无关。
    作文教学中如何利用乐曲激发学生想象力
    浅析如何培养初中生的数学能力
    谈如何提高初中数学作业的有效性
    浅谈如何设计住宅窗户
    浅析中老年人如何运用慢跑进行科学锻炼
    浅谈小学语文教学中如何实现学生的人文性发
    如何在牧区小学语文教学中培养学生的道德品
    论如何指导小学数学学习
    浅谈如何建立良好的师生关系
    如何上好中职的计算机语言课
    如何提高压力容器设计质量
    新形势下民营企业如何做好企业思想政治工作
    | 设为首页 | 加入收藏 | 联系我们 | 网站地图 | 手机版 | 论文发表

    Copyright 2006-2013 © 毕业论文网 All rights reserved 

     [中国免费论文网]  版权所有