CN104461657B - 一种主备嵌入式引导程序的启动方法及装置 - Google Patents

一种主备嵌入式引导程序的启动方法及装置 Download PDF

Info

Publication number
CN104461657B
CN104461657B CN201410837186.6A CN201410837186A CN104461657B CN 104461657 B CN104461657 B CN 104461657B CN 201410837186 A CN201410837186 A CN 201410837186A CN 104461657 B CN104461657 B CN 104461657B
Authority
CN
China
Prior art keywords
uncompressed
bootstrap
memory block
flash
backup
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
Application number
CN201410837186.6A
Other languages
English (en)
Other versions
CN104461657A (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.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication Technology 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 Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN201410837186.6A priority Critical patent/CN104461657B/zh
Publication of CN104461657A publication Critical patent/CN104461657A/zh
Application granted granted Critical
Publication of CN104461657B publication Critical patent/CN104461657B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及数据通信领域的系统启动技术,其公开了一种主备嵌入式引导程序的启动方法,解决传统技术中采用两片norflash分别存储主引导程序和备份引导程序带来的成本高的问题和采用两片nandflash分别存储主引导程序和备份引导程序带来的稳定性不高的问题。该方法包括:a.设备上电,系统从nandflash中读取主引导程序进行加载;b.系统判断是否加载成功,如是,则结束流程,否则进入步骤c;c.重启设备,系统从norflash中读取备份引导程序进行加载。本发明适用于嵌入式设备的启动。

Description

一种主备嵌入式引导程序的启动方法及装置
技术领域
[0001] 本发明涉及数据通信领域的系统启动技术,特别涉及一种通过NAND FLASH和N0R FLASH互为备份的启动方法。
背景技术
[0002] 目前嵌入式设备中,要求很高的稳定性;单个系统引导程序进行设备加载将会存 在安全隐患,如果这个引导程序出现问题或者存储引导程序的存储设备出现故障将会导致 系统加载失败甚至出现不能恢复的状况;因此目前业界的操作方式是增加备份的引导程 序,通过主备引导程序共同保证设备正确加载。
[0003] NAND FLASH作为常用的非易失性存储器件,没有地址总线和数据总线的区分,对 数据的读写操作都是通过I/O总线串行操作的;读写NAND FLASH数据时,先要发送读写操作 命令并通过I/O总线输入要读写的数据地址,再由I/O总线传输读写数据;无法实现代码在 芯片内执行。
[0004] NOR FLASH是另一种常用的易失性存储器件,接口由地址总线、数据总线和读、写、 片选等控制信号组成,可以实现代码在芯片内执行(XIP),是主流的芯片引导程序存储芯 片。
[0005] 传统技术中采用主备引导程序的方案有两种:
[0006] 方案一:采用两片NOR FLASH分别存储主引导程序和备份引导程序;设备上电启动 时,默认CPU片选信号CS0接入NOR FLASHO, CPU片选信号(Chip Select) CS1接入N0R FLASH1〇
[0007] 系统首先从NOR FLASH0存储的引导程序加载设备,如果加载失败则系统逻辑控制 单元将会重启设备,并且将片选信号切换到CS1,系统从NOR FLASH1存储的引导程序加载设 备。
[0008] 该方案采用两片NOR FLASH存储引导程序,相对于相同容量的NAND FLASH来说,增 加了硬件成本,并且使用寿命更短。
[0009] 方案二:采用两片NAND FLASH分别存储主引导程序和备份引导程序;设备上电启 动时,默认CPU片选信号CS0接入NAND FLASH0,CPU片选信号CS1接入NAND FLASH1。
[0010]系统首先从NAND FLASH0存储的引导程序加载设备,如果加载失败则系统逻辑控 制单元将会重启设备,并且将片选信号切换到CS1,系统从NAND FLASH1存储的引导程序加 载设备。
[0011] 该方案采用两片NAND FLASH作为存储引导程序芯片,相对于采用两片NOR FLASH 存储引导程序的方案来说可以节约成本,然而稳定性却无法得到保证,这是由于N A N D FLASH自身的工艺特点,出现坏块的问题无法避免。
发明内容
[0012] 本发明所要解决的技术问题是:提出一种主备嵌入式引导程序的启动方法,解决 传g技术中采用两片NOR FLASH分别存储主引导程序和备份引导程序带来的成本高的问题 和采用两片NAND FLASH分别存储主引导程序和备份引导程序带来的稳定性不高的问题。 [0013]本发明解决其技术问题所采用的技术方案是:一种主备嵌入式引导程序的启动方 法,包括以下步骤:
[0014] a.设备上电,系统从第一存储区中读取主引导程序进行加载;
[0015] b •系统判断是否加载成功,如是,则结束流程,否则进入步骤c;
[0016] C•重启设备,系统从第二存储区中读取备份引导程序进行加载。
[0017]具体的,当所述第一存储区为熟_ FLASH时,则第二存储区为N〇R FLASH;当所述 第一存储区为NOR FLASH时,则第二存储区为NAND FLASH。
[0018]具体的,所述备份引导程序为主引导程序的拷贝,具备相同数据内容和数据结构。 [0019]具体的,所述主引导程序和备份引导程序均包括第一非压缩部分、第二非压缩部 分、压缩部分、第三非压缩部分;其中,第一非压缩部分和第三非压缩部分分别位于引导程 序的首、尾,并具备相同的数据内容;所述第二非压缩部分位于第一非压缩部分之后;所述 压缩部分位于第二非压缩部分之后。
[0020]具体的,所述第一非压缩部分和第三非压缩部分用于初始化CPU寄存器、初始化地 址映射和初始化本地总线。
[0021]具体的,所述系统通过设备CPU中的状态寄存器的当前状态位来区分是从NAND FLASH启动还是从NAND FLASH启动。
[0022]本发明的另一个目的,提供一种主备嵌入式引导程序的启动装置,所述装置包括: [0023] 第一存储区,用于存储系统的主引导程序;
[0024]第二存储区,用于存储系统的备份引导程序;
[0025]启动模块,用于从第一存储区中读取主引导程序进行加载,并在判断加载失败时, 从第二存储区中读取备份引导程序进行加载。
[0026]具体的,当所述第一存储区为NAND FLASH时,则第二存储区为NOR FLASH;当所述 第一存储区为NOR FLASH时,则第二存储区为NAND FLASH。
[0027]具体的,所述主引导程序和备份引导程序均包括第一非压缩部分、第二非压缩部 分、压缩部分、第三非压缩部分;其中,第一非压缩部分和第三非压缩部分分别位于引导程 序的首、尾,并具备相同的数据内容;所述第二非压缩部分位于第一非压缩部分之后;所述 压缩部分位于第二非压缩部分之后。
[0028]具体的,所述第一非压缩部分和第三非压缩部分用于初始化CPU寄存器、初始化地 址映射和初始化本地总线。
[0029]更进一步的,所述系统通过设备CPU中的状态寄存器的当前状态位来区分是从 NAND FLASH启动还是从NOR FLASH启动。
[0030]本发明的有益效果是:采用NAND FLASH和NOR FLASH互为备份的启动方式,可以兼 顾双备份引导程序硬件成本和稳定性,并且增加了系统可维护性。
附图说明
[0031]图1是本发明实施例中的一种主备嵌入式引导程序的启动方法流程图;
[0032]图2是本发明另一种实施例的一种主备嵌入式引导程序启动方法流程图;
[0033] 图3是本发明修改后的引导程序组成图;
[0034] 图4是本发明实施例中的一种主备嵌入式引导程序的启动装置的结构框图。
具体实施方式
[0035]本发明旨在提出一种主备嵌入式引导程序的启动方法,解决传统技术中采用两片 N0RFLASH分别存储主引导程序和备份引导程序带来的成本高的问题和采用两片NAND FLASH分别存储主引导程序和备份引导程序带来的稳定性不高的问题。
[0036] 实施例1
[0037] 如图1所示,本发明实施例中的主备嵌入式引导程序启动方法,包括以下步骤: [0038] S101.设备上电,系统从NAND FLASH中读取主引导程序进行加载;
[0039] S102.系统判断是否加载成功,如是,则结束流程,否则进入步骤S103;
[0040] S103.重启设备,系统从NOR FLASH中读取备份引导程序进行加载。
[0041] 上述方案是将NAND FLASH作为主引导程序存储器,将NOR FLASH作为备份引导程 序存储器。
[0042] 实施例2
[0043] 本发明实施例2还提出了另外一种通过NAND FLASH和NOR FLASH互为备份的启动 方法,其将NOR FLASH作为主引导程序存储器,将NAND FLASH作为备份引导程序存储器;如 图2所示:该方法包括以下步骤:
[0044] S2〇l•设备上电,系统从NOR FLASH中读取主引导程序进行加载;
[0045] S202 •系统判断是否加载成功,如是,则结束流程,否则进入步骤S203;
[0046] S203•重启设备,系统从NAND FLASH中读取备份引导程序进行加载。
[0047] 在本发明中,要实现同一个引导程序能分别从NAND FLASH和NOR FLASH正确初始 化设备,需要解决两个问题:第一,引导程序怎么设计既满足NAND FLASH的取指令的需求又 满足N0RFLASH的取指令需求;第二,如何判断是从NAND FLASH启动还是从NOR FLASH启动。 [0048]对于第二个问题,CPU中有一个状态寄存器,可以通过当前状态位来判断是通过 N0RFLASH启动还是通过NAND FLASH启动。
[0049]对于第一个问题,本发明实施例采用如下解决方式:
[0050]将非压缩的引导程序也分成两个部分,一部分是初始化cpu寄存器、初始化地址映 射、初始化本地总线,称为第一非压缩部分;另一部分则是剩余的初始化部分,称为第二非 压缩部分,其位于第一非压缩部分之后;
[0051]接着是位于第二非压缩部分之后的压缩部分,在压缩部分之后是第三非压缩部 分,第三非压缩部分与第一非压缩部分具备相同的数据结构和数据内容。这样修改后的引 导程序结构如图3所示,为更加形象,在图3中本发明实施例将第一非压缩部分和与其相同 内容的第三非压缩部分均用“压缩1”来表示,将第二非压缩部分用“压缩2”来表示。
[0052]在具体设计引导程序的时候,本发明实施例将引导程序的代码分成各个模块,初 始化CF>U模块,初始化本地总线模块等等,在编写代码的时候,将各个模块的头部打上记号; 相同的记号将被编译器链接到一起;然后本发明实施例通过编写链接规则,将想要的功能 模块按照图3的顺序进行链接,这样就得到想要的引导程序。
[0053]本发明实施例提供一种实现上述主备嵌入式引导程序的启动方法的装置构框图, 包括
[0054]第一存储区,用于存储系统的主引导程序;
[0055]第二存储区,用于存储系统的备份引导程序;
[0056]启动模块,用于从第一存储区中读取主引导程序进行加载,并在判断加载失败时, 从第二存储区中读取备份引导程序进行加载。
[0057]所述主引导程序和备份引导程序均包括第一非压缩部分、第二非压缩部分、压缩 部分、第三非压缩部分;其中,第一非压缩部分和第三非压缩部分分别位于引导程序的首、 尾,并具备相同的数据内容;所述第二非压缩部分位于第一非压缩部分之后;所述压缩部分 位于弟一非压缩郃分之后。所述弟一非压缩部分和第二非压缩部分用于初始化CPU寄存器、 初始化地址映射和初始化本地总线。所述系统通过设备CPU中的状态寄存器的当前状态位 来区分是从NAND FLASH启动还是从NAND FLASH启动。

Claims (4)

1. 一种主备嵌入式引导程序的启动方法,其特征在于,包括以下步骤: a•设备上电,系统从第一存储区中读取主引导程序进行加载; b •系统判断是否加载成功,如是,则结束流程,否则进入步骤£; c •重启设备,系统从第二存储区中读取备份引导程序进行加载; 当所述第一存储区为NAND FLASH时,则第二存储区为N0R FLASH;当所述第一存储区为 N0RFLASH时,则第二存储区为NAND FLASH; 所述主引导程序和备份引导程序均包括第一非压缩部分、第二非压缩部分、压缩部分、 第三非压缩部分;其中,第一非压缩部分和第三非压缩部分分别位于引导程序的首、尾,并 具备相同的数据内容;所述第二非压缩部分位于第一非压缩部分之后;所述压缩部分彳^于 第二非压缩部分之后; 所述第一非压缩部分为非压缩的引导程序中用于初始化CPU寄存器、初始化地址映射 和初始化本地总线的部分,所述第二非压缩部分为非压缩的引导程序中除第一非压缩部分 之外的剩余初始化部分。
2.如权利要求1所述的一种主备嵌入式引导程序的启动方法,其特征在于,所述系统通 过设备CPU中的状态寄存器的当前状态位来区分是从NAND FLASH启动还是从NOR FLASH启 动。
3.—种主备嵌入式引导程序的启动装置,其特征在于,包括: 第一存储区,用于存储系统的主引导程序; 第二存储区,用于存储系统的备份引导程序; 启动模块,用于从第一存储区中读取主引导程序进行加载,并在判断加载失败时,从第 二存储区中读取备份引导程序进行加载; 当所述第一存储区为NAND FLASH时,则第二存储区为NOR FLASH;当所述第一存储区为 N0RFLASH时,则第二存储区为NAND FLASH; 所述主引导程序和备份引导程序均包括第一非压缩部分、第二非压缩部分、压缩部分、 第三非压缩部分;其中,第一非压缩部分和第三非压缩部分分别位于引导程序的首、尾,并 具备相同的数据内容;所述第二非压缩部分位于第一非压缩部分之后;所述压缩部分位于 第二非压缩部分之后; 所述第一非压缩部分为非压缩的引导程序中用于初始化CPU寄存器、初始化地址映射 和初始化本地总线的部分,所述第二非压缩部分为非压缩的引导程序中除第一非压缩部分 之外的剩余初始化部分。
4.如权利要求3所述的一种主备嵌入式引导程序的启动装置,其特征在于,所述系统通 过设备CPU中的状态寄存器的当前状态位来区分是从NAND FLASH启动还是从NOR FLASH启 动。
CN201410837186.6A 2014-12-29 2014-12-29 一种主备嵌入式引导程序的启动方法及装置 Active CN104461657B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410837186.6A CN104461657B (zh) 2014-12-29 2014-12-29 一种主备嵌入式引导程序的启动方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410837186.6A CN104461657B (zh) 2014-12-29 2014-12-29 一种主备嵌入式引导程序的启动方法及装置

Publications (2)

Publication Number Publication Date
CN104461657A CN104461657A (zh) 2015-03-25
CN104461657B true CN104461657B (zh) 2018-01-26

Family

ID=52907762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410837186.6A Active CN104461657B (zh) 2014-12-29 2014-12-29 一种主备嵌入式引导程序的启动方法及装置

Country Status (1)

Country Link
CN (1) CN104461657B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105938445B (zh) * 2015-07-31 2019-09-06 杭州迪普科技股份有限公司 数据备份方法以及装置
CN105589765A (zh) * 2015-12-17 2016-05-18 迈普通信技术股份有限公司 一种实现程序备份的方法
CN105677348A (zh) * 2016-01-04 2016-06-15 青岛海信信芯科技有限公司 一种boot程序的存储方法及装置、启动方法及装置
CN106293832B (zh) * 2016-08-09 2020-01-14 上海盈方微电子有限公司 一种soc芯片引导启动方法及系统
CN106123905A (zh) * 2016-08-16 2016-11-16 长安马自达汽车有限公司 航位推算的快速启动处理方法
CN106502692A (zh) * 2016-10-26 2017-03-15 合肥润客软件科技有限公司 一种基于嵌入式软件开发的qnx车载信息系统
CN109063488A (zh) * 2018-08-03 2018-12-21 中国航空工业集团公司雷华电子技术研究所 一种PowerPC备份系统安全自启动方法及系统
CN109408145A (zh) * 2018-10-18 2019-03-01 郑州云海信息技术有限公司 一种处理器启动方法、装置、系统和计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103995754A (zh) * 2014-04-23 2014-08-20 汉柏科技有限公司 一种控制power-pc中cpu启动切换的系统及方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101276297A (zh) * 2008-05-14 2008-10-01 北京星网锐捷网络技术有限公司 一种处理器系统、设备及故障处理方法
TWI474260B (zh) * 2009-02-16 2015-02-21 Asustek Comp Inc 電腦系統與其主機板上之記憶體電路和開機方法
CN102135891B (zh) * 2010-01-21 2013-06-26 杭州华三通信技术有限公司 可实现引导启动的系统及引导启动控制装置和方法
CN102520979A (zh) * 2011-11-22 2012-06-27 大唐移动通信设备有限公司 一种Boot程序的备份方法和设备

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103995754A (zh) * 2014-04-23 2014-08-20 汉柏科技有限公司 一种控制power-pc中cpu启动切换的系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
同时支持Nand Flash和Nor Flash启动的启动加载程序设计实现;周书林 等;《科学技术与工程》;20100131;第10卷(第2期);第508-510页 *

Also Published As

Publication number Publication date
CN104461657A (zh) 2015-03-25

Similar Documents

Publication Publication Date Title
US9626290B2 (en) Memory channel connected non-volatile memory
US9052843B2 (en) Card and host device
US10296217B2 (en) Techniques to configure a solid state drive to operate in a storage mode or a memory mode
US9804794B2 (en) Techniques for providing data redundancy after reducing memory writes
US8656072B2 (en) Memory bus architecture for concurrently supporting volatile and non-volatile memory modules
JP4700562B2 (ja) データ記憶装置およびデータ記憶方法
US8694766B2 (en) Device bootup from a NAND-type non-volatile memory
CN1698032B (zh) 从非线性存储器引导
TWI514408B (zh) 於裝置開機期間處置來自非揮發性記憶體之錯誤
US6721212B2 (en) Memory control circuit and control system for a plurality of memories interconnected via plural logic interfaces
CN100394391C (zh) 用于在计算机系统上存储数据的系统和方法
US8151036B2 (en) Memory controller, memory system, and access control method of flash memory
JP5229326B2 (ja) マルチコアcpuにおける消費電力制御方法,消費電力制御プログラム及び情報処理システム
CN101313287B (zh) 经由嵌入式控制器初始化快闪存储设备
US8230160B2 (en) Flash memory storage system and flash memory controller and data processing method thereof
KR101468824B1 (ko) 메모리 장치의 활용 영역 확장
US8090980B2 (en) System, method, and computer program product for providing data redundancy in a plurality of storage devices
CN101650662B (zh) 一种嵌入式系统的存储器件的固件启动及升级方法
US7937523B2 (en) Memory system with nonvolatile semiconductor memory
KR100634436B1 (ko) 멀티 칩 시스템 및 그것의 부트코드 페치 방법
US7890732B2 (en) Memory card and semiconductor device
TWI598882B (zh) 用於具有非揮發性記憶體之一系統的電力預算的動態分配
US8131912B2 (en) Memory system
US20060212694A1 (en) Method of updating firmware in computer server systems
US8145831B2 (en) Memory system and controller with mode for direct access memory

Legal Events

Date Code Title Description
PB01 Publication
C06 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant