CN116204450B - 数据写入方法、处理器、器件、业务板及存储介质 - Google Patents
数据写入方法、处理器、器件、业务板及存储介质 Download PDFInfo
- Publication number
- CN116204450B CN116204450B CN202310496698.XA CN202310496698A CN116204450B CN 116204450 B CN116204450 B CN 116204450B CN 202310496698 A CN202310496698 A CN 202310496698A CN 116204450 B CN116204450 B CN 116204450B
- Authority
- CN
- China
- Prior art keywords
- flash memory
- register
- programmable logic
- logic device
- command word
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请实施例提供了一种数据写入方法、处理器、器件、业务板及存储介质,涉及通信技术领域,方法应用于业务板中的中央处理器CPU,包括:向业务板中的可编程逻辑器件发送擦除信息,以使可编程逻辑器件基于擦除信息,擦除业务板中的闪存的地址空间中存储的数据;在擦除闪存的地址空间中存储的数据后,向可编程逻辑器件发送包含当前待写入的第一配置数据的写入信息,以使可编程逻辑器件基于写入信息,将第一配置数据写入闪存的地址空间。基于此,能够提高对业务板进行维护的效率,降低维护的成本。
Description
技术领域
本申请涉及通信技术领域,特别是涉及一种数据写入方法、处理器、器件、业务板及存储介质。
背景技术
随着网络技术的不断发展,核心路由器的应用越来越广泛。业务板是核心路由器的重要组成部分,主要用于接收和发送数据。业务板的组成部分包括CPU(CentralProcessing Unit,中央处理器)、包处理器以及闪存(Flash)。闪存用于存储业务板上电启动过程中所需的配置数据。包处理器通过SPI(Serial Periphera Interface,串行外设接口)接口与闪存连接。在业务板上电启动的过程中,包处理器从闪存中获取配置数据,以完成自身的启动。
相关技术中,当闪存中存储的配置数据损坏或者丢失时,会导致包处理器无法正常启动,CPU也就无法通过包处理器向闪存中写入配置数据。此时,只能将闪存从业务板上拆离并借助外部烧录工具重新向闪存中烧录配置数据,烧录完成后重新将闪存焊接至业务板,以实现闪存中配置数据的更新或者修复,相应的,在闪存中配置数据的更新或者修复完成后,包处理器能够重新启动。
可见,基于上述方式,需要将闪存从业务板上拆离并重新焊接,而反复焊接闪存严重的会导致业务板报废,即,会导致对业务板进行维护的效率较低,且成本较高。
发明内容
本申请实施例的目的在于提供一种数据写入方法、处理器、器件、业务板及存储介质,以提高对业务板进行维护的效率,降低维护的成本。具体技术方案如下:
本申请实施的第一方面,提供了一种数据写入方法,应用于业务板中的CPU,所述方法包括:
向所述业务板中的可编程逻辑器件发送擦除信息,以使所述可编程逻辑器件基于所述擦除信息,擦除所述业务板中的闪存的地址空间中存储的数据;
在擦除所述闪存的地址空间中存储的数据后,向所述可编程逻辑器件发送包含当前待写入的第一配置数据的写入信息,以使所述可编程逻辑器件基于所述写入信息,将所述第一配置数据写入所述闪存的地址空间。
可选的,所述方法还包括:在所述可编程逻辑器件将所述第一配置数据写入所述闪存的地址空间之后,向所述可编程逻辑器件发送读取信息,以使所述可编程逻辑器件基于所述读取信息,读取所述闪存的地址空间中存储的数据; 在获取所述可编程逻辑器件读取到的数据后,判断获取到的数据与所述第一配置数据是否一致;若一致,则控制所述业务板中的包处理器按照所述闪存的地址空间中存储的数据进行启动。
可选的,所述方法还包括:在向所述可编程逻辑器件发送擦除信息之前,若所述业务板中的包处理器启动异常,向所述可编程逻辑器件发送读取信息,以使所述可编程逻辑器件基于所述读取信息,读取所述闪存的地址空间中存储的数据;在获取所述可编程逻辑器件读取到的数据后,判断获取到的数据与上一次写入所述闪存的第二配置数据是否一致;所述向所述业务板中的可编程逻辑器件发送擦除信息,包括:若获取到的数据与所述第二配置数据不一致,则向所述业务板中的可编程逻辑器件发送擦除信息。
可选的,所述读取信息包含:用于指示所述闪存读取第一地址空间中存储的数据的读取方式的第一读取命令字,以及所述第一地址空间的地址;所述向所述可编程逻辑器件发送读取信息,包括:将所述第一读取命令字写入所述可编程逻辑器件中的命令字寄存器,将所述第一地址空间的地址写入所述可编程逻辑器件中的地址寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述第一读取命令字,以及所述地址寄存器中的所述第一地址空间的地址,使所述闪存按照所述第一读取命令字所指示的读取方式,从所述第一地址空间处读取数据,并向所述可编程逻辑器件发送读取到的数据,使所述可编程逻辑器件将所述闪存发送的数据写入自身的读取寄存器;所述方法还包括:从所述读取寄存器中获取数据。
可选的,所述业务板还包括:用于连接外部烧录工具的预留加载座;所述可编程逻辑器件包括:第二开关;所述方法还包括:在向所述可编程逻辑器件发送擦除信息之前,控制所述第二开关导通所述CPU与所述可编程逻辑器件的第一接口的第一侧之间的连接;所述第一接口的第二侧用于连接所述闪存;当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
可选的,所述在向所述可编程逻辑器件发送擦除信息之前,控制所述第二开关导通所述CPU与所述可编程逻辑器件的第一接口的第一侧之间的连接,包括:在向所述可编程逻辑器件发送擦除信息之前,将表示通过所述CPU写入所述第一配置数据的第一路径选择字符,写入所述可编程逻辑器件中的路径选择寄存器,以使所述可编程逻辑器件在所述路径选择寄存器中写入所述第一路径选择字符时,控制所述第二开关导通所述CPU与所述第一接口的第一侧之间的连接;所述当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接,包括:当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,将表示通过所述外部烧录工具写入所述第一配置数据的第二路径选择字符,写入所述路径选择寄存器,以使所述可编程逻辑器件在所述路径选择寄存器中写入所述第二路径选择字符时,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
可选的,所述擦除信息包含:用于指示所述闪存擦除第二地址空间中存储的数据的擦除方式的擦除命令字,以及所述第二地址空间的地址;所述向所述业务板中的可编程逻辑器件发送擦除信息,包括:将所述第二地址空间的地址写入所述可编程逻辑器件中的地址寄存器,将所述擦除命令字写入所述可编程逻辑器件中的命令字寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述擦除命令字,以及所述地址寄存器中的所述第二地址空间的地址,使所述闪存按照所述擦除命令字所指示的擦除方式,从所述第二地址空间处擦除数据。
可选的,所述方法还包括:在将所述擦除命令字写入所述命令字寄存器之前,将用于指示所述闪存解除写保护状态的解除写保护命令字写入所述命令字寄存器,以及将表示触发传输操作的传输字符写入所述控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
可选的,所述写入信息还包含:用于指示所述闪存写入所述第一配置数据的第三地址空间的写入方式的写入命令字,以及所述第三地址空间的地址;所述向所述可编程逻辑器件发送包含当前待写入的第一配置数据的写入信息,包括:将所述写入命令字写入所述可编程逻辑器件中的命令字寄存器,将所述第三地址空间的地址写入所述可编程逻辑器件的地址寄存器,将所述第一配置数据写入所述可编程逻辑器件中的写入寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述写入命令字、所述地址寄存器中的所述第三地址空间的地址,以及所述写入寄存器中的所述第一配置数据,使所述闪存按照所述写入命令字所指示的写入方式,向所述第三地址空间处写入所述第一配置数据。
可选的,所述方法还包括:在将所述写入命令字写入所述命令字寄存器之前,将用于指示所述闪存解除写保护状态的解除写保护命令字写入所述命令字寄存器,以及将表示触发传输操作的传输字符写入所述控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
可选的,所述方法还包括:将第二读取命令字写入所述可编程逻辑器件中的命令字寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述第二读取命令字,使所述闪存基于所述第二读取命令字,从自身的寄存器读取数据,并向所述可编程逻辑器件发送读取到的数据,使所述可编程逻辑器件将所述闪存发送的数据写入自身的读取寄存器;其中,所述第二读取命令字用于指示所述闪存读取自身的寄存器中的数据;从所述读取寄存器中获取数据。
可选的,所述业务板包括多个闪存;所述方法还包括:将表示当前需要进行数据访问的目标闪存的标识字符,写入所述可编程逻辑器件中的标识寄存器,以使所述可编程逻辑器件基于所述标识寄存器中写入的所述标识字符对所述目标闪存进行数据访问。
本申请实施的第二方面,还提供了一种数据写入方法,应用于业务板中的可编程逻辑器件,所述方法包括:基于所述业务板中的CPU发送的擦除信息,擦除所述业务板中的闪存的地址空间中存储的数据;
在擦除所述闪存的地址空间中存储的数据后,基于所述CPU发送的包含当前待写入的第一配置数据的写入信息,将所述第一配置数据写入所述闪存的地址空间。
可选的,所述方法还包括:在将所述第一配置数据写入所述闪存的地址空间之后,基于所述CPU发送的读取信息,读取所述闪存的地址空间中存储的数据。
可选的,所述方法还包括:在擦除所述闪存的地址空间中存储的数据之前,若所述业务板中的包处理器启动异常,基于所述CPU发送的读取信息,读取所述闪存的地址空间中存储的数据。
可选的,所述读取信息包含:用于指示所述闪存读取第一地址空间中存储的数据的读取方式的第一读取命令字,以及所述第一地址空间的地址;所述基于所述CPU发送的读取信息,读取所述闪存的地址空间中存储的数据,包括:在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的所述第一读取命令字,以及自身的地址寄存器中的所述第一地址空间的地址,以使所述闪存按照所述第一读取命令字所指示的读取方式,从所述第一地址空间处读取数据,并向所述可编程逻辑器件发送读取到的数据;将所述闪存发送的数据写入自身的读取寄存器,以使所述CPU从所述读取寄存器中获取数据。
可选的,所述业务板还包括:用于连接外部烧录工具的预留加载座;所述可编程逻辑器件包括:第二开关;所述方法还包括:基于所述CPU的控制,控制所述第二开关导通所述CPU与所述可编程逻辑器件的第一接口的第一侧之间的连接;所述第一接口的第二侧用于连接所述闪存;当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,基于所述CPU的控制,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
可选的,所述基于所述CPU的控制,控制所述第二开关导通所述CPU与所述可编程逻辑器件的第一接口的第一侧之间的连接,包括:在自身的路径选择寄存器中写入表示通过所述CPU写入所述第一配置数据的第一路径选择字符时,控制所述第二开关导通所述CPU与所述第一接口的第一侧之间的连接;所述当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,基于所述CPU的控制,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接,包括:当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,在所述路径选择寄存器中写入表示通过所述外部烧录工具写入所述第一配置数据的第二路径选择字符时,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
可选的,所述擦除信息包含:用于指示所述闪存擦除第二地址空间中存储的数据的擦除方式的擦除命令字,以及所述第二地址空间的地址;所述基于所述业务板中的CPU发送的擦除信息,擦除所述业务板中的闪存的地址空间中存储的数据,包括:在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的擦除命令字,以及自身的地址寄存器中的第二地址空间的地址,使所述闪存按照所述擦除命令字所指示的擦除方式,从所述第二地址空间处擦除数据。
可选的,所述方法还包括:在所述命令字寄存器中写入有所述擦除命令字之前,在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的用于指示所述闪存解除写保护状态的解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
可选的,所述写入信息还包含:用于指示所述闪存写入所述第一配置数据的第三地址空间的写入方式的写入命令字,以及所述第三地址空间的地址;所述在擦除所述闪存的地址空间中存储的数据后,基于所述CPU发送的包含当前待写入的第一配置数据的写入信息,将所述第一配置数据写入所述闪存的地址空间,包括:在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的所述写入命令字、自身的地址寄存器中的所述第三地址空间的地址,以及自身的写入寄存器中的所述第一配置数据,以使所述闪存按照所述写入命令字所指示的写入方式,向所述第三地址空间处写入所述第一配置数据。
可选的,所述方法还包括:在所述命令字寄存器中写入有所述写入命令字之前,在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的用于指示所述闪存解除写保护状态的解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
可选的,所述方法还包括:在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的第二读取命令字,以使所述闪存基于所述第二读取命令字,从自身的寄存器读取数据,并向所述可编程逻辑器件发送读取到的数据;其中,所述第二读取命令字用于指示所述闪存读取自身的寄存器中的数据;将所述闪存发送的数据写入自身的读取寄存器,以使所述CPU从所述读取寄存器中获取数据。
可选的,所述业务板包括多个闪存;所述方法还包括:基于自身的标识寄存器中写入的表示当前需要进行数据访问的目标闪存的标识字符对所述目标闪存进行数据访问。
本申请实施的第三方面,还提供了一种数据写入装置,应用于业务板中的CPU,所述装置包括:
擦除信息发送模块,用于向所述业务板中的可编程逻辑器件发送擦除信息,以使所述可编程逻辑器件基于所述擦除信息,擦除所述业务板中的闪存的地址空间中存储的数据;
写入信息发送模块,用于在擦除所述闪存的地址空间中存储的数据后,向所述可编程逻辑器件发送包含当前待写入的第一配置数据的写入信息,以使所述可编程逻辑器件基于所述写入信息,将所述第一配置数据写入所述闪存的地址空间。
可选的,所述装置还包括:发送模块,用于在所述可编程逻辑器件将所述第一配置数据写入所述闪存的地址空间之后,向所述可编程逻辑器件发送读取信息,以使所述可编程逻辑器件基于所述读取信息,读取所述闪存的地址空间中存储的数据;第一判断模块,用于在获取所述可编程逻辑器件读取到的数据后,判断获取到的数据与所述第一配置数据是否一致;启动控制模块,用于若获取到的数据与所述第一配置数据一致,则控制所述业务板中的包处理器按照所述闪存的地址空间中存储的数据进行启动。
可选的,所述装置还包括:发送模块,用于在向所述可编程逻辑器件发送擦除信息之前,若所述业务板中的包处理器启动异常,向所述可编程逻辑器件发送读取信息,以使所述可编程逻辑器件基于所述读取信息,读取所述闪存的地址空间中存储的数据;第二判断模块,用于在获取所述可编程逻辑器件读取到的数据后,判断获取到的数据与上一次写入所述闪存的第二配置数据是否一致;所述擦除信息发送模块,具体用于若获取到的数据与所述第二配置数据不一致,则向所述业务板中的可编程逻辑器件发送擦除信息。
可选的,所述读取信息包含:用于指示所述闪存读取第一地址空间中存储的数据的读取方式的第一读取命令字,以及所述第一地址空间的地址;所述发送模块,具体用于将所述第一读取命令字写入所述可编程逻辑器件中的命令字寄存器,将所述第一地址空间的地址写入所述可编程逻辑器件中的地址寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述第一读取命令字,以及所述地址寄存器中的所述第一地址空间的地址,使所述闪存按照所述第一读取命令字所指示的读取方式,从所述第一地址空间处读取数据,并向所述可编程逻辑器件发送读取到的数据,使所述可编程逻辑器件将所述闪存发送的数据写入自身的读取寄存器;所述装置还包括:第一获取模块,用于从所述读取寄存器中获取数据。
可选的,所述业务板还包括:用于连接外部烧录工具的预留加载座;所述可编程逻辑器件包括:第二开关;所述装置还包括:第一控制模块,用于在向所述可编程逻辑器件发送擦除信息之前,控制所述第二开关导通所述CPU与所述可编程逻辑器件的第一接口的第一侧之间的连接;所述第一接口的第二侧用于连接所述闪存;第二控制模块,用于当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
可选的,所述第一控制模块,具体用于在向所述可编程逻辑器件发送擦除信息之前,将表示通过所述CPU写入所述第一配置数据的第一路径选择字符,写入所述可编程逻辑器件中的路径选择寄存器,以使所述可编程逻辑器件在所述路径选择寄存器中写入所述第一路径选择字符时,控制所述第二开关导通所述CPU与所述第一接口的第一侧之间的连接;所述第二控制模块,具体用于当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,将表示通过所述外部烧录工具写入所述第一配置数据的第二路径选择字符,写入所述路径选择寄存器,以使所述可编程逻辑器件在所述路径选择寄存器中写入所述第二路径选择字符时,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
可选的,所述擦除信息包含:用于指示所述闪存擦除第二地址空间中存储的数据的擦除方式的擦除命令字,以及所述第二地址空间的地址;所述擦除信息发送模块,具体用于将所述第二地址空间的地址写入所述可编程逻辑器件中的地址寄存器,将所述擦除命令字写入所述可编程逻辑器件中的命令字寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述擦除命令字,以及所述地址寄存器中的所述第二地址空间的地址,使所述闪存按照所述擦除命令字所指示的擦除方式,从所述第二地址空间处擦除数据。
可选的,所述装置还包括:第一写入模块,用于在将所述擦除命令字写入所述命令字寄存器之前,将用于指示所述闪存解除写保护状态的解除写保护命令字写入所述命令字寄存器,以及将表示触发传输操作的传输字符写入所述控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
可选的,所述写入信息还包含:用于指示所述闪存写入所述第一配置数据的第三地址空间的写入方式的写入命令字,以及所述第三地址空间的地址;所述写入信息发送模块,具体用于将所述写入命令字写入所述可编程逻辑器件中的命令字寄存器,将所述第三地址空间的地址写入所述可编程逻辑器件的地址寄存器,将所述第一配置数据写入所述可编程逻辑器件中的写入寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述写入命令字、所述地址寄存器中的所述第三地址空间的地址,以及所述写入寄存器中的所述第一配置数据,使所述闪存按照所述写入命令字所指示的写入方式,向所述第三地址空间处写入所述第一配置数据。
可选的,所述装置还包括:第二写入模块,用于在将所述写入命令字写入所述命令字寄存器之前,将用于指示所述闪存解除写保护状态的解除写保护命令字写入所述命令字寄存器,以及将表示触发传输操作的传输字符写入所述控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
可选的,所述装置还包括:第三写入模块,用于将第二读取命令字写入所述可编程逻辑器件中的命令字寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述第二读取命令字,使所述闪存基于所述第二读取命令字,从自身的寄存器读取数据,并向所述可编程逻辑器件发送读取到的数据,使所述可编程逻辑器件将所述闪存发送的数据写入自身的读取寄存器;其中,所述第二读取命令字用于指示所述闪存读取自身的寄存器中的数据;第二获取模块,用于从所述读取寄存器中获取数据。
可选的,所述业务板包括多个闪存;所述装置还包括:第四写入模块,用于将表示当前需要进行数据访问的目标闪存的标识字符,写入所述可编程逻辑器件中的标识寄存器,以使所述可编程逻辑器件基于所述标识寄存器中写入的所述标识字符对所述目标闪存进行数据访问。
本申请实施的第四方面,还提供了一种数据写入装置,应用于业务板中的可编程逻辑器件,所述装置包括:擦除模块,用于基于所述业务板中的中央处理器CPU发送的擦除信息,擦除所述业务板中的闪存的地址空间中存储的数据;写入模块,用于在擦除所述闪存的地址空间中存储的数据后,基于所述CPU发送的包含当前待写入的第一配置数据的写入信息,将所述第一配置数据写入所述闪存的地址空间。
可选的,所述装置还包括:读取模块,用于在将所述第一配置数据写入所述闪存的地址空间之后,基于所述CPU发送的读取信息,读取所述闪存的地址空间中存储的数据。
可选的,所述装置还包括:读取模块,用于在擦除所述闪存的地址空间中存储的数据之前,若所述业务板中的包处理器启动异常,基于所述CPU发送的读取信息,读取所述闪存的地址空间中存储的数据。
可选的,所述读取信息包含:用于指示所述闪存读取第一地址空间中存储的数据的读取方式的第一读取命令字,以及所述第一地址空间的地址;所述读取模块,具体用于在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的所述第一读取命令字,以及自身的地址寄存器中的所述第一地址空间的地址,以使所述闪存按照所述第一读取命令字所指示的读取方式,从所述第一地址空间处读取数据,并向所述可编程逻辑器件发送读取到的数据;所述装置还包括:第五写入模块,用于将所述闪存发送的数据写入自身的读取寄存器,以使所述CPU从所述读取寄存器中获取数据。
可选的,所述业务板还包括:用于连接外部烧录工具的预留加载座;所述可编程逻辑器件包括:第二开关;所述装置还包括:第三控制模块,用于基于所述CPU的控制,控制所述第二开关导通所述CPU与所述可编程逻辑器件的第一接口的第一侧之间的连接;所述第一接口的第二侧用于连接所述闪存;第四控制模块,用于当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,基于所述CPU的控制,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
可选的,所述第三控制模块,具体用于在自身的路径选择寄存器中写入表示通过所述CPU写入所述第一配置数据的第一路径选择字符时,控制所述第二开关导通所述CPU与所述第一接口的第一侧之间的连接;所述第四控制模块,具体用于当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,在所述路径选择寄存器中写入表示通过所述外部烧录工具写入所述第一配置数据的第二路径选择字符时,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
可选的,所述擦除信息包含:用于指示所述闪存擦除第二地址空间中存储的数据的擦除方式的擦除命令字,以及所述第二地址空间的地址;所述擦除模块,具体用于在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的擦除命令字,以及自身的地址寄存器中的第二地址空间的地址,使所述闪存按照所述擦除命令字所指示的擦除方式,从所述第二地址空间处擦除数据。
可选的,所述装置还包括:第一发送模块,用于在所述命令字寄存器中写入有所述擦除命令字之前,在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的用于指示所述闪存解除写保护状态的解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
可选的,所述写入信息还包含:用于指示所述闪存写入所述第一配置数据的第三地址空间的写入方式的写入命令字,以及所述第三地址空间的地址;所述写入模块,具体用于在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的所述写入命令字、自身的地址寄存器中的所述第三地址空间的地址,以及自身的写入寄存器中的所述第一配置数据,以使所述闪存按照所述写入命令字所指示的写入方式,向所述第三地址空间处写入所述第一配置数据。
可选的,所述装置还包括:第二发送模块,用于在所述命令字寄存器中写入有所述写入命令字之前,在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的用于指示所述闪存解除写保护状态的解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
可选的,所述装置还包括:第三发送模块,用于在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的第二读取命令字,以使所述闪存基于所述第二读取命令字,从自身的寄存器读取数据,并向所述可编程逻辑器件发送读取到的数据;其中,所述第二读取命令字用于指示所述闪存读取自身的寄存器中的数据;第六写入模块,用于将所述闪存发送的数据写入自身的读取寄存器,以使所述CPU从所述读取寄存器中获取数据。
可选的,所述业务板包括多个闪存;所述装置还包括:数据访问模块,用于基于自身的标识寄存器中写入的表示当前需要进行数据访问的目标闪存的标识字符对所述目标闪存进行数据访问。
本申请实施的第五方面,还提供了一种处理器,所述处理器用于执行上述任一所述的应用于业务板中的CPU的数据写入方法步骤。
本申请实施的第六方面,还提供了一种可编程逻辑器件,所述可编程逻辑器件用于执行上述任一所述的应用于业务板中的可编程逻辑器件的数据写入方法步骤。
本申请实施例还提供了一种业务板,所述业务板包括如上述第四方面所述的处理器、如上述第五方面所述的可编程逻辑器件,以及闪存。
可选的,所述业务板还包括包处理器和第一开关,所述第一开关,用于在需要通过所述包处理器向所述闪存中写入所述第一配置数据时,断开所述可编程逻辑器件与所述闪存之间的连接;在需要通过所述可编程逻辑器件向所述闪存中写入所述第一配置数据时,导通所述可编程逻辑器件与所述闪存之间的连接。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的数据写入方法步骤。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据写入方法。
本申请实施例提供的一种业务板,业务板包括: CPU、可编程逻辑器件以及闪存,其中:CPU,用于向可编程逻辑器件发送擦除信息;可编程逻辑器件,用于基于擦除信息,擦除闪存的地址空间中存储的数据;CPU,还用于在擦除闪存的地址空间中存储的数据后,向可编程逻辑器件发送包含当前待写入的第一配置数据的写入信息;可编程逻辑器件,还用于基于写入信息,将第一配置数据写入闪存的地址空间。
基于上述处理,CPU可以通过业务板中的可编程逻辑器件将闪存中存储的配置数据擦除,并通过可编程逻辑器件向闪存中写入当前待写入的配置数据,因此,无需将闪存从业务板上拆离并重新焊接,能够避免反复焊接闪存导致业务板报废,也就可以提高对业务板进行维护的效率,降低维护的成本。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为本申请实施例提供的一种业务板的结构示意图;
图2为本申请实施例提供的数据写入方法的第一种流程示意图;
图3为本申请实施例提供的数据写入方法的第二种流程示意图;
图4为本申请实施例提供的数据写入方法的第三种流程示意图;
图5为本申请实施例提供的数据写入方法的第四种流程示意图;
图6为本申请实施例提供的数据写入方法的第五种流程示意图;
图7为本申请实施例提供的数据写入方法的第六种流程示意图;
图8为本申请实施例提供的数据写入方法的第七种流程示意图;
图9为本申请实施例提供的数据写入方法的第八种流程示意图;
图10为包含相关技术中的一种业务板的系统的结构示意图;
图11为包含本申请实施例提供的一种业务板的系统的结构示意图;
图12为本申请实施例提供的一种可编程逻辑器件内部的时序状态机的示意图;
图13为本申请实施例提供的一种读取闪存的状态寄存器的流程示意图;
图14为本申请实施例提供的图13所示的流程中闪存的时序图;
图15为本申请实施例提供的一种写入闪存的状态寄存器的流程示意图;
图16为本申请实施例提供的图15所示的流程中闪存的时序图;
图17为本申请实施例提供的一种擦除闪存的地址空间的流程示意图;
图18为本申请实施例提供的图17所示的流程中闪存的时序图;
图19为本申请实施例提供的一种读取闪存的地址空间中的数据的流程示意图;
图20为本申请实施例提供的图19所示的流程中闪存的时序图;
图21为本申请实施例提供的一种向闪存的地址空间写入数据的流程示意图;
图22为本申请实施例提供的图21所示的流程中闪存的时序图;
图23为本申请实施例提供的一种数据写入装置的结构示意图;
图24为本申请实施例提供的另一种数据写入装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本申请保护的范围。
随着网络技术的不断发展,核心路由器的应用越来越广泛。业务板是核心路由器的重要组成部分,主要用于接收和发送数据。业务板的组成部分包括CPU、包处理器以及闪存。闪存用于存储业务板上电启动过程中所需的配置数据。包处理器通过SPI接口与闪存连接。在业务板上电启动的过程中,包处理器从闪存中获取配置数据,以完成自身的启动。配置数据包括引导包处理器启动所需的固件内容。
相关技术中,当闪存中存储的配置数据损坏或者丢失时,会导致包处理器无法正常启动,CPU也就无法通过包处理器向闪存中写入配置数据。此时,只能将闪存从业务板上拆离并借助外部烧录工具重新向闪存中烧录配置数据,烧录完成后重新将闪存焊接至业务板,以实现闪存中配置数据的更新或者修复,相应的,在闪存中配置数据的更新或者修复完成后,包处理器能够重新启动。
可见,基于上述方式,需要将闪存从业务板上拆离并重新焊接,而反复焊接闪存严重的会导致业务板报废,即,会导致对业务板进行维护的效率较低,且成本较高。
为了提高对业务板维护的效率,降低维护的成本,参见图1,图1为本申请实施例提供的一种业务板的结构示意图,业务板10包括:CPU101、可编程逻辑器件102以及闪存103,其中:
CPU101,用于向可编程逻辑器件102发送擦除信息。
可编程逻辑器件102,用于基于擦除信息,擦除闪存103的地址空间中存储的数据。
CPU101,还用于在擦除闪存103的地址空间中存储的数据后,向可编程逻辑器件102发送包含当前待写入的第一配置数据的写入信息。
可编程逻辑器件102,还用于基于写入信息,将第一配置数据写入闪存103的地址空间。
基于上述处理,CPU101可以通过可编程逻辑器件102将闪存103中存储的配置数据擦除,并通过可编程逻辑器件102向闪存103中写入当前待写入的配置数据,因此,无需将闪存103从业务板10上拆离并重新焊接,能够避免反复焊接闪存103导致业务板10报废,也就可以提高对业务板10进行维护的效率,降低维护的成本。针对上述业务板10的其他实施例,可以参考后续数据写入方法的相关实施例。
基于相同的发明构思,本申请实施例提供了一种数据写入方法,该方法可以应用于业务板(即上述业务板10),该业务板包括:CPU、可编程逻辑器件以及闪存。该CPU可以为上述业务板10中的CPU101,该可编程逻辑器件可以为上述业务板10中的可编程逻辑器件102,该闪存可以为上述业务板10中的闪存103。参见图2,图2为本申请实施例提供的数据写入方法的第一种流程示意图,该方法可以包括以下步骤:
步骤S201:CPU向可编程逻辑器件发送擦除信息。
步骤S202:可编程逻辑器件基于擦除信息,擦除闪存的地址空间中存储的数据。
步骤S203:在擦除闪存的地址空间中存储的数据后,CPU向可编程逻辑器件发送包含当前待写入的第一配置数据的写入信息。
步骤S204:可编程逻辑器件基于写入信息,将第一配置数据写入闪存的地址空间。
基于本申请实施例提供的数据写入方法,CPU可以通过业务板中的可编程逻辑器件将闪存中存储的配置数据擦除,并通过可编程逻辑器件向闪存中写入当前待写入的配置数据,因此,无需将闪存从业务板上拆离并重新焊接,能够避免反复焊接闪存导致业务板报废,也就可以提高对业务板进行维护的效率,降低维护的成本。
针对步骤S201和步骤S202,闪存中当前存储的数据可以为上一次写入的配置数据。闪存的地址空间用于存储配置数据。包处理器启动异常可能是闪存中存储的配置数据损坏或者丢失导致的,此时,需要对闪存中存储的配置数据进行更新或者修复。由于闪存中存储的配置数据可能损坏,因此,将闪存的地址空间中当前存储的数据擦除,以擦除闪存中当前存储的配置数据。后续,CPU可以写入当前待写入的配置数据(即第一配置数据),以实现对闪存中存储的配置数据进行更新或者修复。
可编程逻辑器件可以为CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)或者FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)。
在一个实施例中,参见图3,图3为本申请实施例提供的数据写入方法的第二种流程示意图,擦除信息包含:用于指示闪存擦除第二地址空间中存储的数据的擦除方式的擦除命令字,以及第二地址空间的地址。CPU向可编程逻辑器件发送擦除信息(步骤S201),包括:步骤S2011:CPU将第二地址空间的地址写入可编程逻辑器件中的地址寄存器,将擦除命令字写入可编程逻辑器件中的命令字寄存器,以及将表示触发传输操作的传输字符写入可编程逻辑器件中的控制寄存器。
可编程逻辑器件基于擦除信息,擦除闪存的地址空间中存储的数据(步骤S202),包括:步骤S2021:在控制寄存器中写入有传输字符时,可编程逻辑器件向闪存发送命令字寄存器中的擦除命令字,以及地址寄存器中的第二地址空间的地址。
方法还包括:步骤S205:闪存按照擦除命令字所指示的擦除方式,从第二地址空间处擦除数据。
在本申请实施例中,第二地址空间为当前需要擦除的地址空间,例如,可以根据用户选择的擦除方式以及闪存中待擦除数据的地址空间确定第二地址空间。地址寄存器(也可以称为Flash片内Array(阵列)地址寄存器)可以为一个或者多个,例如,地址寄存器可以为一个具有32个比特位的寄存器,或者,地址寄存器可以为四个具有8个比特位的寄存器。相应的,地址寄存器中可以写入长度不大于32个比特位的地址,如,可以写入0000 0000H(hexadecimal,十六进制)-01FF FFFFH表示的地址。
命令字寄存器(也可以称为Flash SPI命令字写入寄存器CMD(command,命令))也可以为一个或者多个,例如,命令字寄存器可以为一个具有16个比特位的寄存器,或者,命令字寄存器可以为两个具有8个比特位的寄存器。相应的,CPU可以向命令字寄存器中写入长度不大于16个比特位的命令字。
控制寄存器(也可以称为Flash SPI读写控制寄存器)用于存储表示触发传输操作的传输字符。例如,控制寄存器可以为一个具有8个比特位的寄存器,相应的,传输字符可以为0x01。
擦除命令字(也可以称为Erase(擦除)命令字)可以用于指示闪存一次擦除的数据大小。例如,擦除命令字可以为0x2120,指示闪存一次擦除4KB(Kilobyte,千字节)数据。如,一个地址空间存储的数据大小为1个字节,因此,按照擦除命令字所指示的擦除方式,一次擦除多个地址空间中存储的数据,直至擦除所有需要擦除的地址空间中存储的数据。
基于上述处理,CPU可以通过可编程逻辑器件向闪存发送擦除命令字以及第二地址空间的地址,也就能够指示闪存按照擦除命令字所指示的擦除方式,将第二地址空间中存储的数据擦除。即,CPU能够通过向可编程逻辑器件中的寄存器中写入擦除信息,以实现数据的擦除。进而,后续CPU能够通过可编程逻辑器件向闪存中写入配置数据。基于此,也就能够实现对业务板的维护,保证对业务板进行维护的可靠性。
在一个实施例中,参见图4,图4为本申请实施例提供的数据写入方法的第三种流程示意图,数据写入方法还包括:步骤S206:在将擦除命令字写入命令字寄存器之前,CPU将用于指示闪存解除写保护状态的解除写保护命令字写入命令字寄存器,以及将表示触发传输操作的传输字符写入控制寄存器。
步骤S207:在控制寄存器中写入有传输字符时,可编程逻辑器件向闪存发送命令字寄存器中的解除写保护命令字。
步骤S208:闪存基于解除写保护命令字,解除自身的写保护状态。
在本申请实施例中,闪存可以默认处于写保护状态,当闪存处于写保护状态时,可编程逻辑器件只能从闪存获取到闪存的地址空间中存储的数据,不能擦除闪存的地址空间中存储的数据。因此,在CPU控制可编程逻辑器件擦除闪存中存储的数据之前,CPU可以向可编程逻辑器件的命令字寄存器中写入解除写保护命令字,例如,解除写保护命令字可以为0x0610,可编程逻辑器件可以向闪存发送解除写保护命令字。闪存可以在接收到解除写保护命令字时,解除自身的写保护状态。进而,后续CPU可以控制可编程逻辑器件擦除闪存的地址空间中存储的数据。
基于上述处理,能够解除闪存的写保护状态,进而,保证后续CPU可以控制可编程逻辑器件擦除闪存的地址空间中存储的数据。相应的,也就能够保证CPU可以控制可编程逻辑器件向闪存的地址空间中写入当前待写入闪存的配置数据。基于此,也就能够进一步保证对业务板进行维护的可靠性。
在一个实施例中,通过执行步骤S206-步骤S208可以解除闪存的软件写保护状态。另外,在解除软件写保护状态之前,例如,在将第二地址空间的地址写入可编程逻辑器件中的地址寄存器,CPU可以通过可编程逻辑器件解除闪存的硬件写保护状态。CPU还可以将解除硬件写保护字符写入可编程逻辑器件中的寄存器(本申请中可以称为Flash 硬件写保护WP(Write Protect,写保护)控制寄存器)。解除硬件写保护字符可以用于拉高闪存的WP管脚。例如,Flash 硬件写保护WP控制寄存器可以为具有8个比特位的寄存器,相应的,解除硬件写保护字符可以为0x01。
当闪存的WP管脚拉高时,CPU可以将第一写入命令字写入可编程逻辑器件中的命令字寄存器,将第一地址标识字符写入可编程逻辑器件中的写入寄存器,以及将表示触发传输操作的传输字符写入可编程逻辑器件中的控制寄存器。第一地址标识字符用于表示需要解除硬件写保护的地址空间的地址范围。第一写入命令字可以用于指示闪存向状态寄存器中写入数据。例如,第一写入命令字可以为0x0101。写入寄存器(也可以称为Flash SPI数据写入寄存器 Write Data(写入数据))可以用于接收CPU写入的当前待写入闪存的状态寄存器中的数据。在控制寄存器中写入有传输字符时,可编程逻辑器件向闪存发送命令字寄存器中的第一写入命令字以及写入寄存器中的第一地址标识字符。闪存根据第一写入命令字,向状态寄存器中写入第一地址标识字符。相应的,闪存可以按照第一地址标识字符所指示的地址空间的地址范围,解除属于该地址范围的地址空间的硬件写保护状态。
闪存的状态寄存器(也可以称为SR(status register,状态寄存器)寄存器)可以用于记录闪存的硬件写保护状态,例如,闪存的状态寄存器可以为具有8个比特位的寄存器,该8个比特位从高到低可以依次称为比特位7、比特位6、…、比特位0。其中,可以用四个比特位记录当前需要解除硬件写保护的地址空间的地址范围(即第一地址标识字符),如,该四个比特位可以为比特位6、比特位4、比特位3和比特位2。相应的,第一地址标识字符可以为0000,表示当前需要解除所有地址空间的硬件写保护状态。
在一个实施例中,在解除硬件写保护状态之后,CPU可以将硬件写保护生效字符写入可编程逻辑器件中的Flash 硬件写保护WP控制寄存器。硬件写保护生效字符可以用于拉低闪存的WP管脚。当闪存的WP管脚拉低时,CPU无法通过可编程逻辑器件向闪存中写入数据。当需要向闪存中写入数据时,CPU可以将解除硬件写保护字符写入可编程逻辑器件中的Flash 硬件写保护WP控制寄存器,以拉高闪存的WP管脚。基于此,能够避免在解除硬件写保护状态之后,出现向闪存中写入错误的数据的情况,进一步保证向闪存中写入数据的可靠性。
在一个实施例中,在解除硬件写保护状态之后,CPU可以通过可编程逻辑器件使闪存的硬件写保护状态生效。CPU可以将解除硬件写保护字符写入可编程逻辑器件中的Flash硬件写保护WP控制寄存器。当闪存的WP管脚拉高时,CPU可以将第一写入命令字写入可编程逻辑器件中的命令字寄存器,将第二地址标识字符写入可编程逻辑器件中的写入寄存器,以及将表示触发传输操作的传输字符写入可编程逻辑器件中的控制寄存器。第二地址标识字符用于表示需要硬件写保护生效的地址空间的地址范围。例如,第二地址标识字符可以为1111,表示当前需要使所有地址空间的硬件写保护状态生效。
在控制寄存器中写入有传输字符时,可编程逻辑器件向闪存发送命令字寄存器中的第一写入命令字以及写入寄存器中的第二地址标识字符。闪存根据第一写入命令字,向状态寄存器中写入第二地址标识字符。相应的,闪存可以按照第二地址标识字符所指示的地址空间的地址范围,使属于该地址范围的地址空间的硬件写保护状态生效。在硬件写保护状态生效之后,CPU可以将硬件写保护生效字符写入可编程逻辑器件中的Flash 硬件写保护WP控制寄存器。基于此,也就能够在完成数据写入之后,重新恢复闪存的硬件写保护状态,进一步保证向闪存中写入数据的可靠性。
针对步骤S203和步骤S204,第一配置数据为当前待写入闪存的配置数据。当需要对闪存中存储的配置数据进行修复时,第一配置数据可以为上一次写入闪存的配置数据。当需要对闪存中存储的配置数据进行更新时,第一配置数据可以为当前包处理器启动所需的最新的配置数据,即当前引导包处理器启动所需的固件内容。在将闪存的地址空间中存储的数据擦除后,CPU可以向可编程逻辑器件发送包含第一配置数据的写入信息,进而,可编程逻辑器件可以根据写入信息,将第一配置数据写入闪存的地址空间。
在一个实施例中,参见图5,图5为本申请实施例提供的数据写入方法的第四种流程示意图,写入信息还包含:用于指示闪存写入第一配置数据的第三地址空间的写入方式的写入命令字,以及第三地址空间的地址。在擦除闪存的地址空间中存储的数据后,CPU向可编程逻辑器件发送包含当前待写入的第一配置数据的写入信息(步骤S203),包括:步骤S2031:CPU将写入命令字写入可编程逻辑器件中的命令字寄存器,将第三地址空间的地址写入可编程逻辑器件的地址寄存器,将第一配置数据写入可编程逻辑器件中的写入寄存器,以及将表示触发传输操作的传输字符写入可编程逻辑器件中的控制寄存器。
可编程逻辑器件基于写入信息,将第一配置数据写入闪存的地址空间(步骤S204),包括:
步骤2041:在控制寄存器中写入有传输字符时,可编程逻辑器件向闪存发送命令字寄存器中的写入命令字、地址寄存器中的第三地址空间的地址,以及写入寄存器中的第一配置数据。
数据写入方法还包括:
步骤S209:闪存按照写入命令字所指示的写入方式,向第三地址空间处写入第一配置数据。
在本申请实施例中,第三地址空间为闪存中用于存储配置数据的地址空间。写入寄存器(也可以称为Flash SPI数据写入寄存器 Write Data(写入数据))还可以用于接收CPU写入的当前待写入闪存的配置数据(即第一配置数据)。例如,写入寄存器可以为具有8个比特位的寄存器,相应的,CPU每次向写入寄存器中写入8个比特位的数据,可编程逻辑器件在一次传输操作中将该8个比特位的数据发送给闪存。
写入命令字(也可以称为第二写入命令字)可以用于指示闪存一次写入的数据大小,例如,写入命令字可以为0x1230,指示闪存一次写入4B(Byte,字节)的数据。若可编程逻辑器件每次传输操作向闪存发送8个比特位(即1个字节)的数据,闪存可以在接收到写入命令字所指示的一次写入的数据大小(即4B)的数据时,将4B数据一起写入地址空间,直至将第一配置数据全部写入第三地址空间。
基于上述处理,CPU通过可编程逻辑器件中的寄存器向闪存发送写入命令字以及第三地址空间的地址,以指示闪存按照写入命令字所指示的写入方式,向第三地址空间中写入第一配置数据。即,CPU能够通过可编程逻辑器件向闪存中写入配置数据。基于此,也就无需将闪存从业务板上拆离并重新焊接,能够避免反复焊接闪存导致业务板报废,也就可以提高对业务板进行维护的效率,降低维护的成本。
在一个实施例中,参见图6,图6为本申请实施例提供的数据写入方法的第五种流程示意图,数据写入方法还包括:步骤S210:在将写入命令字写入命令字寄存器之前,CPU将用于指示闪存解除写保护状态的解除写保护命令字写入命令字寄存器,以及将表示触发传输操作的传输字符写入控制寄存器。
步骤S211:在控制寄存器中写入有传输字符时,可编程逻辑器件向闪存发送命令字寄存器中的解除写保护命令字。
步骤S212:闪存基于解除写保护命令字,解除自身的写保护状态。
在本申请实施例中,闪存可以默认处于写保护状态,当闪存处于写保护状态时,可编程逻辑器件只能从闪存获取到闪存的地址空间中存储的数据,不能向闪存的地址空间中写入当前待写入的第一配置数据。因此,在CPU控制可编程逻辑器件向闪存的地址空间中写入当前待写入的第一配置数据之前,CPU可以向可编程逻辑器件的命令字寄存器中写入解除写保护命令字,可编程逻辑器件可以向闪存发送解除写保护命令字。相应的,闪存在接收到解除写保护命令字时,可以解除自身的写保护状态。进而,后续CPU可以控制可编程逻辑器件向闪存的地址空间中写入当前待写入的第一配置数据。
基于上述处理,能够解除闪存的写保护状态,进而,保证后续CPU可以控制可编程逻辑器件向闪存的地址空间中写入当前待写入的第一配置数据,也就无需将闪存从业务板上拆离并重新焊接,能够避免反复焊接闪存导致业务板报废,提高对业务板进行维护的效率,降低维护的成本。
在一个实施例中,通过执行步骤S210-步骤S212可以解除闪存的软件写保护状态。另外,在解除软件写保护状态之前,CPU可以通过可编程逻辑器件解除闪存的硬件写保护状态。CPU可以将解除硬件写保护字符写入可编程逻辑器件中的Flash 硬件写保护WP控制寄存器。解除硬件写保护字符可以用于拉高闪存的WP管脚。当闪存的WP管脚拉高时,CPU可以将第一写入命令字写入可编程逻辑器件中的命令字寄存器,将第一地址标识字符写入可编程逻辑器件中的写入寄存器,以及将表示触发传输操作的传输字符写入可编程逻辑器件中的控制寄存器。在控制寄存器中写入有传输字符时,可编程逻辑器件向闪存发送命令字寄存器中的第一写入命令字以及写入寄存器中的第一地址标识字符。闪存根据第一写入命令字,向状态寄存器中写入第一地址标识字符。相应的,闪存可以按照第一地址标识字符所指示的地址空间的地址范围,解除属于该地址范围的地址空间的硬件写保护状态。
在一个实施例中,参见图7,图7为本申请实施例提供的数据写入方法的第六种流程示意图,业务板还包括包处理器,数据写入方法还包括:步骤S213:在可编程逻辑器件将第一配置数据写入闪存的地址空间之后,CPU向可编程逻辑器件发送读取信息。
步骤S214:可编程逻辑器件基于读取信息,读取闪存的地址空间中存储的数据。
步骤S215:在获取可编程逻辑器件读取到的数据后,CPU判断获取到的数据与第一配置数据是否一致。
步骤S216:若获取到的数据与第一配置数据一致,则CPU控制包处理器按照闪存的地址空间中存储的数据进行启动。
在本申请实施例中,在将当前待写入的第一配置数据写入闪存的地址空间之后,CPU可以通过可编程逻辑器件获取闪存的地址空间中存储的数据。进而,CPU可以比较获取到的数据与第一配置数据是否一致,以对当前写入闪存的地址空间中的数据进行校验,保证当前写入闪存的地址空间中的数据的准确性。在获取到的数据与第一配置数据一致的情况下,CPU控制包处理器按照闪存的地址空间中存储的数据进行启动。基于此,也就能够保证CPU控制包处理器按照当前最新的配置数据进行启动,进而,完成业务板的启动,也就能够提高对业务板进行维护的可靠性并保证业务板正常启动。
在一个实施例中,参见图8,图8为本申请实施例提供的数据写入方法的第七种流程示意图,业务板还包括包处理器,数据写入方法还包括:步骤S217:在向可编程逻辑器件发送擦除信息之前,若包处理器启动异常,CPU向可编程逻辑器件发送读取信息。
步骤S218:可编程逻辑器件基于读取信息,读取闪存的地址空间中存储的数据。
步骤S219:在获取可编程逻辑器件读取到的数据后,CPU判断获取到的数据与上一次写入闪存的第二配置数据是否一致。
CPU向可编程逻辑器件发送擦除信息(步骤S201),包括:
步骤S2012:若获取到的数据与第二配置数据不一致,则CPU向可编程逻辑器件发送擦除信息。
在本申请实施例中,CPU可以确定包处理器是否启动异常,例如,CPU和包处理器可以通过PCIE(peripheral component interconnect express,一种高速串行计算机扩展总线标准)接口连接,CPU可以在PCIE接口未正常LINK UP(连接)时,确定包处理器启动异常。当包处理器启动异常时,在控制可编程逻辑器件对闪存进行擦除和写入操作之前,CPU可以读取闪存的地址空间中当前存储的数据。并且,CPU还可以获得上一次写入闪存的配置数据(即第二配置数据)。例如,CPU可以通过主控板获得第二配置数据,如,主控板可以向CPU发送第二配置数据,相应的,CPU可以将第二配置数据存储至随机存取存储器中。进而,CPU可以从随机存取存储器中获得第二配置数据。
CPU可以比较获取到的数据与第二配置数据是否一致,以确定当前包处理器启动异常是否是由于闪存的地址空间中当前存储的配置数据损坏或者丢失导致的。在获取到的数据与第二配置数据不一致的情况下,表明是由于闪存的地址空间中当前存储的配置数据损坏或者丢失导致的,CPU可以向可编程逻辑器件发送擦除信息,以控制可编程逻辑器件擦除闪存的地址空间中当前存储的配置数据。后续,CPU控制可编程逻辑器件向闪存的地址空间中写入当前待写入的第一配置数据,以实现配置数据的更新或修复。在获取到的数据与第二配置数据一致的情况下,可以确定当前包处理器启动异常并不是闪存的地址空间中当前存储的配置数据损坏或者丢失导致的。此时,重新写入配置数据并不能使包处理器正常启动。需要对当前包处理器启动异常的原因进行分析,以采取其他的方式处理异常。
在其他原因导致包处理器启动异常时,若CPU仍通过控制可编程逻辑器件向闪存中写入配置数据,并不能解决异常,且会造成资源的浪费。基于上述方式,也就能够在确定包处理器启动异常是由于闪存的地址空间中当前存储的配置数据损坏或者丢失导致的时,CPU通过可编程逻辑器件向闪存中写入第一配置数据,可以避免资源的浪费,进一步提高对业务板进行维护的效率。
在一个实施例中,读取信息包含:用于指示闪存读取第一地址空间中存储的数据的读取方式的第一读取命令字,以及第一地址空间的地址。步骤一:CPU将第一读取命令字写入可编程逻辑器件中的命令字寄存器,将第一地址空间的地址写入可编程逻辑器件中的地址寄存器,以及将表示触发传输操作的传输字符写入可编程逻辑器件中的控制寄存器。步骤二:在控制寄存器中写入有传输字符时,可编程逻辑器件向闪存发送命令字寄存器中的第一读取命令字,以及地址寄存器中的第一地址空间的地址。步骤三:闪存按照第一读取命令字所指示的读取方式,从第一地址空间处读取数据,并向可编程逻辑器件发送读取到的数据。步骤四:可编程逻辑器件将闪存发送的数据写入自身的读取寄存器。步骤五:CPU从读取寄存器中获取数据。
在本申请实施例中,第一地址空间为闪存中当前存储配置数据的地址空间。读取寄存器(也可以称为Flash SPI数据回读寄存器 Read Data(读取数据))用于接收闪存发送的数据。例如,读取寄存器可以为具有8个比特位的寄存器,相应的,闪存每次向读取寄存器发送8个比特位的数据,CPU也就可以一次从读取寄存器中获取该8个比特位的数据。第一读取命令字可以用于指示闪存一次读取的数据大小,例如,第一读取命令字可以为0x1320,指示闪存一次读取4KB的数据。相应的,闪存可以一次读取4KB的数据,每次向可编程逻辑器件发送8个比特位的数据,直至发送完本次读取的4KB的数据,再进行下一次读取4KB的数据,直至读取第一地址空间中存储的所有数据。
基于上述处理,CPU通过可编程逻辑器件中的寄存器向闪存发送第一读取命令字以及第一地址空间的地址,也就能够指示闪存按照第一读取命令字所指示的读取方式,从第一地址空间读取数据。即,CPU能够通过可编程逻辑器件获取闪存中存储的配置数据。基于此,也就能够获取闪存中存储的配置数据,也就能够实现上述实施例中对当前写入闪存的地址空间中的数据进行校验以及确定包处理器启动异常的原因,进而,也就能够进一步提高对业务板进行维护的可靠性以及对业务板进行维护的效率。
在一个实施例中,参见图9,图9为本申请实施例提供的数据写入方法的第八种流程示意图。在本申请实施例中,包处理器也可以为网络处理器。数据写入方法可以包括以下步骤:步骤S901:网络处理器启动异常。即,CPU可以确定包处理器是否启动异常,并在确定启动异常的情况下,执行后续的步骤。
步骤S902:操作CPLD寄存器回读闪存全地址空间的内容。即上述实施例中的步骤S217和步骤S218。
步骤S903:判断回读内容与原始烧录文件是否一致,若是,执行步骤S904;若否,执行步骤S905。即上述实施例中的步骤S219。
步骤S904:分析其他原因。即,CPU可以对当前包处理器启动异常的原因进行分析,以采取其他的方式处理异常。
步骤S905:操作CPLD寄存器对闪存全地址空间进行擦除。即,CPU通过操作CPLD中的寄存器以实现对闪存中全地址空间的擦除,可以参考上述实施例中步骤S2011、步骤S2021以及步骤S205的相关描述。
步骤S906:操作CPLD寄存器将原始烧录二进制文件逐地址写入闪存。即,CPU通过操作CPLD中的寄存器以实现将上一次烧录的二进制文件写入闪存,可以参考上述实施例中步骤S2031、步骤S2041以及步骤S209的相关描述。
步骤S907:操作CPLD寄存器对闪存全地址空间对闪存全地址空间进行回读,并与原始烧录文件比对。即,CPU通过操作CPLD中的寄存器以获取闪存的地址空间中存储的数据。进而,CPU可以比较获取到的数据与第一配置数据是否一致,以对当前写入闪存的地址空间中的数据进行校验,保证当前写入闪存的地址空间中的数据的准确性。可以参考上述实施例中步骤S214-步骤S216以及步骤一-步骤五的相关描述。
步骤S908:在回读的数据与原始烧录文件一致的情况下,重启系统恢复完成本次维护。即,在获取到的数据与第一配置数据一致的情况下,CPU控制包处理器按照闪存的地址空间中存储的数据进行重启。
基于上述处理,当网络处理器连接的闪存中配置数据烧录错误或损坏导致网络处理器启动异常时,业务板(也可以称为板卡)中的CPU可以通过软件命令行或者自修复流程恢复闪存中的文件,让网络处理器重新正常启动。基于此,也就无需从业务板上拆下闪存借助外部烧录工具进行烧录,能够避免反复焊接闪存导致业务板报废,提高业务板的可维护性。另外,无论闪存中的配置数据是否缺失或破坏,在不拆焊闪存且不借助外部烧录工具的情形下,能够实现对闪存中存储的数据进行更新升级,提高了对业务板进行调试和维护的便利性。在现网或业务测试时,当包处理器由于闪存中配置数据缺失而无法启动时,CPU可以通过CPLD(即上述实施例中的可编程逻辑器件)对闪存中的配置数据进行修复,让包处理器恢复并重新启动,能够降低损失以及对业务的影响。
在一个实施例中,业务板包括多个闪存,数据写入方法还包括:CPU将表示当前需要进行数据访问的目标闪存的标识字符,写入可编程逻辑器件中的标识寄存器。可编程逻辑器件基于标识寄存器中写入的标识字符对目标闪存进行数据访问。
在本申请实施例中,需要进行数据访问的目标闪存可以是当前需要读取或者写入数据的闪存。
例如,当需要读取目标闪存中存储的数据时,在将第一读取命令字写入命令字寄存器之前,CPU将标识字符写入标识寄存器。例如,当需要向目标闪存中写入数据时,在将第二地址空间的地址写入地址寄存器以及将写入命令字写入命令字寄存器之前,CPU将标识字符写入标识寄存器。用户可以根据闪存的数目设置标识字符,并确定标识寄存器中用于写入标识字符的比特位。例如,闪存的数目为2个,则标识字符可以为0或者1,以表示2个不同的闪存,标识寄存器可以为一个具有8个比特位的寄存器。相应的,CPU可以将标识字符写入标识寄存器中的任意一个比特位。进而,可编程逻辑器件基于标识寄存器中写入的标识字符,确定标识字符所表示的闪存(即目标闪存)。
基于上述处理,能够在业务板中存在多个闪存时,确定出当前需要进行数据访问的闪存(即目标闪存),也就能够保证确定出的当前进行数据访问的闪存的准确性,进而保证当前进行数据访问的可靠性。
在一个实施例中,业务板还包括包处理器和第一开关,第一开关用于在需要通过包处理器向闪存中写入第一配置数据时,断开可编程逻辑器件与闪存之间的连接;在需要通过可编程逻辑器件向闪存中写入第一配置数据时,导通可编程逻辑器件与闪存之间的连接。
在本申请实施例中,可编程逻辑器件与第一开关可以通过Flash接口连接,第一开关和闪存可以通过SPI接口连接。CPU可以通过可编程逻辑器件控制第一开关。例如,CPU可以通过可编程逻辑器件向第一开关发送指示第一开关断开或者导通的信号。相应的,第一开关在接收到信号时,可以断开或者导通可编程逻辑器件与闪存之间的连接。或者,用户可以通过手动操作的方式控制第一开关,以断开或者导通可编程逻辑器件与闪存之间的连接。如,第一开关可以为SN3125开关。
由于当需要通过包处理器向闪存中写入第一配置数据时,若导通可编程逻辑器件与闪存之间的连接,则可编程逻辑器件与闪存之间的连接可能会对包处理器与闪存之间的信号传输产生影响。因此,可以通过在需要通过包处理器向闪存中写入第一配置数据时,断开可编程逻辑器件与闪存之间的连接,从而避免可编程逻辑器件与闪存之间的连接对包处理器与闪存之间的信号传输产生影响,也就能够保证包处理器与闪存之间的信号传输的可靠性,进而,保证业务板的正常运行,提高业务板的可靠性。
在一个实施例中,业务板还包括:用于连接外部烧录工具的预留加载座;可编程逻辑器件包括:第二开关;数据写入方法还包括:步骤1:在向可编程逻辑器件发送擦除信息之前,CPU控制第二开关导通CPU与可编程逻辑器件的第一接口的第一侧之间的连接;第一接口的第二侧用于连接闪存。步骤2:当需要通过外部烧录工具向闪存中写入第一配置数据时,CPU控制第二开关导通预留加载座与第一接口的第一侧之间的连接。
在本申请实施例中,CPU通过可编程逻辑器件的第一接口与闪存连接,第一接口的第一侧用于连接CPU,第一接口的第二侧用于连接闪存。第一接口可以是Flash接口。当无需通过外部烧录工具向闪存中写入第一配置数据时,CPU可以控制第二开关断开预留加载座与第一接口的第一侧之间的连接。预留加载座与第一接口的第一侧之间的可以通过Flash接口连接。当导通CPU与可编程逻辑器件的第一接口的第一侧之间的连接时,第二开关断开预留加载座与第一接口的第一侧之间的连接;当导通预留加载座与第一接口的第一侧之间的连接时,第二开关断开CPU与可编程逻辑器件的第一接口的第一侧之间的连接。
基于上述处理,在需要通过外部烧录工具向闪存中写入第一配置数据时,CPU也就能够控制第二开关导通预留加载座与第一接口的第一侧之间的连接,以实现通过外部烧录工具向闪存中写入第一配置数据。可以丰富向闪存中写入第一配置数据的方式,进一步保证能够向闪存中写入第一配置数据,也就能够提高对业务板进行维护的可靠性。
在一个实施例中,在向可编程逻辑器件发送擦除信息之前,CPU将表示通过CPU写入第一配置数据的第一路径选择字符,写入可编程逻辑器件中的路径选择寄存器。当需要通过外部烧录工具向闪存中写入第一配置数据时,将表示通过外部烧录工具写入第一配置数据的第二路径选择字符,写入路径选择寄存器。在路径选择寄存器中写入第一路径选择字符时,可编程逻辑器件控制第二开关导通CPU与第一接口的第一侧之间的连接;以及在路径选择寄存器中写入第二路径选择字符时,可编程逻辑器件控制第二开关导通预留加载座与第一接口的第一侧之间的连接。
在本申请实施例中,CPU可以通过向可编程逻辑器件中的路径选择寄存器写入第一路径选择字符或者第二路径选择字符,以使可编程逻辑器件控制第二开关导通对应的连接。例如,可编程逻辑器件中的路径选择寄存器可以为具有8个比特位的寄存器。如,第一路径选择字符和第二路径选择字符可以为具有2个比特位的字符,相应的,CPU可以将第一路径选择字符或第二路径选择字符写入路径选择寄存器中的任意两个比特位。如,第一路径选择字符可以为10,第二路径选择字符可以为01。
路径选择寄存器与前述实施例中的标识寄存器可以为同一个寄存器,也可以称为Flash读写控制寄存器。CPU还可以向Flash读写控制寄存器写入表示向闪存写入数据或者从闪存获取数据的第一字符。CPU可以将第一字符、标识字符以及第一路径选择字符或者第二路径选择字符一起写入Flash读写控制寄存器。例如,Flash读写控制寄存器为具有8个比特位的寄存器,比特位0用于记录表示一次传输操作完成的第二字符,比特位1用于写入第一字符,比特位2和3用于写入第一路径选择字符或者第二路径选择字符,比特位4用于写入标识字符,比特位5-7后续可以用于实现其他功能。相应的,当CPU需要通过可编程逻辑器件向目标闪存中写入数据时,可以向Flash读写控制寄存器写入0x08;当CPU需要通过可编程逻辑器件读取目标闪存中存储的数据时,可以向Flash读写控制寄存器写入0x0a。
基于上述处理,CPU可以通过可编程逻辑器件中的路径选择寄存器控制第二开关选择写入第一配置数据的方式,进一步保证能够向闪存中写入第一配置数据,也就能够提高对业务板进行维护的可靠性。
在一个实施例中,数据写入方法还包括:CPU将第二读取命令字写入可编程逻辑器件中的命令字寄存器,以及将表示触发传输操作的传输字符写入可编程逻辑器件中的控制寄存器。其中,第二读取命令字用于指示闪存读取自身的寄存器中的数据。在控制寄存器中写入有传输字符时,可编程逻辑器件向闪存发送命令字寄存器中的第二读取命令字。闪存基于第二读取命令字,从自身的寄存器读取数据,并向可编程逻辑器件发送读取到的数据。可编程逻辑器件将闪存发送的数据写入自身的读取寄存器。CPU从读取寄存器中获取数据。
在本申请实施例中,闪存的寄存器中记录有闪存的相关状态信息,例如,闪存的芯片序列号、闪存的生产厂家标识或者闪存当前是否处于写保护状态。第二读取命令字(也可以称为读取状态寄存器命令字)可以用于指示闪存一次读取的数据大小,例如,第二读取命令字可以为0x0501,指示闪存一次读取4KB的数据。相应的,闪存可以一次读取寄存器中的4KB的数据,每次向可编程逻辑器件发送8个比特位的数据,直至发送完本次读取的4KB的数据,再进行下一次读取4KB的数据,直至读取寄存器中存储的所有数据。基于此,CPU可以通过可编程逻辑器件获取闪存的寄存器中记录的相关状态信息,便于用户了解闪存的状态,进而,用户可以根据闪存的状态选择对闪存进行数据访问的方式,也就能够提高对闪存进行数据访问的效率,进一步提高对业务板进行维护的效率。
参见图10,图10为包含相关技术中的一种业务板的系统的结构示意图。用户可以通过PC(PersonalComputer,个人计算机)机和主控板对业务板中的固件内容进行更新升级。业务板也可以称为线卡板。PC机和主控板通过以太网接口连接,主控板通过GE(GigabitEthernet,千兆以太网接口)通道向业务板发送数据。主控板包括RJ45(RegisteredJack45,一种信息插座连接器)、MPU(Micro Processor Unit,微处理器)以及Nand_Flash(一种闪存存储器)。RJ45和MPU通过调试网口传输数据。业务板包括IPC(Inter-processCommunication,进程间通信)交换芯片、CPU(也可以称为LPU(Line ProcessingUnit,业务板))、DRAM(Dynamic Random Access Memory,动态随机存取存储器)内存、包处理器以及闪存A1(也可以称为Flash_A1)。IPC交换芯片可以为BCM56170,包处理器可以为HNPA1。IPC交换芯片通过GE通道向CPU发送数据,CPU通过PCIE接口向包处理器发送数据。闪存A1与包处理器通过SPI接口连接。SPI接口包括:用于传输时钟信号的flash_a1_spi_sck,用于传输片选信号的flash_a1_spi_cs,用于向闪存A1中输入数据的flash_a1_spi_mosi以及用于向包处理器输出数据的flash_a1_spi_miso。
当需要更新闪存A1中的固件内容时,PC机可以将当前待写入闪存A1中的新的固件内容uboot.bin(一种二进制文件)通过以太网接口传输到主控板的Nand_Flash中存储。MPU通过主控板和业务板之间的GE通道将Nand_Flash中存储的uboot.bin传输到业务板的DRAM内存中。CPU通过PCIE通道将uboot.bin传输到包处理器的片内RAM(Random AccessMemory,随机存取存储器)中。图10中未画出包处理器的片内RAM。包处理器将uboot.bin通过SPI接口写入闪存A1的内部ROM(Read-Only Memory,只读存储)空间中,以完成闪存A1中固件内容的在线更新升级。
在一个实施例中,参见图11,图11为包含本申请实施例提供的一种业务板的系统的结构示意图。在图10所示的相关技术中的业务板的基础上,本申请实施例提供的业务板中添加了CPLD。CPLD与CPU之间通过LPC(Low Pin Count,低引脚数)总线连接。LPC总线是基于Intel(英特尔)标准的4bit(比特)并行总线协议,其中:LPC_CLK为时钟信号,通常为33MHz(Mega Hertz,兆赫)或24MHz;LPC_Frame为一帧数据传输的起始标志,低有效;LPC_LAD[3:0]为双向的数据信号,用于对LPC总线连接的器件进行寻址和数据读写。例如,LPC总线可以连接多个CPLD,可以基于LPC_LAD[3:0]实现对当前需要使用的CPLD进行寻址和数据读写。业务板的CPU通常是基于X86体系架构的,CPU可以通过LPC总线经过CPLD实现总线协议的转换。由于CPU需要进行数据访问的CPLD多数支持16bit地址总线,8bit数据总线的并行local_bus(本地总线)总线, 因此,CPLD内部可以实现将LPC总线转换为32bit地址总线,8bit数据总线的并行local_bus总线,以支持CPU进行数据访问。用户还可以通过设置CPLD中的寄存器的基地址和偏移地址,并对不同偏移地址的寄存器定义不同的功能,以实现控制CPLD对外管脚的控制驱动不同的外设芯片工作。例如,可以实现外设芯片的复位/解复位、上电使能等。
表1
如表1所示,local_bus总线包括:Localbus_CLK为时钟信号,和LPC总线为同一个时钟源,可以为33MHz;Localbus_CS为针对闪存中某一地址空间(可以称为目标地址空间)的片选信号,低有效,表示对目标地址空间进行数据访问;Localbus_OE为读使能信号,低有效,表示片选的地址空间或寄存器进行读操作,即,表示读取目标地址空间或寄存器中的数据;Localbus_WE为写使能信号,低有效,表示对片选的地址空间或寄存器进行写操作,即,表示向目标地址空间或寄存器中写入数据;LOCALBUS_ADDR[31:0]为32bit地址总线,用于地址空间寻址,即,记录目标地址空间的地址;LOCALBUS_DATA[7:0]为支持双向传输的8bit地址总线,用于寻址空间寄存器的读写数据并行传输,即,用于传输从目标地址空间读取到的数据或需要写入目标地址空间的数据。
在将LPC总线转换为local_bus总线后,还可以通过CPLD将local_bus总线转换为SPI总线,进而,实现对闪存A1的数据访问。其中,SPI总线包括:用于传输时钟信号的spi_flash_sck,用于传输片选信号的spi_flash_cs,用于输出数据的spi_flash_so以及用于接收数据的spi_flash_si。业务板还包括预留加载座,预留加载座通过Flash接口与CPLD连接,该Flash接口包括:用于传输时钟信号的J_flash_sck,用于传输片选信号的J_flash_cs,用于输出数据的J_flash_so以及用于接收数据的J_flash_si。预留加载座用于连接外部烧录工具,以实现通过外部烧录工具对闪存A1中固件内容的更新或修复。
CPU可以通过控制CPLD内部路径选择开关选择当前对闪存A1中固件内容的更新或修复的烧录路径。CPLD内部路径选择开关即上述实施例中的第二开关。本申请实施例中的烧录路径包括:路径1,CPU通过包处理器对闪存A1中固件内容的更新或修复;路径2,CPU通过CPLD对闪存A1中固件内容的更新或修复;路径3,外部烧录工具通过预留加载座对闪存A1中固件内容的更新或修复。CPLD通过Flash接口与SN3125开关连接,该Flash接口包括:用于传输时钟信号的flash_a1_sck,用于传输片选信号的flash_a1_cs,用于输出数据的flash_a1_so以及用于接收数据的flash_a1_si。SN3125开关和包处理器通过SPI接口与闪存A1连接。SN3125开关和闪存A1之间以及包处理器和闪存A1之间还可以设置有电阻,用于保护电路。
基于此,CPU可以通过CPLD对包处理器连接的闪存A1进行片内二进制数据的回读,擦除,烧写以及校验。即,只要CPU正常启动,CPLD正常上电运行即可实现对闪存A1中固件内容的更新或修复。
在一个实施例中,可编程逻辑器件为CPLD,可以通过硬件描述语言实现并行local_bus总线,CPU可以通过访问CPLD内自定义的逻辑寄存器来实现基于SPI协议对闪存进行数据访问。CPLD内部包括地址为0x0000-0x0009以及0x000a的11个逻辑寄存器,每个逻辑寄存器均具有bit(比特)0-bit7表示的8个比特位。每一个比特位可以写入一个二进制数。如表2所示。
表2
Flash读写控制寄存器中各bit定义如下:
“Spi_flash_sel”用于写入标识字符。例如,当标识字符为0时表示选择访问FlashA1(闪存A1);当标识字符为1时表示选择访问Flash A2(闪存A2),能够用于切换进行数据访问的闪存。
“Spi_boot_type1”和“Spi_boot_type0”(即Spi_boot_type[1:0])用于写入第一路径选择字符或者第二路径选择字符,以确定对闪存进行数据访问的方式,例如,“Spi_boot_type1”和“Spi_boot_type0”均写入0表示通过HNP(一种包处理器)/CPU上电引导,即,CPU通过包处理器对闪存进行数据访问,此种方式可以为上电启动时的默认方式。“Spi_boot_type1”写入0,“Spi_boot_type0”写入1表示通过外部SPI烧录盒访问烧录,即,外部烧录工具通过预留加载座对闪存进行数据访问。“Spi_boot_type1”写入1,“Spi_boot_type0”写入0表示通过CPLD local_bus转SPI访问,即,CPU通过CPLD对闪存进行数据访问。
“Spi_flash_rd_wr”用于写入第一字符(也可以称为Flash读写控制标志)。例如,第一字符为1表示对闪存进行读操作,即,读取闪存中的存储的数据。第一字符为0表示对闪存进行写操作,即,向闪存中写入数据。“Spi_flash_ack”用于记录第二字符(也可以称为单次SPI读写操作完成标志位)。该比特位为只读状态。第二字符为1表示传输操作完成,一次传输操作完成后CPLD控制该比特位清零。第二字符为0表示传输操作未完成。
Flash片内Array地址寄存器1—4各bit定义如下:
“Spi_flash_addr[31:24]”、“Spi_flash_addr[23:16]”、“Spi_flash_addr[15:8]”以及“Spi_flash_addr[7:0]”可以称为“Spi_flash_addr[31:0]”,用于写入闪存内部存储空间的地址,即,用于写入闪存中的地址空间的地址。例如,地址空间的地址可以为00000000H-01FF FFFFH。
Flash SPI数据回读寄存器 Read Data中的“Spi_flash_rdata[7:0]”,用于写入CPLD回读闪存MISO(输出)总线上串行数据码流转换得到的8bit并行数据,即,闪存通过MISO总线向CPLD发送的8个比特位的数据。Flash SPI数据写入寄存器 Write Data中的“Spi_flash_wdata[7:0]”,用于写入通过MOSI(输入)总线向闪存发送的8个比特位的数据。
Flash SPI 命令字写入寄存器 CMD中的“Spi_flash_cmd[15:8]”和“Spi_flash_cmd[7:0]”用于写入命令字。针对不同类型的闪存,可能存在不同的命令字。因此针对当前需要进行数据访问的闪存,可以按照该闪存的芯片手册,确定当前需要进行数据访问的操作对应的命令字。例如,命令字为12H,对应的操作为4-BYTE PAGE PROGRAM,即,对闪存的地址空间进行写数据操作,也就是向闪存的地址空间中写入数据,每次写入4字节。命令字为13 H,对应的操作4-BYTE READ,即,对闪存的地址空间的数据进行回读,也就是读取闪存的地址空间中存储的数据,每次读取四字节。命令字可以为21 H,对应的操作4KB SUBSECTORERASE,即,对闪存的地址空间中存储的数据进行擦除,每次擦除4KB。
Flash SPI读写控制寄存器中的“spi_flash_req”,用于写入SPI读写请求,即,写入传输字符。例如,“spi_flash_req”为1时,发起一次SPI读写操作,即,触发传输操作。“spi_flash_req”为0时,表示读写完成,CPLD将“spi_flash_req”自动清零。
Flash 硬件写保护WP控制寄存器中的“spi_flash_wp”,用于写入SPI写保护控制,即,写入解除硬件写保护字符。例如,“spi_flash_wp”为1时,表示解除硬件写保护状态,可以向闪存的状态寄存器中写入数据。“spi_flash_wp”为0时,表示保持硬件写保护状态,不可以向闪存的状态寄存器中写入数据。
CPLD内部还可以设置有shift_reg_wr(读移位寄存器)和shift_reg_rd(写移位寄存器),用于实现并行local_bus数据和串行SPI数据的相互转换,即,如图11所示的本地总线转换为SPI总线。
如图12所示,图12为本申请实施例提供的一种可编程逻辑器件内部的时序状态机的示意图。CPLD内部的SPI状态机可以包括:空闲初始态(也可以称为SPI_IDLE),即,CPLD处于空闲状态;命令状态(也可以称为SPI_CMD),即,CPLD接收CPU写入的命令字;读取Flash片内寄存器状态(也可以称为SPI_DOUT_REGISTER),即,CPLD获取闪存的寄存器中的数据;写Flash片内寄存器状态(也可以称为SPI_DIN_REGISTER),即,CPLD将待写入闪存中的寄存器的数据发送给闪存,以向闪存中的寄存器写入数据;回读Flash片内指定地址空间状态(也可以称为SPI_DOUT_ARRAY),即,CPLD获取闪存的指定地址空间中存储的数据;对Flash片内指定地址空间写入状态(也可以称为SPI_DIN_ARRAY),即,CPLD将待写入闪存的指定地址空间的数据发送给闪存,以向闪存的指定地址空间中写入数据;SPI读写状态机终止(也可以称为SPI_END),即,CPLD停止与闪存之间的SPI传输操作,表示当前的传输操作已完成。
CPU可以通过控制CPLD内部自定义的逻辑寄存器以实现上述SPI状态机的跳转,也就能够实现对闪存中的寄存器以及地址空间中存储的数据进行读写操作。
在一个实施例中,参见图13,图13为本申请实施例提供的一种读取闪存的状态寄存器的流程示意图,包括以下步骤:
步骤S1301:写CPLD寄存器0x0000:0x0a-配置为CPLD访问Flash读操作。即,CPU向Flash读写控制寄存器写入0x0a,也就是在Flash读写控制寄存器中的“Spi_flash_sel”写入0,“Spi_boot_type1”写入1,“Spi_boot_type0”写入0,“Spi_flash_rd_wr”写入1,表示CPU当前通过CPLD读取闪存A1中的数据。
步骤S1302:写CPLD寄存器[0x0007,0x0008]:0x0501-配置为read statusregister(读取状态寄存器)命令字。即,CPU将第二读取命令字写入Flash SPI 命令字写入寄存器 CMD。
步骤S1303:写CPLD寄存器0x0009:0x01-发起一次SPI传输操作。即,CPU将表示触发传输操作的传输字符写入Flash SPI读写控制寄存器,以使CPLD向闪存发送第二读取命令字。
步骤S1304:读CPLD寄存器0x0005-获取Flash寄存器内容。即,CPU从Flash SPI数据回读寄存器 Read Data中获取数据。
参见图14,图14为本申请实施例提供的图13所示的流程中闪存的时序图。基于时钟信号(也可以称为Flash_spi_sck),CPLD可以通过MOSI(输入)总线(也可以称为Flash_spi_sdi)向闪存发送CMD(read status register)(命令字(读取状态寄存器),即读取状态寄存器命令字)。闪存在接收到读取状态寄存器命令字后可以从自身的寄存器Read data(D[7:0])(即读取数据并发送给CPLD 0x0005寄存器),并通过MISO(输出)总线(也可以称为Flash_spi_sdo)将读取到的数据从高位到低位左移到CPLD 0x0005寄存器(即Flash SPI数据回读寄存器 Read Data),以将串行数据转换为并行数据。
在一个实施例中,参见图15,图15为本申请实施例提供的一种写入闪存的状态寄存器的流程示意图,包括以下步骤:
步骤S1501:写CPLD寄存器0x0000:0x08-配置为CPLD访问Flash写操作。即,CPU向Flash读写控制寄存器写入0x08,也就是在Flash读写控制寄存器中的“Spi_flash_sel”写入0,“Spi_boot_type1”写入1,“Spi_boot_type0”写入0,“Spi_flash_rd_wr”写入0,表示CPU当前通过CPLD向闪存A1中写入数据。
步骤S1502:软件写CPLD CMD寄存器[0x0007,0x0008]:0x0610-打开软件写保护。即,CPU将用于指示闪存解除写保护状态的解除写保护命令字写入Flash SPI 命令字写入寄存器 CMD。
步骤S1503:写CPLD寄存器0x0009:0x01-发起一次SPI传输操作写入上述命令字打开软件写保护。即,CPU将表示触发传输操作的传输字符写入Flash SPI读写控制寄存器,以使CPLD向闪存发送解除写保护命令字。
步骤S1504:软件写CPLD CMD寄存器[0x0007,0x0008]:0x0101-配置为writestatus register命令字。即,CPU将第一写入命令字写入Flash SPI 命令字写入寄存器CMD。
步骤S1505:软件写CPLD寄存器0x0006-将要写入SR寄存器的内容存放到该寄存器。即,CPU将当前待写入状态寄存器中的数据写入Flash SPI数据写入寄存器Write Data。例如,当前待写入状态寄存器中的数据可以为上述实施例中的第一地址标识字符。
步骤S1506:写CPLD寄存器0x0009:0x01-发起一次SPI传输操作。即,CPU将表示触发传输操作的传输字符写入Flash SPI读写控制寄存器,以使CPLD向闪存发送第一写入命令字以及当前待写入状态寄存器中的数据,使闪存根据第一写入命令字,向状态寄存器中写入当前待写入状态寄存器中的数据。
步骤S1507:写SR寄存器完成。即,当前待写入状态寄存器中的数据已全部写入状态寄存器。
参见图16,图16为本申请实施例提供的图15所示的流程中闪存的时序图。基于时钟信号,CPLD可以通过MOSI总线向闪存发送CMD(Write status register)(命令字(写入状态寄存器),即第一写入命令字)。第一写入命令字可以为01H。相应的,在接收到第一写入命令字后,闪存可以Write data(D[7:0])(即写入从CPLD 0x0006寄存器中获取的数据),即通过MOSI总线将CPLD 0x0006寄存器(即Flash SPI数据写入寄存器Write Data)中的当前待写入状态寄存器中的数据左移从高位到低位依次串行写入状态寄存器,以将并行数据转换为串行数据。当前待写入状态寄存器中的数据可以为3CH。
在一个实施例中,参见图17,图17为本申请实施例提供的一种擦除闪存的地址空间的流程示意图,包括以下步骤:步骤S1701:写CPLD寄存器0x0000:0x0a-配置为CPLD访问Flash读操作。即,CPU向Flash读写控制寄存器写入0x0a,表示CPU当前通过CPLD读取目标闪存中的数据。
步骤S1702:硬件写保护打开。即,上述实施例中解除硬件写保护状态的过程。
步骤S1703:软件写CPLD Flash Array(阵列)地址到寄存器[0x0001,0x0002,0x0003,0x0004]中暂存标识为4KB(千字节)擦除首地址。即,CPU将第二地址空间的地址写入Flash片内Array地址寄存器。
步骤S1704:软件写CPLD CMD寄存器[0x0007,0x0008]:0x0610-打开软件写保护。即,CPU将用于指示闪存解除写保护状态的解除写保护命令字写入Flash SPI 命令字写入寄存器 CMD。
步骤S1705:写CPLD寄存器0x0009:0x01-发起一次SPI传输操作写入上述命令字打开软件写保护。即,CPU将表示触发传输操作的传输字符写入Flash SPI读写控制寄存器,以使CPLD向闪存发送解除写保护命令字。
步骤S1706:软件写CPLD CMD寄存器[0x0007,0x0008]:0x2120-写入Flash地址空间Erase命令字。即,CPU将擦除命令字写入Flash SPI 命令字写入寄存器 CMD。
步骤S1707:写CPLD寄存器0x0009:0x01-发起一次SPI传输操作写入上述Erase命令字完成本次4KB地址空间内容的擦除。即,CPU将表示触发传输操作的传输字符写入FlashSPI读写控制寄存器,以使CPLD向闪存发送擦除命令字,相应的,闪存可以按照擦除命令字所指示的擦除方式,从第二地址空间处擦除4KB数据。
参见图18,图18为本申请实施例提供的图17所示的流程中闪存的时序图。基于时钟信号, CPLD可以通过MOSI总线向闪存发送SPI_FLASH_ADDR[31:0](闪存的地址空间的地址,即第二地址空间的地址)、CMD(Write Eable 06H)(命令字(解除写保护),即解除写保护命令字)以及CMD(4KB Erase 21H)(命令字(4千字节擦除),即擦除命令字)。相应的,闪存在接收到解除写保护命令字时可以解除自身的软件写保护状态,在接收到擦除命令字时,可以按照擦除命令字所指示的擦除方式,从第二地址空间处擦除4KB数据。
在一个实施例中,参见图19,图19为本申请实施例提供的一种读取闪存的地址空间中的数据的流程示意图,包括以下步骤:步骤S1901:写CPLD寄存器0x0000:0x0a-配置为CPLD访问Flash读操作。即,CPU向Flash读写控制寄存器写入0x0a,表示CPU当前通过CPLD读取目标闪存中的数据。
步骤S1902:软件写CPLD CMD寄存器[0x0007,0x0008]:0x1320-输入SPI readARRAY命令字。即,CPU将第一读取命令字写入Flash SPI 命令字写入寄存器 CMD。
步骤S1903:软件写CPLD FLASH ARRAY地址寄存器[0x0001,0x0002,0x0003,0x0004]写入需要访问的Flash内部32bit地址空间。即,CPU将第一地址空间的地址写入Flash片内Array地址寄存器。
步骤S1904:写CPLD寄存器0x0009:0x01-发起一次SPI传输将上述地址和命令字下发到Flash。即,CPU将表示触发传输操作的传输字符写入Flash SPI读写控制寄存器,以使CPLD向闪存发送第一地址空间的地址和第一读取命令字,使闪存按照第一读取命令字所指示的读取方式,从第一地址空间处读取数据,并向CPLD发送读取到的数据。CPLD可以将闪存发送的数据写入自身的Flash SPI数据回读寄存器 Read Data。
步骤S1905:读CPLD寄存器0x0005-获取Flash地址空间内容。即,CPU从Flash SPI数据回读寄存器 Read Data中获取数据。
参见图20,图20为本申请实施例提供的图19所示的流程中闪存的时序图。基于时钟信号,CPLD可以通过MOSI总线向闪存发送CMD(Read Array 13H)(命令字(读取阵列),即第一读取命令字)以及ADDR(SPI Flash array Address)(地址(闪存阵列地址),即第一地址空间的地址)。在接收到第一读取命令字以及第一地址空间的地址后,闪存可以从第一地址空间Read data(D[7:0])(即读取数据并发送给CPLD 0x0005寄存器),并通过MISO总线将读取到的数据从高位到低位左移到CPLD 0x0005寄存器(即Flash SPI数据回读寄存器Read Data),以将串行数据转换为并行数据。
在一个实施例中,参见图21,图21为本申请实施例提供的一种向闪存的地址空间写入数据的流程示意图,包括以下步骤:步骤S2101:写CPLD寄存器0x0000:0x08-配置为CPLD访问Flash写操作。即,CPU向Flash读写控制寄存器写入0x08,表示CPU当前通过CPLD向闪存A1中写入数据。
步骤S2102:硬件写保护打开。即,上述实施例中解除硬件写保护状态的过程。
步骤S2103:软件写CPLD CMD寄存器[0x0007,0x0008]:0x0610-打开软件写保护。即,CPU将用于指示闪存解除写保护状态的解除写保护命令字写入Flash SPI 命令字写入寄存器 CMD。
步骤S2104:写CPLD寄存器0x0009:0x01-发起一次SPI传输操作写入上述命令字打开软件写保护。即,CPU将表示触发传输操作的传输字符写入Flash SPI读写控制寄存器,以使CPLD向闪存发送解除写保护命令字。
步骤S2105:软件写CPLD CMD寄存器[0x0007,0x0008]:0x1230-下发写Flash地址空间命令字。即,CPU将写入命令字写入Flash SPI 命令字写入寄存器 CMD。
步骤S2106:软件写CPLD Flash片内Array地址寄存器[0x0001,0x0002,0x0003,0x0004]写入需要访问的Flash内部32bit地址空间。即,CPU将第三地址空间的地址写入Flash片内Array地址寄存器。
步骤S2107:软件写CPLD寄存器0x0006-将要写入目标地址空间的内容存放到该寄存器。即,CPU将第一配置数据写入Flash SPI数据写入寄存器Write Data。
步骤S2108:写CPLD寄存器0x0009:0x01-发起一次SPI传输操作写入上述命令字发起SPI传输将内容写入目标地址空间。即,CPU将表示触发传输操作的传输字符写入FlashSPI读写控制寄存器,以使CPLD向闪存发送写入命令字、第三地址空间的地址以及第一配置数据,使闪存按照写入命令字所指示的写入方式,向第三地址空间处写入第一配置数据。
参见图22,图22为本申请实施例提供的图21所示的流程中闪存的时序图。基于时钟信号,CPLD可以通过MOSI总线向闪存发送CMD(Read Array 13H)(命令字(读取阵列),即写入命令字)、ADDR(SPI Flash array Address)(地址(闪存阵列地址),即第三地址空间的地址)以及第一配置数据。在接收到写入命令字、第三地址空间的地址以及第一配置数据后,闪存可以Write data(D[7:0])(即写入从CPLD 0x0006寄存器中获取的数据),即通过MISO总线将CPLD 0x0006寄存器(即Flash SPI数据写入寄存器Write Data)中的第一配置数据从高位到低位依次串行写入第三地址空间,以将并行数据转换为串行数据。
基于相同的发明构思,参见图23,图23为本申请实施例提供的一种数据写入装置的结构示意图。本申请实施例还提供了一种数据写入装置,应用于业务板中的中央处理器CPU,装置包括:
擦除信息发送模块2301,用于向业务板中的可编程逻辑器件发送擦除信息,以使可编程逻辑器件基于擦除信息,擦除业务板中的闪存的地址空间中存储的数据;写入信息发送模块2302,用于在擦除闪存的地址空间中存储的数据后,向可编程逻辑器件发送包含当前待写入的第一配置数据的写入信息,以使可编程逻辑器件基于写入信息,将第一配置数据写入闪存的地址空间。
在一个实施例中,装置还包括:发送模块,用于在可编程逻辑器件将第一配置数据写入闪存的地址空间之后,向可编程逻辑器件发送读取信息,以使可编程逻辑器件基于读取信息,读取闪存的地址空间中存储的数据; 第一判断模块,用于在获取可编程逻辑器件读取到的数据后,判断获取到的数据与第一配置数据是否一致;启动控制模块,用于若获取到的数据与第一配置数据一致,则控制业务板中的包处理器按照闪存的地址空间中存储的数据进行启动。
在一个实施例中,装置还包括:发送模块,用于在向可编程逻辑器件发送擦除信息之前,若业务板中的包处理器启动异常,向可编程逻辑器件发送读取信息,以使可编程逻辑器件基于读取信息,读取闪存的地址空间中存储的数据;第二判断模块,用于在获取可编程逻辑器件读取到的数据后,判断获取到的数据与上一次写入闪存的第二配置数据是否一致;擦除信息发送模块2301,具体用于若获取到的数据与第二配置数据不一致,则向业务板中的可编程逻辑器件发送擦除信息。
在一个实施例中,读取信息包含:用于指示闪存读取第一地址空间中存储的数据的读取方式的第一读取命令字,以及第一地址空间的地址;发送模块,具体用于将第一读取命令字写入可编程逻辑器件中的命令字寄存器,将第一地址空间的地址写入可编程逻辑器件中的地址寄存器,以及将表示触发传输操作的传输字符写入可编程逻辑器件中的控制寄存器,以使可编程逻辑器件在控制寄存器中写入有传输字符时,向闪存发送命令字寄存器中的第一读取命令字,以及地址寄存器中的第一地址空间的地址,使闪存按照第一读取命令字所指示的读取方式,从第一地址空间处读取数据,并向可编程逻辑器件发送读取到的数据,使可编程逻辑器件将闪存发送的数据写入自身的读取寄存器;装置还包括:第一获取模块,用于从读取寄存器中获取数据。
在一个实施例中,业务板还包括:用于连接外部烧录工具的预留加载座;可编程逻辑器件包括:第二开关;装置还包括:第一控制模块,用于在向可编程逻辑器件发送擦除信息之前,控制第二开关导通CPU与可编程逻辑器件的第一接口的第一侧之间的连接;第一接口的第二侧用于连接闪存;第二控制模块,用于当需要通过外部烧录工具向闪存中写入第一配置数据时,控制第二开关导通预留加载座与第一接口的第一侧之间的连接。
在一个实施例中,第一控制模块,具体用于在向可编程逻辑器件发送擦除信息之前,将表示通过CPU写入第一配置数据的第一路径选择字符,写入可编程逻辑器件中的路径选择寄存器,以使可编程逻辑器件在路径选择寄存器中写入第一路径选择字符时,控制第二开关导通CPU与第一接口的第一侧之间的连接;第二控制模块,具体用于当需要通过外部烧录工具向闪存中写入第一配置数据时,将表示通过外部烧录工具写入第一配置数据的第二路径选择字符,写入路径选择寄存器,以使可编程逻辑器件在路径选择寄存器中写入第二路径选择字符时,控制第二开关导通预留加载座与第一接口的第一侧之间的连接。
在一个实施例中,擦除信息包含:用于指示闪存擦除第二地址空间中存储的数据的擦除方式的擦除命令字,以及第二地址空间的地址;擦除信息发送模块2301,具体用于将第二地址空间的地址写入可编程逻辑器件中的地址寄存器,将擦除命令字写入可编程逻辑器件中的命令字寄存器,以及将表示触发传输操作的传输字符写入可编程逻辑器件中的控制寄存器,以使可编程逻辑器件在控制寄存器中写入有传输字符时,向闪存发送命令字寄存器中的擦除命令字,以及地址寄存器中的第二地址空间的地址,使闪存按照擦除命令字所指示的擦除方式,从第二地址空间处擦除数据。
在一个实施例中,装置还包括:第一写入模块,用于在将擦除命令字写入命令字寄存器之前,将用于指示闪存解除写保护状态的解除写保护命令字写入命令字寄存器,以及将表示触发传输操作的传输字符写入控制寄存器,以使可编程逻辑器件在控制寄存器中写入有传输字符时,向闪存发送命令字寄存器中的解除写保护命令字,使闪存基于解除写保护命令字,解除自身的写保护状态。
在一个实施例中,写入信息还包含:用于指示闪存写入第一配置数据的第三地址空间的写入方式的写入命令字,以及第三地址空间的地址;写入信息发送模块2302,具体用于将写入命令字写入可编程逻辑器件中的命令字寄存器,将第三地址空间的地址写入可编程逻辑器件的地址寄存器,将第一配置数据写入可编程逻辑器件中的写入寄存器,以及将表示触发传输操作的传输字符写入可编程逻辑器件中的控制寄存器,以使可编程逻辑器件在控制寄存器中写入有传输字符时,向闪存发送命令字寄存器中的写入命令字、地址寄存器中的第三地址空间的地址,以及写入寄存器中的第一配置数据,使闪存按照写入命令字所指示的写入方式,向第三地址空间处写入第一配置数据。
在一个实施例中,装置还包括:第二写入模块,用于在将写入命令字写入命令字寄存器之前,将用于指示闪存解除写保护状态的解除写保护命令字写入命令字寄存器,以及将表示触发传输操作的传输字符写入控制寄存器,以使可编程逻辑器件在控制寄存器中写入有传输字符时,向闪存发送命令字寄存器中的解除写保护命令字,使闪存基于解除写保护命令字,解除自身的写保护状态。
在一个实施例中,装置还包括:第三写入模块,用于将第二读取命令字写入可编程逻辑器件中的命令字寄存器,以及将表示触发传输操作的传输字符写入可编程逻辑器件中的控制寄存器,以使可编程逻辑器件在控制寄存器中写入有传输字符时,向闪存发送命令字寄存器中的第二读取命令字,使闪存基于第二读取命令字,从自身的寄存器读取数据,并向可编程逻辑器件发送读取到的数据,使可编程逻辑器件将闪存发送的数据写入自身的读取寄存器;其中,第二读取命令字用于指示闪存读取自身的寄存器中的数据;第二获取模块,用于从读取寄存器中获取数据。
在一个实施例中,业务板包括多个闪存;装置还包括:第四写入模块,用于将表示当前需要进行数据访问的目标闪存的标识字符,写入可编程逻辑器件中的标识寄存器,以使可编程逻辑器件基于标识寄存器中写入的标识字符对目标闪存进行数据访问。
参见图24,图24为本申请实施例提供的另一种数据写入装置的结构示意图。本申请实施例还提供了一种数据写入装置,应用于业务板中的可编程逻辑器件,装置包括:擦除模块2401,用于基于业务板中的中央处理器CPU发送的擦除信息,擦除业务板中的闪存的地址空间中存储的数据;写入模块2402,用于在擦除闪存的地址空间中存储的数据后,基于CPU发送的包含当前待写入的第一配置数据的写入信息,将第一配置数据写入闪存的地址空间。
在一个实施例中,装置还包括:读取模块,用于在将第一配置数据写入闪存的地址空间之后,基于CPU发送的读取信息,读取闪存的地址空间中存储的数据。
在一个实施例中,装置还包括:读取模块,用于在擦除闪存的地址空间中存储的数据之前,若业务板中的包处理器启动异常,基于CPU发送的读取信息,读取闪存的地址空间中存储的数据。
在一个实施例中,读取信息包含:用于指示闪存读取第一地址空间中存储的数据的读取方式的第一读取命令字,以及第一地址空间的地址;读取模块,具体用于在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向闪存发送自身的命令字寄存器中的第一读取命令字,以及自身的地址寄存器中的第一地址空间的地址,以使闪存按照第一读取命令字所指示的读取方式,从第一地址空间处读取数据,并向可编程逻辑器件发送读取到的数据;装置还包括:第五写入模块,用于将闪存发送的数据写入自身的读取寄存器,以使CPU从读取寄存器中获取数据。
在一个实施例中,业务板还包括:用于连接外部烧录工具的预留加载座;可编程逻辑器件包括:第二开关;装置还包括:第三控制模块,用于基于CPU的控制,控制第二开关导通CPU与可编程逻辑器件的第一接口的第一侧之间的连接;第一接口的第二侧用于连接闪存;第四控制模块,用于当需要通过外部烧录工具向闪存中写入第一配置数据时,基于CPU的控制,控制第二开关导通预留加载座与第一接口的第一侧之间的连接。
在一个实施例中,第三控制模块,具体用于在自身的路径选择寄存器中写入表示通过CPU写入第一配置数据的第一路径选择字符时,控制第二开关导通CPU与第一接口的第一侧之间的连接;第四控制模块,具体用于当需要通过外部烧录工具向闪存中写入第一配置数据时,在路径选择寄存器中写入表示通过外部烧录工具写入第一配置数据的第二路径选择字符时,控制第二开关导通预留加载座与第一接口的第一侧之间的连接。
在一个实施例中,擦除信息包含:用于指示闪存擦除第二地址空间中存储的数据的擦除方式的擦除命令字,以及第二地址空间的地址;擦除模块2401,具体用于在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向闪存发送自身的命令字寄存器中的擦除命令字,以及自身的地址寄存器中的第二地址空间的地址,使闪存按照擦除命令字所指示的擦除方式,从第二地址空间处擦除数据。
在一个实施例中,装置还包括:第一发送模块,用于在命令字寄存器中写入有擦除命令字之前,在控制寄存器中写入有传输字符时,向闪存发送命令字寄存器中的用于指示闪存解除写保护状态的解除写保护命令字,使闪存基于解除写保护命令字,解除自身的写保护状态。
在一个实施例中,写入信息还包含:用于指示闪存写入第一配置数据的第三地址空间的写入方式的写入命令字,以及第三地址空间的地址;写入模块2402,具体用于在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向闪存发送自身的命令字寄存器中的写入命令字、自身的地址寄存器中的第三地址空间的地址,以及自身的写入寄存器中的第一配置数据,以使闪存按照写入命令字所指示的写入方式,向第三地址空间处写入第一配置数据。
在一个实施例中,装置还包括:第二发送模块,用于在命令字寄存器中写入有写入命令字之前,在控制寄存器中写入有传输字符时,向闪存发送命令字寄存器中的用于指示闪存解除写保护状态的解除写保护命令字,使闪存基于解除写保护命令字,解除自身的写保护状态。
在一个实施例中,装置还包括:第三发送模块,用于在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向闪存发送自身的命令字寄存器中的第二读取命令字,以使闪存基于第二读取命令字,从自身的寄存器读取数据,并向可编程逻辑器件发送读取到的数据;其中,第二读取命令字用于指示闪存读取自身的寄存器中的数据;第六写入模块,用于将闪存发送的数据写入自身的读取寄存器,以使CPU从读取寄存器中获取数据。
在一个实施例中,业务板包括多个闪存;装置还包括:数据访问模块,用于基于自身的标识寄存器中写入的表示当前需要进行数据访问的目标闪存的标识字符对目标闪存进行数据访问。
本申请实施例还提供了一种处理器,处理器用于执行上述任一应用于业务板中的CPU的数据写入方法步骤。
本申请实施例还提供了一种可编程逻辑器件,可编程逻辑器件用于执行上述任一应用于业务板中的可编程逻辑器件的数据写入方法步骤。
本申请实施例还提供了一种业务板,业务板包括如上述实施例所述的处理器、如上述实施例所述的可编程逻辑器件,以及闪存。
在一个实施例中,业务板还包括包处理器和第一开关,第一开关,用于在需要通过包处理器向闪存中写入第一配置数据时,断开可编程逻辑器件与闪存之间的连接;在需要通过可编程逻辑器件向闪存中写入第一配置数据时,导通可编程逻辑器件与闪存之间的连接。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的数据写入方法步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据写入方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、处理器、可编程逻辑器件、业务板及存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (25)
1.一种数据写入方法,其特征在于,应用于业务板中的中央处理器CPU,所述方法包括:
向所述业务板中的可编程逻辑器件发送擦除信息,以使所述可编程逻辑器件基于所述擦除信息,擦除所述业务板中的闪存的地址空间中存储的数据;
在擦除所述闪存的地址空间中存储的数据后,向所述可编程逻辑器件发送包含当前待写入的第一配置数据的写入信息,以使所述可编程逻辑器件基于所述写入信息,将所述第一配置数据写入所述闪存的地址空间;
所述擦除信息包含:用于指示所述闪存擦除第二地址空间中存储的数据的擦除方式的擦除命令字,以及所述第二地址空间的地址;
所述向所述业务板中的可编程逻辑器件发送擦除信息,包括:
将所述第二地址空间的地址写入所述可编程逻辑器件中的地址寄存器,将所述擦除命令字写入所述可编程逻辑器件中的命令字寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述擦除命令字,以及所述地址寄存器中的所述第二地址空间的地址,使所述闪存按照所述擦除命令字所指示的擦除方式,从所述第二地址空间处擦除数据;
所述写入信息还包含:用于指示所述闪存写入所述第一配置数据的第三地址空间的写入方式的写入命令字,以及所述第三地址空间的地址;
所述向所述可编程逻辑器件发送包含当前待写入的第一配置数据的写入信息,包括:
将所述写入命令字写入所述可编程逻辑器件中的命令字寄存器,将所述第三地址空间的地址写入所述可编程逻辑器件的地址寄存器,将所述第一配置数据写入所述可编程逻辑器件中的写入寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述写入命令字、所述地址寄存器中的所述第三地址空间的地址,以及所述写入寄存器中的所述第一配置数据,使所述闪存按照所述写入命令字所指示的写入方式,向所述第三地址空间处写入所述第一配置数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述可编程逻辑器件将所述第一配置数据写入所述闪存的地址空间之后,向所述可编程逻辑器件发送读取信息,以使所述可编程逻辑器件基于所述读取信息,读取所述闪存的地址空间中存储的数据;
在获取所述可编程逻辑器件读取到的数据后,判断获取到的数据与所述第一配置数据是否一致;若一致,则控制所述业务板中的包处理器按照所述闪存的地址空间中存储的数据进行启动。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在向所述可编程逻辑器件发送擦除信息之前,若所述业务板中的包处理器启动异常,向所述可编程逻辑器件发送读取信息,以使所述可编程逻辑器件基于所述读取信息,读取所述闪存的地址空间中存储的数据;
在获取所述可编程逻辑器件读取到的数据后,判断获取到的数据与上一次写入所述闪存的第二配置数据是否一致;
所述向所述业务板中的可编程逻辑器件发送擦除信息,包括:
若获取到的数据与所述第二配置数据不一致,则向所述业务板中的可编程逻辑器件发送擦除信息。
4.根据权利要求2或3所述的方法,其特征在于,所述读取信息包含:用于指示所述闪存读取第一地址空间中存储的数据的读取方式的第一读取命令字,以及所述第一地址空间的地址;
所述向所述可编程逻辑器件发送读取信息,包括:
将所述第一读取命令字写入所述可编程逻辑器件中的命令字寄存器,将所述第一地址空间的地址写入所述可编程逻辑器件中的地址寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述第一读取命令字,以及所述地址寄存器中的所述第一地址空间的地址,使所述闪存按照所述第一读取命令字所指示的读取方式,从所述第一地址空间处读取数据,并向所述可编程逻辑器件发送读取到的数据,使所述可编程逻辑器件将所述闪存发送的数据写入自身的读取寄存器;
所述方法还包括:
从所述读取寄存器中获取数据。
5.根据权利要求1所述的方法,其特征在于,所述业务板还包括:用于连接外部烧录工具的预留加载座;所述可编程逻辑器件包括:第二开关;所述方法还包括:
在向所述可编程逻辑器件发送擦除信息之前,控制所述第二开关导通所述CPU与所述可编程逻辑器件的第一接口的第一侧之间的连接;所述第一接口的第二侧用于连接所述闪存;
当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
6.根据权利要求5所述的方法,其特征在于,所述在向所述可编程逻辑器件发送擦除信息之前,控制所述第二开关导通所述CPU与所述可编程逻辑器件的第一接口的第一侧之间的连接,包括:
在向所述可编程逻辑器件发送擦除信息之前,将表示通过所述CPU写入所述第一配置数据的第一路径选择字符,写入所述可编程逻辑器件中的路径选择寄存器,以使所述可编程逻辑器件在所述路径选择寄存器中写入所述第一路径选择字符时,控制所述第二开关导通所述CPU与所述第一接口的第一侧之间的连接;
所述当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接,包括:
当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,将表示通过所述外部烧录工具写入所述第一配置数据的第二路径选择字符,写入所述路径选择寄存器,以使所述可编程逻辑器件在所述路径选择寄存器中写入所述第二路径选择字符时,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在将所述擦除命令字写入所述命令字寄存器之前,将用于指示所述闪存解除写保护状态的解除写保护命令字写入所述命令字寄存器,以及将表示触发传输操作的传输字符写入所述控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在将所述写入命令字写入所述命令字寄存器之前,将用于指示所述闪存解除写保护状态的解除写保护命令字写入所述命令字寄存器,以及将表示触发传输操作的传输字符写入所述控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将第二读取命令字写入所述可编程逻辑器件中的命令字寄存器,以及将表示触发传输操作的传输字符写入所述可编程逻辑器件中的控制寄存器,以使所述可编程逻辑器件在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的所述第二读取命令字,使所述闪存基于所述第二读取命令字,从自身的寄存器读取数据,并向所述可编程逻辑器件发送读取到的数据,使所述可编程逻辑器件将所述闪存发送的数据写入自身的读取寄存器;其中,所述第二读取命令字用于指示所述闪存读取自身的寄存器中的数据;
从所述读取寄存器中获取数据。
10.根据权利要求1所述的方法,其特征在于,所述业务板包括多个闪存;所述方法还包括:
将表示当前需要进行数据访问的目标闪存的标识字符,写入所述可编程逻辑器件中的标识寄存器,以使所述可编程逻辑器件基于所述标识寄存器中写入的所述标识字符对所述目标闪存进行数据访问。
11.一种数据写入方法,其特征在于,应用于业务板中的可编程逻辑器件,所述方法包括:
基于所述业务板中的中央处理器CPU发送的擦除信息,擦除所述业务板中的闪存的地址空间中存储的数据;
在擦除所述闪存的地址空间中存储的数据后,基于所述CPU发送的包含当前待写入的第一配置数据的写入信息,将所述第一配置数据写入所述闪存的地址空间;
所述擦除信息包含:用于指示所述闪存擦除第二地址空间中存储的数据的擦除方式的擦除命令字,以及所述第二地址空间的地址;
所述基于所述业务板中的中央处理器CPU发送的擦除信息,擦除所述业务板中的闪存的地址空间中存储的数据,包括:
在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的擦除命令字,以及自身的地址寄存器中的第二地址空间的地址,使所述闪存按照所述擦除命令字所指示的擦除方式,从所述第二地址空间处擦除数据;
所述写入信息还包含:用于指示所述闪存写入所述第一配置数据的第三地址空间的写入方式的写入命令字,以及所述第三地址空间的地址;
所述在擦除所述闪存的地址空间中存储的数据后,基于所述CPU发送的包含当前待写入的第一配置数据的写入信息,将所述第一配置数据写入所述闪存的地址空间,包括:
在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的所述写入命令字、自身的地址寄存器中的所述第三地址空间的地址,以及自身的写入寄存器中的所述第一配置数据,以使所述闪存按照所述写入命令字所指示的写入方式,向所述第三地址空间处写入所述第一配置数据。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
在将所述第一配置数据写入所述闪存的地址空间之后,基于所述CPU发送的读取信息,读取所述闪存的地址空间中存储的数据。
13.根据权利要求11所述的方法,其特征在于,所述方法还包括:
在擦除所述闪存的地址空间中存储的数据之前,若所述业务板中的包处理器启动异常,基于所述CPU发送的读取信息,读取所述闪存的地址空间中存储的数据。
14.根据权利要求12或13所述的方法,其特征在于,所述读取信息包含:用于指示所述闪存读取第一地址空间中存储的数据的读取方式的第一读取命令字,以及所述第一地址空间的地址;
所述基于所述CPU发送的读取信息,读取所述闪存的地址空间中存储的数据,包括:
在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的所述第一读取命令字,以及自身的地址寄存器中的所述第一地址空间的地址,以使所述闪存按照所述第一读取命令字所指示的读取方式,从所述第一地址空间处读取数据,并向所述可编程逻辑器件发送读取到的数据;
将所述闪存发送的数据写入自身的读取寄存器,以使所述CPU从所述读取寄存器中获取数据。
15.根据权利要求11所述的方法,其特征在于,所述业务板还包括:用于连接外部烧录工具的预留加载座;所述可编程逻辑器件包括:第二开关;所述方法还包括:
基于所述CPU的控制,控制所述第二开关导通所述CPU与所述可编程逻辑器件的第一接口的第一侧之间的连接;所述第一接口的第二侧用于连接所述闪存;
当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,基于所述CPU的控制,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
16.根据权利要求15所述的方法,其特征在于,所述基于所述CPU的控制,控制所述第二开关导通所述CPU与所述可编程逻辑器件的第一接口的第一侧之间的连接,包括:
在自身的路径选择寄存器中写入表示通过所述CPU写入所述第一配置数据的第一路径选择字符时,控制所述第二开关导通所述CPU与所述第一接口的第一侧之间的连接;
所述当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,基于所述CPU的控制,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接,包括:
当需要通过所述外部烧录工具向所述闪存中写入所述第一配置数据时,在所述路径选择寄存器中写入表示通过所述外部烧录工具写入所述第一配置数据的第二路径选择字符时,控制所述第二开关导通所述预留加载座与所述第一接口的第一侧之间的连接。
17.根据权利要求11所述的方法,其特征在于,所述方法还包括:
在所述命令字寄存器中写入有所述擦除命令字之前,在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的用于指示所述闪存解除写保护状态的解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
18.根据权利要求11所述的方法,其特征在于,所述方法还包括:
在所述命令字寄存器中写入有所述写入命令字之前,在所述控制寄存器中写入有所述传输字符时,向所述闪存发送所述命令字寄存器中的用于指示所述闪存解除写保护状态的解除写保护命令字,使所述闪存基于所述解除写保护命令字,解除自身的写保护状态。
19.根据权利要求11所述的方法,其特征在于,所述方法还包括:
在自身的控制寄存器中写入有表示触发传输操作的传输字符时,向所述闪存发送自身的命令字寄存器中的第二读取命令字,以使所述闪存基于所述第二读取命令字,从自身的寄存器读取数据,并向所述可编程逻辑器件发送读取到的数据;其中,所述第二读取命令字用于指示所述闪存读取自身的寄存器中的数据;
将所述闪存发送的数据写入自身的读取寄存器,以使所述CPU从所述读取寄存器中获取数据。
20.根据权利要求11所述的方法,其特征在于,所述业务板包括多个闪存;所述方法还包括:
基于自身的标识寄存器中写入的表示当前需要进行数据访问的目标闪存的标识字符对所述目标闪存进行数据访问。
21.一种处理器,其特征在于,所述处理器用于执行权利要求1-10任一所述的方法步骤。
22.一种可编程逻辑器件,其特征在于,所述可编程逻辑器件用于执行权利要求11-20任一所述的方法步骤。
23.一种业务板,其特征在于,所述业务板包括如权利要求21所述的处理器、如权利要求22所述的可编程逻辑器件,以及闪存。
24.根据权利要求23所述的业务板,其特征在于,所述业务板还包括包处理器和第一开关,所述第一开关,用于在需要通过所述包处理器向所述闪存中写入所述第一配置数据时,断开所述可编程逻辑器件与所述闪存之间的连接;
在需要通过所述可编程逻辑器件向所述闪存中写入所述第一配置数据时,导通所述可编程逻辑器件与所述闪存之间的连接。
25.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-20任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310496698.XA CN116204450B (zh) | 2023-04-28 | 2023-04-28 | 数据写入方法、处理器、器件、业务板及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310496698.XA CN116204450B (zh) | 2023-04-28 | 2023-04-28 | 数据写入方法、处理器、器件、业务板及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116204450A CN116204450A (zh) | 2023-06-02 |
CN116204450B true CN116204450B (zh) | 2023-08-18 |
Family
ID=86511557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310496698.XA Active CN116204450B (zh) | 2023-04-28 | 2023-04-28 | 数据写入方法、处理器、器件、业务板及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116204450B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1764803A1 (en) * | 2005-09-09 | 2007-03-21 | STMicroelectronics S.r.l. | Memory architecture with serial peripheral interface |
CN1996244A (zh) * | 2006-01-04 | 2007-07-11 | 中兴通讯股份有限公司 | 一种通过个人计算机进行固件下载的方法及装置 |
CN107391038A (zh) * | 2017-07-26 | 2017-11-24 | 深圳市硅格半导体股份有限公司 | 资料存储型闪存的数据写入方法、闪存及存储介质 |
CN110471861A (zh) * | 2019-07-10 | 2019-11-19 | 华为技术有限公司 | 一种闪存设备中的数据存储方法及闪存设备 |
CN110941444A (zh) * | 2019-12-28 | 2020-03-31 | 深圳开立生物医疗科技股份有限公司 | 一种升级配置逻辑电路、方法、系统及可编程逻辑器件 |
CN111104064A (zh) * | 2019-12-10 | 2020-05-05 | 深圳震有科技股份有限公司 | Flash存储器写保护处理方法及装置、计算机设备、介质 |
CN111752487A (zh) * | 2020-06-18 | 2020-10-09 | 深圳大普微电子科技有限公司 | 一种数据恢复方法、装置及固态硬盘 |
CN112347524A (zh) * | 2020-10-13 | 2021-02-09 | 深圳市宏旺微电子有限公司 | 闪存编程方法、装置及电子设备 |
CN113741792A (zh) * | 2020-05-29 | 2021-12-03 | 广州极飞科技股份有限公司 | 用于单片机存储数据的方法、单片机及可读存储介质 |
CN115840579A (zh) * | 2023-02-14 | 2023-03-24 | 合肥安迅精密技术有限公司 | Fpga远程更新方法、系统、贴片机及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050135180A1 (en) * | 2000-06-30 | 2005-06-23 | Micron Technology, Inc. | Interface command architecture for synchronous flash memory |
-
2023
- 2023-04-28 CN CN202310496698.XA patent/CN116204450B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1764803A1 (en) * | 2005-09-09 | 2007-03-21 | STMicroelectronics S.r.l. | Memory architecture with serial peripheral interface |
CN1996244A (zh) * | 2006-01-04 | 2007-07-11 | 中兴通讯股份有限公司 | 一种通过个人计算机进行固件下载的方法及装置 |
CN107391038A (zh) * | 2017-07-26 | 2017-11-24 | 深圳市硅格半导体股份有限公司 | 资料存储型闪存的数据写入方法、闪存及存储介质 |
CN110471861A (zh) * | 2019-07-10 | 2019-11-19 | 华为技术有限公司 | 一种闪存设备中的数据存储方法及闪存设备 |
CN111104064A (zh) * | 2019-12-10 | 2020-05-05 | 深圳震有科技股份有限公司 | Flash存储器写保护处理方法及装置、计算机设备、介质 |
CN110941444A (zh) * | 2019-12-28 | 2020-03-31 | 深圳开立生物医疗科技股份有限公司 | 一种升级配置逻辑电路、方法、系统及可编程逻辑器件 |
CN113741792A (zh) * | 2020-05-29 | 2021-12-03 | 广州极飞科技股份有限公司 | 用于单片机存储数据的方法、单片机及可读存储介质 |
CN111752487A (zh) * | 2020-06-18 | 2020-10-09 | 深圳大普微电子科技有限公司 | 一种数据恢复方法、装置及固态硬盘 |
CN112347524A (zh) * | 2020-10-13 | 2021-02-09 | 深圳市宏旺微电子有限公司 | 闪存编程方法、装置及电子设备 |
CN115840579A (zh) * | 2023-02-14 | 2023-03-24 | 合肥安迅精密技术有限公司 | Fpga远程更新方法、系统、贴片机及存储介质 |
Non-Patent Citations (1)
Title |
---|
无.路由器闪存盘如何修复.2022,第1-10页. * |
Also Published As
Publication number | Publication date |
---|---|
CN116204450A (zh) | 2023-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101313287B (zh) | 经由嵌入式控制器初始化快闪存储设备 | |
CN110618903A (zh) | 电子设备测试方法与装置 | |
CN100483348C (zh) | 一种用于现场可编程门阵列位文件升级的系统及方法 | |
CN107820603A (zh) | 一种固件更新方法及控制器 | |
CN112231005B (zh) | 一种基于uboot管理fpga版本的方法 | |
CN111737173B (zh) | I2c总线通信控制方法、装置、系统及可读存储介质 | |
CN107562437A (zh) | 一种基于MicroBlaze软核的FPGA在线升级的系统及方法 | |
TWI421686B (zh) | 資料存取方法與系統、儲存媒體控制器與儲存系統 | |
CN114333962A (zh) | 闪存芯片的测试方法、装置、系统、电子设备及存储介质 | |
CN115292266A (zh) | 一种基于存储器的高可靠日志存储方法 | |
CN117219146A (zh) | 一种面向安全启动的片上efuse读写控制装置及方法 | |
CN116204450B (zh) | 数据写入方法、处理器、器件、业务板及存储介质 | |
KR100997813B1 (ko) | 반도체 기억 장치 및 그 동작 방법 | |
CN107908418B (zh) | 光纤通道节点卡的逻辑程序升级方法及光纤通道总线设备 | |
CN112925569A (zh) | 一种固件数据处理方法、装置、设备及存储介质 | |
CN109426511A (zh) | 软核更新方法和系统 | |
US20040205318A1 (en) | Remapping of data access requests | |
CN104678292A (zh) | 一种复杂可编程逻辑器件cpld测试方法和装置 | |
CN101221519A (zh) | 一种处理器系统中闪存存储器的读写调试方法 | |
TWI417888B (zh) | An embedded chip system, a method for burning a wafer, and a computer program product | |
CN114116337A (zh) | 基于pcie链路配置的硬盘测试方法、系统、终端及存储介质 | |
CN116501354B (zh) | 光纤通道网络节点设备中fpga配置文件安全在线升级方法 | |
CN112181444A (zh) | 一种基于1553b总线的dsp多核数据烧写方法 | |
CN107908506A (zh) | 一种存储器坏点管理的实现方法 | |
US11494262B2 (en) | Electronic device having one-time-programmable (OTP) memory and method for writing and reading OTP memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |