使用嵌入式处理器对可编程逻辑器件重编程

2010-01-11 22:08:03来源: 吴进

  1 引言

  在嵌入式系统里除了嵌入式处理器外还会经常使用到可编程逻辑器件,有些可编程逻辑器件在被焊接到印制电路板上之后还可以对其程序进行更新,这种特性称之为“在系统可重编程能力”(In SystemReprogrammability,ISR)。在单板开发阶段,通常使用下载电缆通过IEEE Standard 1149.1 JTAG接口对可编程逻辑器件重编程。在产品原型及制造阶段,单板上的JTAG接口很可能出于产品外形及内部结构设计的考虑已经无法与下载电缆相连接,此时将无法通过下载电缆对可编程逻辑器件重编程。基于嵌入式系统的产品通常对外提供串行接口或以太网接口,这些接口由嵌入式处理器来控制[1] ,因此可以通过这些接口将可编程逻辑器件的更新程序发送到处理器,由处理器对可编程逻辑器件重编程。

  2 实现方法

  2.1 软件方面

  串行接口由于协议实现简单、占用资源少而被嵌入式系统广泛使用,只需要使用串行接口连接线将主机的串行接口与产品的串行接口相连接,通过主机上的串行接口通讯软件将更新程序发送给处理器即可,文件传输协议一般采用Xmodem协议;而对于基于嵌入式系统的网络产品而言,由于自身提供以太网接口,而且操作系统内嵌TCP/IP协议栈,因此可以使用以太网接口将更新程序发送给处理器,文件传输协议一般采用TFTP协议,嵌入式系统运行TFTP服务器程序,主机上运行TFTP客户端程序[2] 。

  嵌入式处理器通过串行接口或以太网接口接收到的可编程逻辑器件的更新程序是一种Jam文件,使用类似于Altera公司Quartus II development tool的开发工具根据Jam标准和测试语言(Jam Standard Test andProgramming Language 以下简称Jam语言)的要求由Programmer Object File (*.pof,文件后缀名为pof)一类的目标文件转换生成[3] 。Jam文件是一个ASCII文件,文件中包含了对可编程逻辑器件进行编程的所有信息,包括编程算法和数据,详细介绍如下:

  (1)“注解字段”部分存储了Jam文件的相关信息,包括可编程逻辑器件的名称,Jam文件的创建时间,使用的Jam语言的版本等等。

  (2)“变量声明/初始化”部分由编程/校验的数据和Jam文件用到的一些变量声明组成。

  (3)“算法部分”包含了对可编程逻辑器件编程需要用到的命令和代码,包括空白检查、擦除、编程和校验等等所有可以在可编程逻辑器件上执行的功能。在代码中可以使用分支或循环结构。

  嵌入式处理器在接收到Jam文件之后通过运行一个Jam Player程序来解析这个Jam文件,翻译文件中每一条指令,并对JTAG端口进行数据的读写操作,从而完成对ISR可编程逻辑器件程序的更新工作。Jam Player是一个C语言程序,其main主程序执行所有的基本功能,包括对Jam文件内容的解析,指令的翻译等,这部分内容对于所有的嵌入式系统和Jam文件来说都是一样的。而Jam Player的I/O功能,包括I/O管脚的寻址、延时程序、文件的I/O以及操作系统相关的功能都包含在jamstub.c文件里,通过修改这个文件Jam Player可以适用于任何系统结构。当Jam Player接收数据的时候,jamstub.c能够从Jam文件取回数据,或者从TDO管脚移位读取数据。jamstub.c也能将处理过的JTAG数据发送到3个JTAG管脚(TDI、TMS和TCK),将出错消息和相关信息返回给调用程序。升级ISR可编程逻辑器件的程序只需要改变Jam文件。

  Jam Player通过一个jam_jtag_io函数(int jam_jtag_io(int tms_tdi))来控制对JTAG接口的读写操作。每次调用这个函数的时候,JTAG的TMS和TDI输出信号将被设定为需要的值,而TDO输入信号将被采样,值将被返回,之后TCK时钟信号将产生一个下降沿。tms_tdi参数包含3比特信息,分别指示TMS信号和TDI信号的状态以及是否需要读取TDO的输出(如果不需要用到TDO的值则可以跳过对TDO的读取操作)。最低位比特代表TMS的值,第2位比特代表TDI的值,第3位比特指示是否读取TDO:如果置位,则必须读取TDO的值,否则不需要。如果TDO为低电平,返回零值,高电平则返回非零值。如果没有对TDO进行读取也将返回零值。

  2.2 硬件方面

  嵌入式处理器与JTAG 器件连接的方法有两种,一种是直接将嵌入式处理器与JTAG 器件连接起来,这种方法处理器需要有专门四个管脚用于JTAG 接口,节省了电路板空间的同时却占用了处理器的四个管脚;另一种方法通过一个接口逻辑将JTAG 器件连接到处理器的总线,处理器通过JTAG 器件对应的地址来对其进行读写操作[4] 。

  图1 给出了接口逻辑的一个范例。当接口逻辑收到正确的地址和控制信号,它将对TDI、TCK 和TMS信号进行同步,并通过多路复用器驱动输出管脚,下载电缆也可以通过多路复用器对JTAG 链进行编程或验证[5] 。TDI、TCK 和TMS 信号的同步通过嵌入式处理器的时钟信号和寄存器来完成,TDO 的缓冲区可以防止总线竞争,TDI、TCK 和TMS 的缓冲区在调试的时候还可以用来读回寄存器的值。图中的与门通过R/W 信号来控制执行读或写操作,而AS 和DS 信号则可以在另一个级别上对电路进行选择和去选择。

接口逻辑

图1 接口逻辑

[1] [2] [3]

关键字:嵌入式处理器  可编程逻辑器件  重编程

编辑:小甘 引用地址:http://www.eeworld.com.cn/FPGA/2010/0111/article_901.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
嵌入式处理器
可编程逻辑器件
重编程

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved