CN103366812A - 电路板上Flash在线编程的装置及实现方法 - Google Patents

电路板上Flash在线编程的装置及实现方法 Download PDF

Info

Publication number
CN103366812A
CN103366812A CN201310308350XA CN201310308350A CN103366812A CN 103366812 A CN103366812 A CN 103366812A CN 201310308350X A CN201310308350X A CN 201310308350XA CN 201310308350 A CN201310308350 A CN 201310308350A CN 103366812 A CN103366812 A CN 103366812A
Authority
CN
China
Prior art keywords
flash
address
data
cpld
chip microcomputer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310308350XA
Other languages
English (en)
Other versions
CN103366812B (zh
Inventor
李传宝
陈昶李
田运朴
王峰
罗雄豹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Changjiang Computing Technology Co., Ltd
Original Assignee
Fiberhome Telecommunication Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fiberhome Telecommunication Technologies Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN201310308350.XA priority Critical patent/CN103366812B/zh
Publication of CN103366812A publication Critical patent/CN103366812A/zh
Application granted granted Critical
Publication of CN103366812B publication Critical patent/CN103366812B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Microcomputers (AREA)

Abstract

本发明涉及嵌入式系统设计领域,具体涉及一种电路板上Flash在线编程装置及实现方法。实现方法包括:桌面应用软件将操作指令和编程数据按照自定义帧格式打包,其USB驱动再解析成USB数据包并通过线缆发送至USB协议转换器;转换器解析出自定义帧格式数据包并发送单片机;单片机将数据包按自定义帧格式解析出命令和数据后分解成若干Flash读写访问序列并作并串转换后通过自定义编程接口发送目标板CPLD;CPLD电路串并转换后实现对Flash读写访问并将Flash访问结果相同路径反向传送桌面应用软件。本发明能够在电路板上对Flash在线编程,生产工序少,操作简单,不仅生产成本低,且工作效率和生产效率均较高。

Description

电路板上Flash在线编程的装置及实现方法
技术领域
本发明涉及嵌入式系统设计领域,具体涉及一种电路板上Flash在线编程的装置及实现方法。
背景技术
目前,在嵌入式处理器平台的电路板上对Flash编程的方法一般包括两种:1、通过专用编程器和接插件将程序烧录于Flash,然后将Flash与电路板焊接;2、购买专用调试器,通过专用调试器将程序数据直接下载至电路板的存储器中。
但是,以上两种方法分别存在以下缺陷:
(1)将程序烧录于Flash、将Flash与电路板焊接的生产工序均比较繁琐,而且焊接后一旦程序损坏,就需要将焊接于电路板上的Flash取下,重新烧录程序后再次焊接;对于比较常用的BGA(BallGrid Array,球形触点陈列)封装Flash,由于其焊接过程本身就比较复杂,因此重复烧录和焊接的操作过程更加复杂。此外,专用编程器和接插件的购买成本较高,而且接插件比较容易损坏,需要经常更换。因此,通过专用编程器和接插件对Flash编程,不仅生产成本较高,而且操作过程比较复杂,工作效率较低。
(2)对于通过专用调试器实现Flash在线编程的方法,由于使用专用调试器需具有一定的专业知识,因此,通过专用调试器实现Flash在线编程的适用范围比较单一;而且专用调试器需要根据嵌入式处理器的类型购买专用的配置数据,如果处理器更换,专用调试器也要随之重新购买新的数据,以对应更换后的处理器,购买专用调试器和配置数据的购买成本较高。此外,通过专用调试器下载程序数据的下载速度较低,下载512k字节的程序数据需要15秒以上,其生产效率较低。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种电路板上Flash在线编程的装置及实现方法,能够在电路板上对Flash在线编程,其生产工序少,操作过程比较简单,不仅生产成本较低,而且工作效率和生产效率均较高。
为达到以上目的,本发明提供的一种电路板上Flash在线编程的装置,包括设置有桌面应用软件的电脑、USB转FIFO协议转换器、设置有Flash驱动软件的单片机、位于电路板上的复杂可编程逻辑器件CPLD和Flash,所述桌面应用软件设置有USB底层驱动;所述电脑通过USB标准线缆与USB转FIFO协议转换器连接,所述USB转FIFO协议转换器通过FIFO接口与单片机连接,所述单片机通过自定义编程器接口与CPLD连接;所述自定义编程器接口采用并行总线接口,总线包括3位地址线、8位数据线、读写信号、片选信号、复位信号、备用线和信号地线;所述自定义编程器接口采用单片机通用的并行异步接口,自定义编程器接口的时序通过单片机的硬件实现;
用户在桌面应用软件上导入Flash所需的编程数据,所述编程数据包括数据文件、数据文件的长度、写入Flash的起始地址和Flash擦除区域的长度;用户向桌面应用软件发送操作指令,桌面应用软件将操作指令和相应的编程数据按照自定义数据帧格式打包成自定义数据帧格式数据包,桌面应用软件的USB底层驱动将自定义数据帧格式数据包打包成USB数据包,电脑通过USB线缆将USB数据包发送至USB转FIFO协议转换器;
USB转FIFO协议转换器将USB数据包解析成自定义帧格式数据包,USB转FIFO协议转换器通过FIFO接口将自定义帧格式数据包发送至单片机,单片机的Flash驱动软件按照标准格式指示位标准CFI,对自定义帧格式数据包进行解析,Flash驱动软件将解析出的命令和数据分解成若干Flash读写访问序列;Flash驱动软件将每一个Flash读写访问序列所需的数据文件、数据文件的长度和写入Flash的起始地址进行解析,将32位的Flash地址转化为4个8位的Flash地址,将16位的Flash数据转化为2个8位的Flash数据;
单片机通过CPLD对Flash进行读写访问,单片机通过CPLD写Flash,单片机对CPLD写访问时,自定义编程器接口的读写信号和片选信号均为低电平,单片机通过自定义编程器接口向CPLD的存储地址31~24位的ADDR4地址寄存器,发送需访问的8位的Flash地址的31~24位并锁存;单片机通过自定义编程器接口向CPLD的存储地址23~16位的ADDR3地址寄存器,发送需访问的8位的Flash地址的23~16位并锁存;单片机通过自定义编程器接口向CPLD的存储地址15~8位的ADDR2地址寄存器,发送需访问的8位的Flash地址的15~8位并锁存;单片机通过自定义编程器接口向CPLD的存储地址7~0位的ADDR1地址寄存器,发送需访问的8位的Flash地址的7~0位并锁存;单片机通过自定义编程器接口向CPLD的存储数据15~8位的DATA2数据寄存器,发送需写入的8位的Flash数据的15~8位并锁存;单片机通过自定义编程器接口向CPLD的存储数据7~0位的DATA1数据寄存器,发送需写入的8位的Flash数据的7~0位并锁存;写入Flash所需的数据已经全部发送;单片机通过自定义编程器接口向CPLD的写触发地址寄存器写入任意值,触发CPLD访问Flash的控制信号,CPLD按照ADDR4地址寄存器、ADDR3地址寄存器、ADDR2地址寄存器和ADDR1地址寄存器中锁存的Flash地址,将DATA2数据寄存器和DATA1数据寄存器中锁存的Flash数据发送至Flash,完成对FLASH的单次写访问;
单片机通过CPLD读Flash,单片机对CPLD读访问时,读写信号为高电平,片选信号为低电平,单片机通过自定义编程器接口向CPLD的ADDR4地址寄存器发送需访问的8位的Flash地址的31~24位并锁存;单片机通过自定义编程器接口向CPLD的ADDR3地址寄存器发送需访问的8位的Flash地址的23~16位并锁存;单片机通过自定义编程器接口向CPLD的ADDR2地址寄存器发送需访问的8位的Flash地址的15~8位并锁存;单片机通过自定义编程器接口向CPLD的ADDR1地址寄存器发送需访问的8位的Flash地址的7~0位并锁存;单片机通过自定义编程器接口向CPLD的读触发地址寄存器写入任意值,触发CPLD访问Flash的控制信号,CPLD将ADDR4地址寄存器、ADDR3地址寄存器、ADDR2地址寄存器和ADDR1地址寄存器中锁存的8位的Flash地址发送至Flash,Flash将相应地址的存储数据,发送至CPLD的DATA2数据寄存器和DATA1数据寄存器中;单片机读取并存储DATA2数据寄存器的数据;单片机读取并存储DATA1数据寄存器的数据;
单片机判断对Flash的读写访问是否成功,若是,则将读写访问成功信息返回至桌面应用软件,否则将读写访问失败信息返回至桌面应用软件。
在上述技术方案的基础上,所述操作指令包括扫描Flash指令、擦除Flash指令、编程Flash指令和校验Flash指令;所述操作指令为擦除Flash指令时,所述相应的编程数据为Flash擦除区域的长度和写入Flash的起始地址;所述操作指令为编程Flash指令时,所述相应的编程数据为编程Flash所需的数据文件、数据文件的长度和写入Flash的起始地址;所述操作指令为校验Flash指令时,所述相应的编程数据为校验Flash所需的数据文件、数据文件的长度和Flash的起始地址。
在上述技术方案的基础上,所述ADDR4地址寄存器位于CPLD内部电路的3b000地址处;所述ADDR3地址寄存器位于CPLD内部电路的3b001地址处;所述ADDR2地址寄存器位于CPLD内部电路的3b010地址处;所述ADDR1地址寄存器位于CPLD内部电路的3b011地址处;所述DATA2数据寄存器位于CPLD内部电路的3b100地址处;所述DATA1数据寄存器位于CPLD内部电路的3b101地址处;所述写触发地址寄存器位于CPLD内部电路的3b110地址处;所述读触发地址寄存器位于CPLD内部电路的3b110地址处。
在上述技术方案的基础上,步骤D中所述单片机判断对Flash的读写访问是否成功的步骤包括:单片机读取Flash的状态寄存器位,单片机判断读取到的Flash的状态寄存器位的数值是否正确值,若是,则读写访问成功,否则读写访问失败。
本发明提供的基于上述装置的电路板上Flash在线编程的实现方法,其特征在于,包括以下步骤:A、用户在桌面应用软件上导入Flash所需的编程数据,所述编程数据包括数据文件、数据文件的长度、写入Flash的起始地址和Flash擦除区域的长度;用户向桌面应用软件发送操作指令,桌面应用软件将操作指令和相应的编程数据按照自定义数据帧格式打包成自定义数据帧格式数据包,桌面应用软件的USB底层驱动将自定义数据帧格式数据包解析成USB数据包,电脑通过USB线缆将USB数据包发送至USB转FIFO协议转换器;B、USB转FIFO协议转换器将USB数据包解析成自定义帧格式数据包,USB转FIFO协议转换器通过FIFO接口将自定义帧格式数据包发送至单片机,单片机的Flash驱动软件按照标准格式指示位标准,对自定义帧格式数据包进行解析,Flash驱动软件将解析出的命令和数据分解成若干Flash读写访问序列;Flash驱动软件将每一个Flash读写访问序列所需的数据文件、数据文件的长度和写入Flash的起始地址进行解析,将32位的Flash地址转化为4个8位的Flash地址,将16位的Flash数据转化为2个8位的Flash数据;C、单片机通过CPLD对Flash进行读写访问,单片机通过CPLD写Flash,单片机对CPLD写访问时,自定义编程器接口的读写信号和片选信号均为低电平,单片机按照以下步骤完成一次Flash写访问:
C101:单片机通过自定义编程器接口向CPLD的存储地址31~24位的ADDR4地址寄存器,发送需访问的8位的Flash地址的31~24位并锁存;C102:单片机通过自定义编程器接口向CPLD的存储地址23~16位的ADDR3地址寄存器,发送需访问的8位的Flash地址的23~16位并锁存;C103:单片机通过自定义编程器接口向CPLD的存储地址15~8位的ADDR2地址寄存器,发送需访问的8位的Flash地址的15~8位并锁存;C104:单片机通过自定义编程器接口向CPLD的存储地址7~0位的ADDR1地址寄存器,发送需访问的8位的Flash地址的7~0位并锁存;C105:单片机通过自定义编程器接口向CPLD的存储数据15~8位的DATA2地址寄存器,发送需写入的8位的Flash数据的15~8位并锁存;C106:单片机通过自定义编程器接口向CPLD的存储数据7~0位的DATA1地址寄存器,发送需写入的8位的Flash数据的7~0位并锁存;写入Flash所需的数据已经全部发送;C107:单片机通过自定义编程器接口向CPLD的写触发地址寄存器写入任意值,触发CPLD访问Flash的控制信号,CPLD按照ADDR4地址寄存器、ADDR3地址寄存器、ADDR2地址寄存器和ADDR1地址寄存器中锁存的Flash地址,将DATA2数据寄存器和DATA1数据寄存器中锁存的Flash数据发送至Flash;
单片机通过CPLD读Flash,单片机对CPLD读访问时,读写信号为高电平,片选信号为低电平,单片机按照以下步骤完成一次Flash读访问:C201:单片机通过自定义编程器接口向CPLD的ADDR4地址寄存器发送需访问的8位的Flash地址的31~24位并锁存;C202:单片机通过自定义编程器接口向CPLD的ADDR3地址寄存器发送需访问的8位的Flash地址的23~16位并锁存;C203:单片机通过自定义编程器接口向CPLD的ADDR2地址寄存器发送需访问的8位的Flash地址的15~8位并锁存;C204:单片机通过自定义编程器接口向CPLD的ADDR1地址寄存器发送需访问的8位的Flash地址的7~0位并锁存;C205:单片机通过自定义编程器接口向CPLD的读触发地址寄存器写入任意值,触发CPLD访问Flash的控制信号,CPLD将ADDR4地址寄存器、ADDR3地址寄存器、ADDR2地址寄存器和ADDR1地址寄存器中锁存的8位的Flash地址发送至Flash,Flash将相应地址的存储数据,发送至CPLD的DATA2数据寄存器和DATA1数据寄存器中;C206:单片机读取并存储DATA2数据寄存器的数据;C207:单片机读取并存储DATA1数据寄存器的数据;
D、单片机判断对Flash的读写访问是否成功,若是,则将读写访问成功信息返回至桌面应用软件,否则将读写访问失败信息返回至桌面应用软件。
在上述技术方案的基础上,所述操作指令包括扫描Flash指令、擦除Flash指令、编程Flash指令和校验Flash指令;所述操作指令为擦除Flash指令时,所述相应的编程数据为Flash擦除区域的长度和写入Flash的起始地址;所述操作指令为编程Flash指令时,所述相应的编程数据为编程Flash所需的数据文件、数据文件的长度和写入Flash的起始地址;所述操作指令为校验Flash指令时,所述相应的编程数据为校验Flash所需的数据文件、数据文件的长度和Flash的起始地址。
在上述技术方案的基础上,步骤C中所述ADDR4地址寄存器位于CPLD内部电路的3b000地址处;所述ADDR3地址寄存器位于CPLD内部电路的3b001地址处;所述ADDR2地址寄存器位于CPLD内部电路的3b010地址处;所述ADDR1地址寄存器位于CPLD内部电路的3b011地址处;所述DATA2数据寄存器位于CPLD内部电路的3b100地址处;所述DATA1数据寄存器位于CPLD内部电路的3b101地址处;所述写触发地址寄存器位于CPLD内部电路的3b110地址处;所述读触发地址寄存器位于CPLD内部电路的3b110地址处。
在上述技术方案的基础上,步骤D中所述单片机判断对Flash的读写访问是否成功的步骤包括:单片机读取Flash的状态寄存器位,单片机判断读取到的Flash的状态寄存器位的数值是否正确值,若是,则读写访问成功,否则读写访问失败。
在上述技术方案的基础上,步骤D中将读写访问成功信息返回至桌面应用软件的步骤包括:单片机将读写访问成功的信息按照自定义帧格式打包成自定义帧格式数据包,单片机通过FIFO接口将自定义帧格式数据包发送至USB转FIFO协议转换器;USB转FIFO协议转换器将自定义帧格式数据包解析成USB数据包、并发送至桌面应用软件;桌面应用软件的USB底层驱动对USB数据包解析成自定义帧格式数据包,桌面应用软件解析自定义帧格式数据包,取得读写访问成功的数据,告知用户操作成功。
在上述技术方案的基础上,步骤D中将读写访问失败信息返回至桌面应用软件的步骤包括:单片机将读写访问失败的信息按照自定义帧格式打包成自定义帧格式数据包,单片机通过FIFO接口将自定义帧格式数据包发送至USB转FIFO协议转换器;USB转FIFO协议转换器将自定义帧格式数据包解析成USB数据包、并发送至桌面应用软件;桌面应用软件的USB底层驱动对USB数据包解析成自定义帧格式数据包,桌面应用软件解析自定义帧格式数据包,取得读写访问失败的数据,告知用户操作失败。
与现有技术相比,本发明的有益效果在于:
(1)本发明的单片机直接通过对位于目标板上的CPLD对Flash进行读写访问,与现有技术中将程序烧录于Flash、将Flash与电路板焊接的编程方法相比,本发明不需要将程序烧录于Flash,也不需要将Flash与电路板焊接。因此,通过本发明对电路板上的Flash在线编程不仅生产工序较少,操作过程比较简单,而且不需要专用编程器和接插件,其生产成本较低。
(2)本发明采用通过USB接口进行数据传输,其传输数据可达1M字节/秒,并且本发明的其他接口的速率大于1M字节/秒,因此,本发明对Flash编程时,编程数据的传输速率能达到1M字节/秒,其传输速率较高,经验证得出,本发明将512K字节的程序烧录于Flash只需要4秒钟,其下载速度较快,生产效率较高。
(3)本发明能够直接在电路板上对Flash进行反复烧录,没有焊接的工序,对于BGA封装Flash而言,本发明在BGA封装Flash上烧录程序的生产工序较少,不仅操作过程比较简单,而且可靠性较高。
附图说明
图1为本发明实施例中电路板上Flash在线编程的装置的结构框图;
图2为本发明实施例中自定义编程器接口的总线定义图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例提供的一种电路板上Flash在线编程的装置,包括设置有桌面应用软件的电脑、USB转FIFO(First InputFirst Output,先入先出队列)协议转换器、设置有Flash驱动软件的单片机、位于电路板上的CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)和Flash;桌面应用软件设置有USB底层驱动。电脑通过USB标准线缆与USB转FIFO协议转换器连接,USB转FIFO协议转换器通过FIFO标准接口与单片机连接,单片机通过自定义编程器接口与CPLD连接,自定义编程器接口采用单片机通用的并行异步接口,自定义编程器接口的时序通过单片机的硬件实现。
参见图2所示,自定义编程器接口采用普通单片机都有的一种并行总线接口,总线的A[2..0]为3位地址线,D[7..0]为8位数据线,R/W为读写信号,CS为片选信号,RESET为复位信号,BAK1为备用线,GND为信号地线。自定义编程器接口进行数据传输时,不仅接口信号较少,而且能够保持一定的数据带宽。
本发明实施例提供的基于上述装置的电路板上Flash在线编程的实现方法,包括以下步骤:
S1:用户在桌面应用软件上导入Flash所需的编程数据,编程数据包括数据文件、数据文件的长度、写入Flash的起始地址和Flash擦除区域的长度。
S2:用户向桌面应用软件发送操作指令,桌面应用软件将操作指令和相应的编程数据按照自定义数据帧格式打包成自定义数据帧格式数据包,桌面应用软件的USB底层驱动将自定义数据帧格式数据包解析成USB数据包,电脑通过USB线缆将USB数据包发送至USB转FIFO协议转换器。
操作指令包括扫描Flash指令、擦除Flash指令、编程Flash指令和校验Flash指令。操作指令为扫描Flash指令时,不需要相应的编程数据;操作指令为擦除Flash指令时,相应的编程数据为Flash擦除区域的长度和写入Flash的起始地址;操作指令为编程Flash指令时,相应的编程数据为编程Flash所需的数据文件、数据文件的长度和写入Flash的起始地址;操作指令为校验Flash指令时,相应的编程数据为校验Flash所需的数据文件、数据文件的长度和Flash的起始地址。
S3:USB转FIFO协议转换器将USB数据包解析成自定义帧格式数据包,USB转FIFO协议转换器通过FIFO接口将自定义帧格式数据包发送至单片机。单片机的Flash驱动软件按照CFI(CommonFlash Interface,标准格式指示位)标准,对自定义帧格式数据包进行解析,Flash驱动软件将解析出的命令和数据分解成若干Flash读写访问序列;Flash驱动软件将每一个Flash读写访问序列所需的数据文件、数据文件的长度和写入Flash的起始地址进行解析,将32位的Flash地址转化为4个8位的Flash地址,将16位的Flash数据转化为2个8位的Flash数据。
S4:单片机通过CPLD对Flash进行读写访问。
将存储CPLD内部电路地址31~24位的地址寄存器定义为ADDR4地址寄存器;将存储地址23~16位的地址寄存器定义为ADDR3地址寄存器;将存储地址15~8位的地址寄存器定义为ADDR2地址寄存器;将存储地址7~0位的地址寄存器定义为ADDR1地址寄存器;将存储数据15~8位的数据寄存器定义为DATA2数据寄存器;将存储数据7~0位的数据寄存器定义为DATA1数据寄存器。
写Flash时,单片机对CPLD进行写访问,自定义编程器接口的R/W信号和CS信号均为低电平;单片机通过自定义编程器接口将4个8位的Flash地址发送至CPLD内部逻辑电路的地址寄存器中;单片机通过自定义编程器接口将和2个8位的Flash数据发送至CPLD内部逻辑电路的数据寄存器中。参见表1所示,单片机向CPLD发送Flash地址和Flash数据包括以下步骤:
S411:向CPLD的3b000地址处的ADDR4地址寄存器发送需访问的8位的Flash地址的31~24位并锁存。
S412:向CPLD的3b001地址处的ADDR3地址寄存器发送需访问的8位的Flash地址的23~16位并锁存。
S413:向CPLD的3b010地址处的ADDR2地址寄存器发送需访问的8位的Flash地址的15~8位并锁存。
S414:向CPLD的3b011地址处的ADDR1地址寄存器发送需访问的8位的Flash地址的7~0位并锁存;访问Flash所需的地址已经全部发送。
S415:向CPLD的3b100地址处的DATA2数据寄存器发送需写入的8位的Flash数据的15~8位并锁存。
S416:向CPLD的3b101地址处的DATA1数据寄存器发送需写入的8位的Flash数据的7~0位并锁存;写入Flash所需的数据已经全部发送。
S417:向CPLD的3b110地址处的WR_END地址寄存器(写触发地址寄存器)写入任意值,触发CPLD访问Flash的控制信号,CPLD按照ADDR4地址寄存器、ADDR3地址寄存器、ADDR2地址寄存器和ADDR1地址寄存器中锁存的Flash地址,将DATA2数据寄存器和DATA1数据寄存器中锁存的Flash数据发送至Flash,完成对Flash的单次写访问。
表1:写FLASH的访问数据顺序表
Figure BDA00003548597500131
读Flash时,单片机对CPLD进行读访问,R/W信号为高电平,CS信号为低电平,参见表2所示,读Flash包括以下步骤:
S421:向CPLD的3b000地址处的ADDR4地址寄存器发送需访问的8位的Flash地址的31~24位并锁存。
S422:向CPLD的3b001地址处的ADDR3地址寄存器发送需访问的8位的Flash地址的23~16位并锁存。
S423:向CPLD的3b010地址处的ADDR2地址寄存器发送需访问的8位的Flash地址的15~8位并锁存。
S424:向CPLD的3b011地址处的ADDR1地址寄存器发送需访问的8位的Flash地址的7~0位并锁存;访问Flash所需的地址已经全部发送。
S425:单片机向CPLD的3b110地址处的RD_START地址寄存器(读触发地址寄存器)写入任意值,触发CPLD访问Flash的控制信号,CPLD将ADDR4地址寄存器、ADDR3地址寄存器、ADDR2地址寄存器和ADDR1地址寄存器中锁存的8位的Flash地址发送至Flash,Flash将相应地址的存储数据,发送至CPLD的DATA2数据寄存器和DATA1数据寄存器中。
S426:单片机从CPLD内部电路地址3b100处,读取并存储DATA2数据寄存器的数据。
S427:单片机从CPLD内部电路地址3b101,读取并存储DATA1数据寄存器的数据,完成单次对FLASH的读访问。
单片机通过CPLD进行Flash的读写操作时,单片机完成Flash的单次读写访问的并串转化,CPLD完成Flash的单次读写访问的串并转化(即完成单片机对Flash时,由并串转化到串并转化的桥接功能)。
表2:读Flash的访问数据顺序表
Figure BDA00003548597500141
S5:单片机判断对Flash的读写访问是否成功,若是,则转到步骤S6,否则转到步骤S7。
单片机判断对Flash的读写访问是否成功的步骤可以为:单片机读取Flash的状态寄存器位,单片机判断读取到的Flash的状态寄存器位的数值是否正确值,若是,对Flash的读写访问成功,转到步骤S6,否则对Flash的读写访问失败,转到步骤S7。
S6:单片机将读写访问成功的信息按照自定义帧格式打包成自定义帧格式数据包,单片机通过FIFO接口将自定义帧格式数据包发送至USB转FIFO协议转换器;USB转FIFO协议转换器将自定义帧格式数据包解析成USB数据包、并发送至桌面应用软件;桌面应用软件的USB底层驱动对USB数据包解析成自定义帧格式数据包,桌面应用软件解析自定义帧格式数据包,取得读写访问成功的数据,告知用户操作成功。
S7:单片机将读写访问失败的信息按照自定义帧格式打包成自定义帧格式数据包,单片机通过FIFO接口将自定义帧格式数据包发送至USB转FIFO协议转换器;USB转FIFO协议转换器将自定义帧格式数据包解析成USB数据包、并发送至桌面应用软件;桌面应用软件的USB底层驱动对USB数据包解析成自定义帧格式数据包,桌面应用软件解析自定义帧格式数据包,取得读写访问失败的数据,告知用户操作失败。
在实际使用中,桌面应用软件可通过可视化编程软件来设计,电脑上的USB底层驱动可选用USB转FIFO协议转换器的生产厂家提供的驱动,USB底层驱动可选用FTDI公司的芯片FT245BL,芯片厂家提供USB底层驱动,USB底层驱动不需要特别研制,降低了Flash编程方法的实现难度。单片机需要有足够的IO口(输入和输出的引脚),以便与USB转FIFO协议转换器连接。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (10)

1.一种电路板上Flash在线编程的装置,其特征在于:包括设置有桌面应用软件的电脑、USB转FIFO协议转换器、设置有Flash驱动软件的单片机、位于电路板上的复杂可编程逻辑器件CPLD和Flash,所述桌面应用软件设置有USB底层驱动;所述电脑通过USB标准线缆与USB转FIFO协议转换器连接,所述USB转FIFO协议转换器通过FIFO接口与单片机连接,所述单片机通过自定义编程器接口与CPLD连接;所述自定义编程器接口采用并行总线接口,总线包括3位地址线、8位数据线、读写信号、片选信号、复位信号、备用线和信号地线;所述自定义编程器接口采用单片机通用的并行异步接口,自定义编程器接口的时序通过单片机的硬件实现;
用户在桌面应用软件上导入Flash所需的编程数据,所述编程数据包括数据文件、数据文件的长度、写入Flash的起始地址和Flash擦除区域的长度;用户向桌面应用软件发送操作指令,桌面应用软件将操作指令和相应的编程数据按照自定义数据帧格式打包成自定义数据帧格式数据包,桌面应用软件的USB底层驱动将自定义数据帧格式数据包打包成USB数据包,电脑通过USB线缆将USB数据包发送至USB转FIFO协议转换器;
USB转FIFO协议转换器将USB数据包解析成自定义帧格式数据包,USB转FIFO协议转换器通过FIFO接口将自定义帧格式数据包发送至单片机,单片机的Flash驱动软件按照标准格式指示位标准CFI,对自定义帧格式数据包进行解析,Flash驱动软件将解析出的命令和数据分解成若干Flash读写访问序列;Flash驱动软件将每一个Flash读写访问序列所需的数据文件、数据文件的长度和写入Flash的起始地址进行解析,将32位的Flash地址转化为4个8位的Flash地址,将16位的Flash数据转化为2个8位的Flash数据;
单片机通过CPLD对Flash进行读写访问,单片机通过CPLD写Flash,单片机对CPLD写访问时,自定义编程器接口的读写信号和片选信号均为低电平,单片机通过自定义编程器接口向CPLD的存储地址31~24位的ADDR4地址寄存器,发送需访问的8位的Flash地址的31~24位并锁存;单片机通过自定义编程器接口向CPLD的存储地址23~16位的ADDR3地址寄存器,发送需访问的8位的Flash地址的23~16位并锁存;单片机通过自定义编程器接口向CPLD的存储地址15~8位的ADDR2地址寄存器,发送需访问的8位的Flash地址的15~8位并锁存;单片机通过自定义编程器接口向CPLD的存储地址7~0位的ADDR1地址寄存器,发送需访问的8位的Flash地址的7~0位并锁存;单片机通过自定义编程器接口向CPLD的存储数据15~8位的DATA2数据寄存器,发送需写入的8位的Flash数据的15~8位并锁存;单片机通过自定义编程器接口向CPLD的存储数据7~0位的DATA1数据寄存器,发送需写入的8位的Flash数据的7~0位并锁存;写入Flash所需的数据已经全部发送;单片机通过自定义编程器接口向CPLD的写触发地址寄存器写入任意值,触发CPLD访问Flash的控制信号,CPLD按照ADDR4地址寄存器、ADDR3地址寄存器、ADDR2地址寄存器和ADDR1地址寄存器中锁存的Flash地址,将DATA2数据寄存器和DATA1数据寄存器中锁存的Flash数据发送至Flash,完成对FLASH的单次写访问;
单片机通过CPLD读Flash,单片机对CPLD读访问时,读写信号为高电平,片选信号为低电平,单片机通过自定义编程器接口向CPLD的ADDR4地址寄存器发送需访问的8位的Flash地址的31~24位并锁存;单片机通过自定义编程器接口向CPLD的ADDR3地址寄存器发送需访问的8位的Flash地址的23~16位并锁存;单片机通过自定义编程器接口向CPLD的ADDR2地址寄存器发送需访问的8位的Flash地址的15~8位并锁存;单片机通过自定义编程器接口向CPLD的ADDR1地址寄存器发送需访问的8位的Flash地址的7~0位并锁存;单片机通过自定义编程器接口向CPLD的读触发地址寄存器写入任意值,触发CPLD访问Flash的控制信号,CPLD将ADDR4地址寄存器、ADDR3地址寄存器、ADDR2地址寄存器和ADDR1地址寄存器中锁存的8位的Flash地址发送至Flash,Flash将相应地址的存储数据,发送至CPLD的DATA2数据寄存器和DATA1数据寄存器中;单片机读取并存储DATA2数据寄存器的数据;单片机读取并存储DATA1数据寄存器的数据;
单片机判断对Flash的读写访问是否成功,若是,则将读写访问成功信息返回至桌面应用软件,否则将读写访问失败信息返回至桌面应用软件。
2.如权利要求1所述的电路板上Flash在线编程的装置,其特征在于:所述操作指令包括扫描Flash指令、擦除Flash指令、编程Flash指令和校验Flash指令;所述操作指令为擦除Flash指令时,所述相应的编程数据为Flash擦除区域的长度和写入Flash的起始地址;所述操作指令为编程Flash指令时,所述相应的编程数据为编程Flash所需的数据文件、数据文件的长度和写入Flash的起始地址;所述操作指令为校验Flash指令时,所述相应的编程数据为校验Flash所需的数据文件、数据文件的长度和Flash的起始地址。
3.如权利要求1所述的电路板上Flash在线编程的装置,其特征在于:所述ADDR4地址寄存器位于CPLD内部电路的3b000地址处;所述ADDR3地址寄存器位于CPLD内部电路的3b001地址处;所述ADDR2地址寄存器位于CPLD内部电路的3b010地址处;所述ADDR1地址寄存器位于CPLD内部电路的3b011地址处;所述DATA2数据寄存器位于CPLD内部电路的3b100地址处;所述DATA1数据寄存器位于CPLD内部电路的3b101地址处;所述写触发地址寄存器位于CPLD内部电路的3b110地址处;所述读触发地址寄存器位于CPLD内部电路的3b110地址处。
4.如权利要求1所述的电路板上Flash在线编程的装置,其特征在于,步骤D中所述单片机判断对Flash的读写访问是否成功的步骤包括:单片机读取Flash的状态寄存器位,单片机判断读取到的Flash的状态寄存器位的数值是否正确值,若是,则读写访问成功,否则读写访问失败。
5.一种基于权利要求1至4任一项所述装置的电路板上Flash在线编程的实现方法,其特征在于,包括以下步骤:
A、用户在桌面应用软件上导入Flash所需的编程数据,所述编程数据包括数据文件、数据文件的长度、写入Flash的起始地址和Flash擦除区域的长度;用户向桌面应用软件发送操作指令,桌面应用软件将操作指令和相应的编程数据按照自定义数据帧格式打包成自定义数据帧格式数据包,桌面应用软件的USB底层驱动将自定义数据帧格式数据包解析成USB数据包,电脑通过USB线缆将USB数据包发送至USB转FIFO协议转换器;
B、USB转FIFO协议转换器将USB数据包解析成自定义帧格式数据包,USB转FIFO协议转换器通过FIFO接口将自定义帧格式数据包发送至单片机,单片机的Flash驱动软件按照标准格式指示位标准,对自定义帧格式数据包进行解析,Flash驱动软件将解析出的命令和数据分解成若干Flash读写访问序列;Flash驱动软件将每一个Flash读写访问序列所需的数据文件、数据文件的长度和写入Flash的起始地址进行解析,将32位的Flash地址转化为4个8位的Flash地址,将16位的Flash数据转化为2个8位的Flash数据;
C、单片机通过CPLD对Flash进行读写访问,单片机通过CPLD写Flash,单片机对CPLD写访问时,自定义编程器接口的读写信号和片选信号均为低电平,单片机按照以下步骤完成一次Flash写访问:
C101:单片机通过自定义编程器接口向CPLD的存储地址31~24位的ADDR4地址寄存器,发送需访问的8位的Flash地址的31~24位并锁存;
C102:单片机通过自定义编程器接口向CPLD的存储地址23~16位的ADDR3地址寄存器,发送需访问的8位的Flash地址的23~16位并锁存;
C103:单片机通过自定义编程器接口向CPLD的存储地址15~8位的ADDR2地址寄存器,发送需访问的8位的Flash地址的15~8位并锁存;
C104:单片机通过自定义编程器接口向CPLD的存储地址7~0位的ADDR1地址寄存器,发送需访问的8位的Flash地址的7~0位并锁存;
C105:单片机通过自定义编程器接口向CPLD的存储数据15~8位的DATA2地址寄存器,发送需写入的8位的Flash数据的15~8位并锁存;
C106:单片机通过自定义编程器接口向CPLD的存储数据7~0位的DATA1地址寄存器,发送需写入的8位的Flash数据的7~0位并锁存;写入Flash所需的数据已经全部发送;
C107:单片机通过自定义编程器接口向CPLD的写触发地址寄存器写入任意值,触发CPLD访问Flash的控制信号,CPLD按照ADDR4地址寄存器、ADDR3地址寄存器、ADDR2地址寄存器和ADDR1地址寄存器中锁存的Flash地址,将DATA2数据寄存器和DATA1数据寄存器中锁存的Flash数据发送至Flash;
单片机通过CPLD读Flash,单片机对CPLD读访问时,读写信号为高电平,片选信号为低电平,单片机按照以下步骤完成一次Flash读访问:
C201:单片机通过自定义编程器接口向CPLD的ADDR4地址寄存器发送需访问的8位的Flash地址的31~24位并锁存;
C202:单片机通过自定义编程器接口向CPLD的ADDR3地址寄存器发送需访问的8位的Flash地址的23~16位并锁存;
C203:单片机通过自定义编程器接口向CPLD的ADDR2地址寄存器发送需访问的8位的Flash地址的15~8位并锁存;
C204:单片机通过自定义编程器接口向CPLD的ADDR1地址寄存器发送需访问的8位的Flash地址的7~0位并锁存;
C205:单片机通过自定义编程器接口向CPLD的读触发地址寄存器写入任意值,触发CPLD访问Flash的控制信号,CPLD将ADDR4地址寄存器、ADDR3地址寄存器、ADDR2地址寄存器和ADDR1地址寄存器中锁存的8位的Flash地址发送至Flash,Flash将相应地址的存储数据,发送至CPLD的DATA2数据寄存器和DATA1数据寄存器中;
C206:单片机读取并存储DATA2数据寄存器的数据;
C207:单片机读取并存储DATA1数据寄存器的数据;
D、单片机判断对Flash的读写访问是否成功,若是,则将读写访问成功信息返回至桌面应用软件,否则将读写访问失败信息返回至桌面应用软件。
6.如权利要求5所述的电路板上Flash在线编程的实现方法,其特征在于:所述操作指令包括扫描Flash指令、擦除Flash指令、编程Flash指令和校验Flash指令;所述操作指令为擦除Flash指令时,所述相应的编程数据为Flash擦除区域的长度和写入Flash的起始地址;所述操作指令为编程Flash指令时,所述相应的编程数据为编程Flash所需的数据文件、数据文件的长度和写入Flash的起始地址;所述操作指令为校验Flash指令时,所述相应的编程数据为校验Flash所需的数据文件、数据文件的长度和Flash的起始地址。
7.如权利要求5所述的电路板上Flash在线编程的实现方法,其特征在于:步骤C中所述ADDR4地址寄存器位于CPLD内部电路的3b000地址处;所述ADDR3地址寄存器位于CPLD内部电路的3b001地址处;所述ADDR2地址寄存器位于CPLD内部电路的3b010地址处;所述ADDR1地址寄存器位于CPLD内部电路的3b011地址处;所述DATA2数据寄存器位于CPLD内部电路的3b100地址处;所述DATA1数据寄存器位于CPLD内部电路的3b101地址处;所述写触发地址寄存器位于CPLD内部电路的3b110地址处;所述读触发地址寄存器位于CPLD内部电路的3b110地址处。
8.如权利要求5至7任一项所述的电路板上Flash在线编程的实现方法,其特征在于,步骤D中所述单片机判断对Flash的读写访问是否成功的步骤包括:单片机读取Flash的状态寄存器位,单片机判断读取到的Flash的状态寄存器位的数值是否正确值,若是,则读写访问成功,否则读写访问失败。
9.如权利要求5至7任一项所述的电路板上Flash在线编程的实现方法,其特征在于,步骤D中将读写访问成功信息返回至桌面应用软件的步骤包括:单片机将读写访问成功的信息按照自定义帧格式打包成自定义帧格式数据包,单片机通过FIFO接口将自定义帧格式数据包发送至USB转FIFO协议转换器;USB转FIFO协议转换器将自定义帧格式数据包解析成USB数据包、并发送至桌面应用软件;桌面应用软件的USB底层驱动对USB数据包解析成自定义帧格式数据包,桌面应用软件解析自定义帧格式数据包,取得读写访问成功的数据,告知用户操作成功。
10.如权利要求5至7任一项所述的电路板上Flash在线编程的实现方法,其特征在于,步骤D中将读写访问失败信息返回至桌面应用软件的步骤包括:单片机将读写访问失败的信息按照自定义帧格式打包成自定义帧格式数据包,单片机通过FIFO接口将自定义帧格式数据包发送至USB转FIFO协议转换器;USB转FIFO协议转换器将自定义帧格式数据包解析成USB数据包、并发送至桌面应用软件;桌面应用软件的USB底层驱动对USB数据包解析成自定义帧格式数据包,桌面应用软件解析自定义帧格式数据包,取得读写访问失败的数据,告知用户操作失败。
CN201310308350.XA 2013-07-22 2013-07-22 电路板上Flash在线编程的装置及实现方法 Active CN103366812B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310308350.XA CN103366812B (zh) 2013-07-22 2013-07-22 电路板上Flash在线编程的装置及实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310308350.XA CN103366812B (zh) 2013-07-22 2013-07-22 电路板上Flash在线编程的装置及实现方法

Publications (2)

Publication Number Publication Date
CN103366812A true CN103366812A (zh) 2013-10-23
CN103366812B CN103366812B (zh) 2015-12-09

Family

ID=49367978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310308350.XA Active CN103366812B (zh) 2013-07-22 2013-07-22 电路板上Flash在线编程的装置及实现方法

Country Status (1)

Country Link
CN (1) CN103366812B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103634076A (zh) * 2013-11-27 2014-03-12 上海电器科学研究院 一种监控可编程逻辑控制器的通信数据打包方法
CN103634076B (zh) * 2013-11-27 2016-11-30 上海电器科学研究院 一种监控可编程逻辑控制器的通信数据打包方法
CN107729033A (zh) * 2017-09-22 2018-02-23 烽火通信科技股份有限公司 实现在线编程的嵌入式系统、编程器及方法
CN108388788A (zh) * 2018-03-12 2018-08-10 山东渔翁信息技术股份有限公司 一种调用usb key底层库的方法及装置
CN111782571A (zh) * 2020-06-15 2020-10-16 北京航空航天大学杭州创新研究院 用于板载多SPI Flash的快速并发编程方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5889701A (en) * 1998-06-18 1999-03-30 Xilinx, Inc. Method and apparatus for selecting optimum levels for in-system programmable charge pumps
US20050057973A1 (en) * 2003-09-16 2005-03-17 Micron Technology, Inc. Runtime flash device detection and configuration for flash data management software
US20060279984A1 (en) * 2005-06-02 2006-12-14 Kabushiki Kaisha Toshiba Semiconductor integrated circuit device
CN101030140A (zh) * 2006-03-02 2007-09-05 中兴通讯股份有限公司 一种对固件程序进行在线升级的装置及其方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5889701A (en) * 1998-06-18 1999-03-30 Xilinx, Inc. Method and apparatus for selecting optimum levels for in-system programmable charge pumps
US20050057973A1 (en) * 2003-09-16 2005-03-17 Micron Technology, Inc. Runtime flash device detection and configuration for flash data management software
US20060279984A1 (en) * 2005-06-02 2006-12-14 Kabushiki Kaisha Toshiba Semiconductor integrated circuit device
CN101030140A (zh) * 2006-03-02 2007-09-05 中兴通讯股份有限公司 一种对固件程序进行在线升级的装置及其方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103634076A (zh) * 2013-11-27 2014-03-12 上海电器科学研究院 一种监控可编程逻辑控制器的通信数据打包方法
CN103634076B (zh) * 2013-11-27 2016-11-30 上海电器科学研究院 一种监控可编程逻辑控制器的通信数据打包方法
CN107729033A (zh) * 2017-09-22 2018-02-23 烽火通信科技股份有限公司 实现在线编程的嵌入式系统、编程器及方法
CN107729033B (zh) * 2017-09-22 2020-07-28 烽火通信科技股份有限公司 实现在线编程的嵌入式系统、编程器及方法
CN108388788A (zh) * 2018-03-12 2018-08-10 山东渔翁信息技术股份有限公司 一种调用usb key底层库的方法及装置
CN111782571A (zh) * 2020-06-15 2020-10-16 北京航空航天大学杭州创新研究院 用于板载多SPI Flash的快速并发编程方法和系统

Also Published As

Publication number Publication date
CN103366812B (zh) 2015-12-09

Similar Documents

Publication Publication Date Title
US7360137B2 (en) Flash programmer for programming NAND flash and NOR/NAND combined flash
CN110134415A (zh) 一种控制器及其软件升级方法和装置
CN104200843B (zh) 闪存烧入器、烧入系统及烧入方法
US7457325B2 (en) Multiplexing a communication port
CN104133705B (zh) 一种串口加载PowerPC系统引导文件的系统及方法
US8386694B2 (en) Memory device, its access method, and memory system
CN107562504A (zh) 一种dsp程序分段加载的串口实现方法
TWI382306B (zh) 具自測試能力之記憶體系統及測試記憶體系統之方法
TWI612534B (zh) 記憶體系統
CN109669729A (zh) 一种处理器的启动引导方法
CN103366812B (zh) 电路板上Flash在线编程的装置及实现方法
CN102520961A (zh) 片外在线可编程的soc系统及其控制方法
CN103745167A (zh) 单片机的iap方法及装置
US20100153622A1 (en) Data Access Controller and Data Accessing Method
CN101950276B (zh) 一种存储器访问装置及其程序执行方法
US6598176B1 (en) Apparatus for estimating microcontroller and method thereof
CN107729033B (zh) 实现在线编程的嵌入式系统、编程器及方法
CN204706030U (zh) 一种i2c总线电路以及电子设备
CN204272318U (zh) Emmc治具和电视系统
CN110413550B (zh) 一种芯片串口程序下载控制电路
CN100359468C (zh) 一种单板软件下载方法和装置
CN102445918B (zh) 利用模式设置开关控制的plc多功能存储模块
JP2003271407A (ja) チップモジュール
JPH11328980A (ja) 不揮発性半導体メモリ
CN104536762A (zh) 一种实现cpld和flash编程一体化的装置及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200814

Address after: 430000 part of the third floor of cable building, Guandong science and Technology Park, Donghu New Technology Development Zone, Wuhan, Hubei Province

Patentee after: Wuhan Changjiang Computing Technology Co., Ltd

Address before: China Science and Technology Park Dongxin road East Lake Development Zone 430074 Hubei Province, Wuhan City, No. 5

Patentee before: FIBERHOME TELECOMMUNICATION TECHNOLOGIES Co.,Ltd.