欢迎光临112期刊网!
网站首页 > 论文范文 > 计算机论文 > 计算机应用 > 如何通过网络接口实现DSP片外Flash在线系统编程

如何通过网络接口实现DSP片外Flash在线系统编程

日期:2023-01-24 阅读量:0 所属栏目:计算机应用


摘要:文章针对传统设计采用rs232作为数据传输手段而造成的速度过慢的问题,设计了一种通过网络接口,使用一种特殊的udp包对bf531片外flash在线系统编程的方案,并给出了在系统编程的具体步骤和实现结果。实践证明该方法无须实现tcp/ip协议栈,速度快,体积很小,很好地解决了以dsp为核心的应用系统软件的维护和升级问题。
关键词:bf531;flash;网络接口;isp;udp

  在以dsp为核心的现代电子设备中,通常将可执行代码存放在flash中,设备启动的时候,dsp通过引导加载机制将flash中的代码转移到高速存储器中运行。flash在系统编程(isp)是指以在不改变硬件环境的条件下,在线将程序代码(固件)下载到flash中,从而方便地实现系统软件的调试和升级。bf531是adi公司生产的一款高性能dsp。adi公司在其软件vdsp下提供了通用的在系统编程工具“flashprogrammer”,但是该工具需要使用jtag接口,并且需要专用仿真器。另外一种方法是采用rs232作为通信接口,通过一段引导程序来进行flash的在系统编程,缺点是速度很慢。由于目前大多数电子仪器都已经具有网络接口,本文设计了一种通过网络接口进行flash在系统编程的方案。采用的网络接口芯片为常见的dm9000a,由于网络通信中常见的tcp/ip协议栈过于庞大,本文中未使用协议栈,而是设计了一种简单的实现方法:直接构建含特殊标记头的udp广播包来代替。
  一、bf531的flash启动加载过程
  ldr文件是最终烧写到flash上面的程序文件,可以有多种格式。这里,我们生成的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处。而对于常用的norflash,编程的时候会先把相应的整个扇区擦除,所以为了方便编程,应该使用户程序的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库进行开发。调用该库进行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. 本文链接:http://www.qk112.com/lwfw/jsjlw/jisuanjiyingyong/244835.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学