CN110032403A - 存储器装置与电子装置的启动程序加载方法 - Google Patents

存储器装置与电子装置的启动程序加载方法 Download PDF

Info

Publication number
CN110032403A
CN110032403A CN201811264242.6A CN201811264242A CN110032403A CN 110032403 A CN110032403 A CN 110032403A CN 201811264242 A CN201811264242 A CN 201811264242A CN 110032403 A CN110032403 A CN 110032403A
Authority
CN
China
Prior art keywords
startup program
storage area
host
default
starting
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
CN201811264242.6A
Other languages
English (en)
Other versions
CN110032403B (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.)
Macronix International Co Ltd
Original Assignee
Macronix International 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 Macronix International Co Ltd filed Critical Macronix International Co Ltd
Publication of CN110032403A publication Critical patent/CN110032403A/zh
Application granted granted Critical
Publication of CN110032403B publication Critical patent/CN110032403B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)
  • Read Only Memory (AREA)
  • Storage Device Security (AREA)

Abstract

本发明为一种存储器装置与电子装置的启动程序加载方法。存储器装置包含存储器阵列、还原缓存器、默认启动地址缓存器、触发电路、地址转换模块与存取电路。存储器阵列包含多个储存区域,其中一者定义为第一启动程序存放区,且另一者定义为第二启动程序存放区。还原缓存器储存启动还原参数,默认启动地址缓存器储存默认启动地址参数。地址转换模块依据主机存取地址、启动还原参数与该默认启动地址参数而产生存储器存取地址。存取电路对存储器存取地址执行存取指令。触发电路选择性产生用于设定启动还原参数的逾时触发信号。

Description

存储器装置与电子装置的启动程序加载方法
技术领域
本发明涉及一种存储器装置与电子装置的启动程序加载方法,且特别涉及一种可提供更新版启动程序的存储器装置与电子装置的启动程序加载方法。
背景技术
当前的电子产品多为嵌入式系统,并须采用控制器控制相关的功能电路。此外,控制器还须搭配非易失性储存装置使用,用于储存启动程序(另可称为启动加载程序(bootloader))、系统程序、影音数据等。
许多电子装置在出厂后,制造厂商会基于不同考虑而提供更新版本的启动程序与系统程序等。其中,系统程序能正常执行的前提是,启动程序必须能正常执行。然而,用户透过更新流程而下载的更新版启动程序upBootPG,是否能正常地在嵌入式系统上执行,仍存在多种变量。
例如,用户可能下载时,选择与硬件不兼容的更新版启动程序upBootPG;或是电子装置在下载更新版启动程序upBootPG的过程发生断电情况,导致启动程序未能顺利完成更新等。为此,如何能使电子装置在提供软件更新功能的同时,确保嵌入式系统能顺利执行启动程序,进而避免更新流程中的突发状况而使电子装置无法顺利开机,是值得深入探讨的议题。
发明内容
本发明涉及一种存储器装置与电子装置的启动程序加载方法,可以避免电子装置因为下载更新版启动程序upBootPG所衍生的可能无法顺利开机的现象。
根据本发明的一方面,提出一种用以电连接于主机的存储器装置。存储器装置包含:存储器阵列、还原缓存器、默认启动地址缓存器、地址转换模块、存取电路。存储器阵列包含多个储存区域,其中所述储存区域的一者定义为第一启动程序存放区,且所述储存区域中的另一者定义为第二启动程序存放区。还原缓存器用以电连接于主机,其储存启动还原参数。默认启动地址缓存器用以电连接于主机,其储存默认启动地址参数。主机于第一开机期间,根据默认启动地址参数而加载储存在第一启动程序存放区的默认启动程序以及储存在第二启动程序存放区的更新版启动程序二者中的一者。地址转换模块用以电连接于主机、还原缓存器与默认启动地址缓存器。地址转换模块在接收由主机所产生的主机存取地址后,依据主机存取地址、启动还原参数与默认启动地址参数而产生存储器存取地址。存取电路用以电连接于主机、存储器阵列与地址转换模块。存取电路自主机接收存取指令,其中存取电路对存储器存取地址执行该存取指令。触发电路用以电连接于主机、还原缓存器与默认启动地址缓存器。其中,在第一开机期间,触发电路选择性产生用于设定启动还原参数的逾时触发信号。
根据本发明的另一方面,提出一种电子装置的启动程序加载方法。电子装置包含主机与存储器装置,且存储器装置包含存储器阵列。存储器阵列包含的多个储存区域的一者被定义为第一启动程序存放区,且所述储存区域中的另一者被定义为第二启动程序存放区。启动程序加载包含以下步骤。存储器装置储存启动还原参数以及默认启动地址参数。主机于第一开机期间,根据默认启动地址参数而加载储存在第一启动程序存放区的默认启动程序以及储存在第二启动程序存放区的更新版启动程序二者中的一者。存储器装置依据主机所产生的主机存取地址、启动还原参数与默认启动地址参数而产生存储器存取地址。存储器装置自主机接收存取指令,并对存储器存取地址执行存取指令。在第一开机期间,存储器装置选择性产生用于设定启动还原参数的逾时触发信号。
为了对本发明上述及其他方面有更佳了解,下文特列举实施例,并配合所附附图详细说明如下:
附图说明
图1是将存储器阵列划分为多个储存区域,作为储存启动程序使用的示意图。
图2是选择将存储器阵列的两个储存区域作为存放启动程序使用示意图。
图3A、3B是延续图2所示的储存区域与启动程序存放区的对应关系,存放默认启动程序dftBootPG与更新版启动程序upBootPG的引导块域配置BootLayout示意图。
图4是根据本发明的实施例的电子装置内部电路示意图。
图5A是存储器装置随着主机是否执行更新流程,以及用于储存默认启动程序dftBootPG的启动程序存放区的不同,而对应调整更新启动地址参数updatePT、默认启动地址参数bootPT不同状态的示意图。
图5B是说明存储器装置各个状态之间的演变关系的状态图。
图6是说明随着更新启动地址参数updatePT与默认启动地址参数bootPT是否相等,以及启动还原参数rstrFLG的值不同,主机的执行流程示意图。
图7是触发电路的内部电路示意图。
图8A是地址转换模块将主机存取地址Hadd转换为存储器存取地址Madd示意图。
图8B是举例说明地址转换电路如何将主机存取地址Hadd拆分为主机存取地址最高有效位HMSadd与主机存取地址最低有效位HLSadd后,再搭配存储器存取地址最高有效位MMSadd产生存储器存取地址Madd示意图。
【符号说明】
存储器阵列10、271 储存区域A 10a、271a
储存区域B 10b、271b 储存区域C 10c、271c
储存区域D 10d、271d 第一启动地址startAdd1
第二启动地址startAdd2 启动程序存放区boot1 11
启动程序存放区boot2 13
第一引导块域配置BootLayout1
第二引导块域配置BootLayout2 电子装置20
主机21 功能电路23
存储器装置27 启动还原参数rstrFLG
存取指令Cmd 主机存取地址Hadd
逾时触发信号Str 存取数据Data
内部频率信号CLKint 存储器存取地址Madd
还原缓存器259 更新启动地址缓存器255
默认启动地址缓存器257 频率产生器254b
看门狗定时器2541 存取电路252
地址转换模块256 上电信号Son
情况C11、C12、C13、C14、C15、C16、C17、C21、C22、C23、C24、C25、C26、C27
步骤S40、S41、S42、S43、S45、S47
定时器使能电路2542 使能信号选择电路2543
存储器端定时器使能信号Msen 主机端定时器使能信号Hsen
默认启动地址参数bootPT 更新启动地址参数updatePT
定时器使能信号Sen 地址转换电路253
启动地址决定电路253a 配置选择电路253e
上电启动地址电路253d 地址映射逻辑253c
启动地址选择信号Ssel_startAdd 地址译码电路251
具体实施方式
启动程序是嵌入式系统硬件开机或重设后,主机所执行的第一段(初始化)的程序。简单来说,启动程序会将嵌入式系统中最基本的硬件配置完成,并将系统程序从非易失性存储器加载至嵌入式系统的静态随机存取存储器(Static Random Access Memory,简称为SRAM)和/或动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM)。因此,主机可否顺利自存储器装置加载启动程序,是嵌入式系统能否顺利执行的关键。
请参见图1,其是将存储器阵列划分为多个储存区域,作为储存启动程序使用的示意图。为便于说明,此处假设存储器阵列10被划分为四个储存区域(储存区域A、储存区域B、储存区域C、储存区域D)。这四个储存区域可用于储存不同版本的启动程序。关于储存区域的数量,以及其中实际用于储存启动程序的数量、用途等,可由制造厂商或用户根据系统需要或应用而设定或选择,此处不予详述。
实际应用时,存储器阵列10所包含的储存区域的数量并不以此为限。例如,存储器阵列10也可能包含两个储存区域或八个储存区域等。其中,每个储存区域A、B、C、D的大小相等,并可以利用储存区域标识符(IDsa)表示各个储存区域。另外,每个储存区域分别对应于一个加载地址loadAdd,且各个加载地址的差别,仅在于根据储存区域标识符(IDsa)所定义的最高位。为便于说明,此处假设存储器存取地址包含24个位。表1列出假设存储器存取地址为24位,且将存储器阵列10区分为四个等分的储存区域时,与各个储存区域相关的参数。
表1
以图1为例,存储器阵列10所包含的四个储存区域,其储存区域标识符(IDsa)分别为00、01、10、11。根据本发明的构想,可利用储存区域标识符(IDsa)作为存储器存取地址最高有效位MMSadd。在这个例子中,因为存储器阵列10包含四个储存区域的缘故,储存区域标识符(IDsa)与存储器存取地址最高有效位MMSadd的长度均为两个位。
据此,可以得出与储存区域A、B、C、D对应的加载地址。如表1所列示,与储存区域A(10a)对应的第一加载地址为loadAdd1=0x000000,且与储存区域A(10a)对应的存储器地址存取范围为0x000000~0x3FFFFF;与储存区域B(10b)对应的第二加载地址为loadAdd2=0x400000,且与储存区域B(10b)对应的存储器地址存取范围为0x400000~0x7FFFFF;与储存区域C(10c)对应的第三加载地址为loadAdd3=0xS00000,且与储存区域C(10c)对应的存储器地址存取范围为0x800000~0xBFFFFF;以及,与储存区域D(10d)对应的第四加载地址为loadAdd4=0xC00000,且与储存区域D(10d)对应的存储器地址存取范围为0xC00000~0xFFFFFF。
同理,若存储器阵列10仅包含两个储存区域,则储存区域标识符(IDsa)与存储器存取地址最高有效位MMSadd的长度均为一个位。在这种情况下,存储器阵列10会以0x000000~0x7FFFFF作为第一储存区域,以及以0x800000~0xFFFFFF作为第二储存区域。关于储存区域的个数不同时,加载地址loadAdd与存储器地址存取范围可能的改变与组合,此处不再详述。
请参见图2,其是选择将存储器阵列的两个储存区域作为存放启动程序使用的示意图。根据本发明的构想,储存区域A、B、C、D中的至少两个,可被主机用于储存不同版本的启动程序。为便于区别,此处将这两个被选取的储存区域定义为启动程序存放区boot1、启动程序存放区boot2。其中并将启动程序存放区boot1的起始地址定义为第一启动地址startAdd1;以及将启动程序存放区boot2的起始地址定义为第二启动地址startAdd2。
根据本发明的构想,启动程序存放区boot1、启动程序存放区boot2的其中一个会被主机用来储存在系统开机期间实际使用的默认启动程序dftBootPG;启动程序存放区boot1、启动程序存放区boot2中的另一个,则可被主机用于储存更新版启动程序upBootPG。须留意的是,启动程序存放区boot1、启动程序存放区boot2的任一者,均可能用于储存默认启动程序dftBootPG和/或更新版启动程序upBootPG。
实际应用时,主机选择以实际储存区域A、B、C、D中的那两个,作为储存默认启动程序dftBootPG和/或更新版启动程序upBootPG使用,则需视系统的执行状态而定。例如,主机在第一次执行启动程序的更新流程时,可能选择储存区域D、B作为启动程序存放区boot1、启动程序存放区boot2,但在主机第二次执行启动程序的更新流程时,可能改选储存区域D、A作为启动程序存放区boot1、启动程序存放区boot2。换句话说,主机可以根据不同的应用,重新选择以原本未被选择作为启动程序存放区的储存区域B、C作为启动程序存放区。关于储存区域的选用与启动程序存放区的对应关系的应用上的变化,可由本案所属技术领域的技术人员代换,此处不再详述。
需留意的是,嵌入式系统的主机在选择与启动程序存放区boot1、boot2对应的储存区域时,并不需要限定需要是在存储器阵列10中的地址彼此相连的储存区域,且定义储存装置作为启动程序存放区boot1、boot2时,也不需要限定应以对应于较高或较低存储器存取地址的储存区域定义启动程序存放区的顺序。
为便于说明,图2假设启动程序存放区boot1对应于储存区域D,且第一启动地址startAdd1对应于第四加载地址(即,startAdd1=loadAdd4=0xC00000);以及,假设启动程序存放区boot2对应于储存区域A,且第二启动地址startAdd2对应于第一加载地址(startAdd2=loadAdd1=0x000000)。表2为图2中,启动程序存放区boot1、boot2与储存区域之间的对应关系。以下说明将以此种启动程序存放区boot1、boot2与储存区域之间的对应关系为例,关于其他可能将启动程序存放区boot1、boot2对应于不同储存区域的对应关系,此处不再详述。
表2
如前所述,启动程序存放区boot1、启动程序存放区boot2的其中一个会被主机用来储存在系统开机时实际使用的默认启动程序dftBootPG,启动程序存放区boot1、启动程序存放区boot2中的另一个,可被主机用于储存更新版启动程序upBootPG。因此,图2的启动程序存放区boot1、boot2可能对应于图3A、3B所示的两种引导块域配置BootLayout。
请参见图3A、3B,其是延续图2所示的储存区域与启动程序存放区的对应关系,存放默认启动程序dftBootPG与更新版启动程序upBootPG的引导块域配置BootLayout示意图。表3为图3A、3B相关参数的整理列表。
表3
在图3A所示的第一引导块域配置BootLayoutl中,启动程序存放区boot1用于储存默认启动程序dftBootPG,且启动程序存放区boot2可用于储存更新版启动程序upBootPG。另一方面,在图3B所示的第二引导块域配置BootLayout2中,启动程序存放区boot2用于储存默认启动程序dftBootPG,且启动程序存放区boot1可用于储存更新版启动程序upBootPG。
其中,存放在图3A的启动程序存放区boot1与图3B的启动程序存放区boot2的默认启动程序dftBootPG,都是已经被完整存入储存区域并可被主机用于在系统开机时加载。根据本发明的构想,用于储存默认启动程序dftBootPG的储存区域,会被设定为写入保护。如图3A、3B所示,本文以格状底纹代表被设定为写入保护的启动程序存放区。
另一方面,用于储存更新版启动程序upBootPG的启动程序存放区,并不会被设定为写入保护。根据本发明的实施例,未被用于储存默认启动程序dftBootPG的启动程序存放区(图3A的启动程序存放区boot2与图3B的启动程序存放区boot1),可能为被擦除后的空白状态、正在写入状态,或是完成写入状态。对应于这三种状态,更新版启动程序upBootPG的储存状态可能为待储存、储存中或是已储存。
请参见图4,其是根据本发明的实施例的电子装置内部电路示意图。在此附图中,假设电子装置20包含主机21、功能电路23与存储器装置27,其中存储器装置27进一步包含存储器控制电路25与存储器阵列271。主机21电连接于功能电路23与存储器控制电路25,且存储器控制电路25电连接于存储器阵列271。此处延续图1的举例,同样假设存储器阵列271包含四个储存区域(储存区域A 271a、储存区域B 271b、储存区域C271c、储存区域D 271d)。
根据本发明的构想,存储器控制电路25包含触发电路254a、频率产生器254b、存取电路252、地址转换模块256、地址译码电路251b、还原缓存器(restore flag register)259、默认启动地址缓存器(default boot address register)257与更新启动地址缓存器(update address register)255。存取电路252从主机21接收存取指令Cmd与存取数据Data后,产生控制信号Ctrl至地址转换模块256,并根据主机存取地址Hadd、存取指令Cmd与存取数据Data而对存储器阵列271进行存取操作。
为使主机21与存储器控制电路25均能清楚掌握存储器阵列271采用的引导块域配置BootLayout,进而将更新版启动程序upBootPG加载适当的启动程序存放区(以及与启动程序存放区对应的储存区域),本发明的实施例在存储器控制电路25设置数个缓存器。其中,还原缓存器259用于储存启动还原参数rstrFLG;默认启动地址缓存器257用于储存默认启动地址参数bootPT;更新启动地址缓存器255用于储存更新启动地址参数updatePT。
在本发明的实施例中,假设启动还原参数rstrFLG、默认启动地址参数bootPT,以及更新启动地址参数updatePT的长度均为一位。其中,启动还原参数rstrFLG是一个因应触发电路254a所产生的逾时触发信号Str而被设定的旗标值,且经设定后的启动还原参数rstrFLG可在电子装置20重新启动后,由主机21清除。默认启动地址参数bootPT与更新启动地址参数updatePT可以利用数值代表启动程序存放区boot1、boot2的编号。据此,可以根据默认启动地址参数bootPT与更新启动地址参数updatePT可视为用于指向启动地址的指针参数,进一步得出与储存默认启动程序dftBootPG和/或更新版启动程序upBootPG的储存区域所对应的加载地址loadAdd。
更进一步来说,默认启动地址参数bootPT的值,代表要将默认启动程序dftBootPG存放在哪一个启动程序存放区boot1、boot2。例如,以默认启动地址参数bootPT=0代表默认启动程序dftBootPG被存放在启动程序存放区boot1、以默认启动地址参数bootPT=1代表默认启动程序dftBootPG被存放在启动程序存放区boot2。
如前所述,与受到写入保护的默认启动程序dftBootPG不同,更新版启动程序upBootPG必须在主机21开始执行更新流程后,才会被储存在启动存放区内。因此,更新启动地址参数updatePT仅在更新流程开始后,才会指向储存更新版启动程序upBootPG的启动程序存放区。
根据本发明构想的实施例,当主机21并未执行启动程序的更新流程时,更新启动地址参数updatePT会等于默认启动地址参数bootPT。换句话说,此时的更新启动地址参数updatePT同样对应于存放默认启动程序dftBootPG的启动程序存放区boot。
再者,若主机21开始执行更新流程时,更新启动地址参数updatePT将对应于存放更新版启动程序upBootPG的启动程序存放区boot。在主机21执行更新流程后,若电子装置20未被重新启动或重置,则更新启动地址参数updatePT将维持应于存放更新版启动程序upBootPG的启动程序存放区boot。
根据前述说明可以得知,更新启动地址参数updatePT与默认启动地址参数bootPT的值,可以反映出主机21是否执行更新流程,以及更新流程完成后,主机21是否重新启动等信息。因此,透过读取储存在更新启动地址缓存器255与默认启动地址缓存器257的数值,主机21和存储器控制电路25可掌握存储器阵列271的引导块域配置BootLayout。
存储器控制电路25利用地址转换模块256将主机21传送的主机存取地址Hadd转换为存储器存取地址Madd后,搭配存取电路252而对存储器阵列271进行存取操作。即存取电路252会对存储器存取地址Madd进行写入操作、读取操作或擦除操作。关于地址转换模块256如何将主机存取地址Hadd转换为存储器存取地址Madd的作法,请参见图8A、8B的说明。
此处假设由触发电路254a产生的逾时触发信号Str,会将还原缓存器259所储存的启动还原参数rstrFLG设为1(实际应用时,启动还原参数rstrFLG的设定值并不以此为限)。
因此,主机21可以通过读取还原缓存器259,得知触发电路254a是否曾经产生逾时触发信号Str。关于触发电路254a产生逾时触发信号Str的细节,以及主机21如何因应启动还原参数rstrFLG被设为1而执行的步骤,将于图6、7说明。
随着启动程序的更新流程的进行,更新启动地址参数updatePT与默认启动地址参数bootPT的值也可能不同,连带的,存储器装置27所采用的引导块域配置BootLayout也可能随着改变。
请参见图5A,其是存储器装置随着主机是否执行更新流程,以及用于储存默认启动程序dftBootPG的启动程序存放区的不同,而对应调整更新启动地址参数updatePT、默认启动地址参数bootPT示意图。此处延续图2的举例,假设启动程序存放区boot1对应于储存区域D、启动程序存放区boot2对应于储存区域A。为便于说明,本文随着启动程序存放区的不同配置情形、更新启动地址参数updatePT与默认启动地址参数bootPT实际指向位置的不同,将启动程序存放区的使用情况区分为状态A~状态F。存储器装置27会随着主机21执行更新流程与否而在这些状态间转换。
如前所述,本文将用于存放默认启动程序dftBootPG的启动程序存放区boot设为写入保护状态,并以格状底纹表示。另一方面,未被用于存放默认启动程序dftBootPG的启动程序存放区boot,可能会随着是否执行更新流程而处于待写入、写入中,或是完成写入等不同状态。在图5A中,以空白表示与启动程序存放区boot对应的储存区域尚未写入任何数据,故启动程序存放区boot可用于储存更新版启动程序upBootPG的启动程序存放区;以横线底纹代表与启动程序存放区boot对应的储存区域正在被用于储存更新版启动程序upBootPG的过程中;以及,以直线底纹代表与启动程序存放区对应的储存区域,已经被完整存入更新版启动程序upBootPG。
以下,先以表4搭配图5A,说明存储器装置27在各个状态下的引导块域配置BootLayout,以及更新启动地址参数updatePT与默认启动地址参数bootPT所指向的地址。接着,将再利用图5B说明各个状态间的演变关系。
表4
当存储器装置27处于状态A、B、C时,存储器装置27属于第一引导块域配置BootLayout1(图3A)。存储器装置27为状态A时,与启动程序存放区boot2对应的储存区域,可准备用于储存更新版启动程序upBootPG,此时默认启动地址参数bootPT=0、更新启动地址参数updatePT=0。存储器装置27为状态B时,主机21处于更新流程的期间,与启动程序存放区boot2对应的储存区域正在被写入更新版启动程序upBootPG,此时默认启动地址参数bootPT=0、更新启动地址参数updatePT=1。存储器装置27为状态C时,主机21已经完成将更新版启动程序upBootPG存入与启动程序存放区boot2对应的储存区域,此时默认启动地址参数bootPT=1、更新启动地址参数updatePT=1。
当存储器装置27处于状态D、E、F时,存储器装置27属于第二引导块域配置BootLayout 2(图3B)。存储器装置27为状态D时,与启动程序存放区boot1对应的储存区域,可准备用于储存更新版启动程序upBootPG,此时默认启动地址参数bootPT=1、更新启动地址参数updatePT=1。存储器装置27为状态E时,主机21处于更新流程的期间,与启动程序存放区boot1对应的储存区域正在被写入更新版启动程序upBootPG,此时默认启动地址参数bootPT=1、更新启动地址参数updatePT=0。存储器装置27为状态C时,主机21已经完全将更新版启动程序upBootPG存入与启动程序存放区boot1对应的储存区域,此时默认启动地址参数bootPT=0、更新启动地址参数updatePT=0。
接着,将说明存储器装置27如何随着更新流程的执行与否,改变引导块域配置BootLayout。请参见图5B,其是说明各个状态之间的演变关系的状态图。为便于说明,此处以较粗的实线标示的状态对应于第一引导块域配置BootLayout1;以较细的虚线标示的状态对应于第二引导块域配置BootLayout2。将各个状态在遇到不同的状况(条件)时的转换,以编号表示。其中,以C1开头的编号代表属于第一引导块域配置BootLayout1的状态(状态A、B、C)可能遇到的情形;以C2开头的编号代表属于第二引导块域配置BootLayout2的状态(状态D、E、F)可能遇到的情形。
当存储器装置27处于状态A时,默认启动地址参数bootPT与更新启动地址参数updatePT均指向第一启动地址startAdd1。此时,主机21可能遇到的情况可区分为两类,情况C11与情况C12。
情况C11为,主机21执行启动程序的更新流程,并透过存取电路252将更新版启动程序upBootPG写入与启动程序存放区boot2对应的储存区域。此时,存储器装置27进入状态B,且主机21会将更新启动地址参数updatePT修改为第二启动地址startAdd2。附带一提,存取电路252会在将更新版启动程序upBootPG写入前,先擦除即将被用来储存更新版启动程序upBootPG的储存区域。
情况C12指的是,主机21未执行启动程序的更新流程,则存储器装置27维持原本的引导块域配置BootLayout。此时,与启动程序存放区boot2对应的储存区域维持不变。此时,存储器装置27维持在状态A,且主机21不改变默认启动地址参数bootPT与更新启动地址参数updatePT的指向。
当存储器装置处于状态B时,默认启动地址参数bootPT指向第一启动地址startAdd1,而更新启动地址参数updatePT指向第二启动地址startAdd2。此时,主机21正在执行更新流程。但是,随着更新流程的完成与否,主机21可能遇到的情况还可再区分为两类,情况C13与情况C14。
情况C13为,主机21在执行启动程序的更新流程期间,尚未顺利完成即被中断(关机、重置(reset)等现象)。也就是说,更新版启动程序upBootPG尚未完全存入与启动程序存放区boot2对应的储存区域。此时,若电子装置20因为收到上电信号Son而重新执行开机时,主机21仍须维持使用与启动程序存放区boot1对应的储存区域所储存的默认启动程序dftBootPG。主机21会先根据默认启动地址参数bootPT而从第一启动地址startAdd1加载启动程序,并且将更新启动地址参数updatePT再拉回至第一启动地址startAdd1。因此,存储器装置27会从状态B回到状态A。
另一方面,情况C14指的是,主机21顺利将启动程序的更新流程执行完毕,且更新版启动程序upBootPG已经透过存取电路252顺利写入启动程序存放区boot2。此时,存储器装置27便从状态B进入状态C,主机21也会将原本对应于第一启动地址startAdd1的默认启动地址参数bootPT,修改为对应于第二启动地址startAdd2。
当存储器装置27处于状态C时,默认启动地址参数bootPT与更新启动地址参数updatePT均指向第二启动地址startAdd2。此时,可能遇到的情况可区分为三类,情况C15、情况C16与情况C17。
情况C15为,在启动程序的更新流程执行完毕后,电子装置20尚未重新启动。因此,存储器装置27仍维持在状态C,且默认启动地址参数bootPT与更新启动地址参数updatePT仍维持对应于第二启动地址startAdd2。
情况C16为,电子装置20重新启动(接收上电信号Son)后,主机21无法顺利地执行储存在与对应的储存区域启动程序存放区boot2对应的储存区域的更新版启动程序upBootPG(rstrFLG=1)。此时,主机21必须还原引导块域配置BootLayout,也就是回复到使用储存在与启动程序存放区boot1对应的储存区域的默认启动程序dftBootPG的情况。即,存储器装置27由状态C转换至状态A。在这种情况下,默认启动地址参数bootPT与更新启动地址参数updatePT一开始均维持原本与第二启动地址startAdd2对应的情况,之后再通过启动还原参数rstrFLG修改为与第一启动地址startAdd1对应。
情况C17为,主机21接收上电信号Son并重新启动(接收上电信号Son)时,变更存储器装置27的引导块域配置BootLayout(由原本采用第一引导块域配置BootLayout1改为采用第二引导块域配置BootLayout2),且主机21可顺利执行储存在与第二启动地址startAdd2对应储存区域的更新版启动程序upBootPG,此时,默认启动地址参数bootPT与更新启动地址参数updatePT仍维持指向第二启动地址startAdd2。之后,储存在与第二启动地址startAdd2对应储存区域的更新版启动程序upBootPG,将被视为是重新启动后的默认启动程序dftBootPG。也就是说,一旦更新版启动程序upBootPG经确认可以让主机21在开机时顺入加载并执行时,就可被定义为新的默认启动程序dftBootPG,且存储器装置27的引导块域配置BootLayout也会改变。此种状况为,存储器装置27由状态C转换为状态D。
关于状态D、E、F与其可能遇到的情况所导致的状态变化,基本上与状态A、B、C相似,差别在于引导块域配置BootLayout的不同。另,情况C11、C12、C13、C14、C15、C16、C17的叙述,在针对更新启动地址参数updatePT、默认启动地址参数bootPT的指向与启动程序存放区boot1、boot2的指向与配置可参考图5A的说明而对应调整,进而类推至情况C21、C22、C23、C24、C25、C26、C27。因此,此处不再详述与状态D、E、F之间的状态转换细节。
以下,从主机21的角度,说明主机21如何针对默认启动地址参数bootPT、更新启动地址参数updatePT与启动还原参数rstrFLG的值而对应执行的流程。此外,为便于说明,本文将执行更新流程的开机期间,定义为更新启动程序的开机期间Tboot_update。
请参见图6,其是说明随着更新启动地址参数updatePT与默认启动地址参数bootPT是否相等,以及启动还原参数rstrFLG的值不同,主机21的执行流程示意图。为便于存储器装置27的状态变化,在此流程图中,以中括号代表存储器装置27的状态转换过程,以小括号代表存储器装置27在各个开机期间内的状态转换过程。此外,以较粗的箭头符号代表表存储器装置27在同一个开机期间内的状态转换过程,以及以较细的箭头符号代表在跨越不同开机期间时,存储器装置27的状态转换过程。
首先,主机21判断更新启动地址参数updatePT与默认启动地址参数bootPT是否相等(步骤S40)。若更新启动地址参数updatePT与默认启动地址参数bootPT不相等,代表前一次执行开机流程时,主机21曾执行启动程序的更新流程(即,前一次开机属于更新启动程序的开机期间),但该更新流程并未执行完毕。主机21仍执行默认启动程序dftBootPG(步骤S41)。
步骤S41可能对应于两类演变过程。步骤S41可能对应的第一类演变过程为,存储器装置27在更新启动程序的开机期间Tboot_update由状态A转换至状态B,存储器装置27并于第一开机期间Ton1,由状态B再转换至状态A的过程。或是,步骤S41可能对应的第二类演变过程为,存储器装置27在更新启动程序的开机期间Tboot_update由状态D转换至状态E,存储器装置27并于第一开机期间Ton1,由状态再E转换至状态D的过程。
若步骤S40的判断结果为肯定,代表更新启动地址参数updatePT与默认启动地址参数bootPT相等,此时可能有两种情况。其一为,主机21在前一次开机期间并未进行启动程序的更新流程(即,前一次开机并非更新启动程序的开机期间Tboot_update),其二为,在前一次开机期间,主机21曾经进行启动程序的更新流程(即,前一次开机属于更新启动程序的开机期间),且启动程序的更新流程执行完毕。此时,主机21需进一步判断启动还原参数rstrFLG是否等于1(步骤S42)。
若启动还原参数rstrFLG等于1,代表在此次开机前,触发电路254a曾经产生逾时触发信号Str,并导致启动还原参数rstrFLG被设定。也就是说,在上上次的开机期间曾执行启动程序的更新流程(存入更新版启动程序),但在上次开机时,主机21无法顺利执行更新版启动程序upBootPG。因此,这次开机时,存储器装置27已自动切换回原先默认启动程序dftBootPG。是以,主机21仍可顺利加载可正常工作的启动程序(步骤S47)。此时,主机21需要复原使用原本的引导块域配置BootLayout。步骤S47可能对应于两类演变过程。
步骤S47可能对应的第一类演变过程为,在更新启动程序的开机期间Tboot_update,主机21以启动程序存放区boot1储存的默认启动程序dftBootPG开机,并执行启动程序的更新流程。因此,存储器装置27在更新启动程序的开机期间Tboot_update先由状态A转换至状态B,然后再由状态B转换至状态C。更新流程结束后,主机21与存储器装置27等待上电信号Son而重新启动。在经过接收上电信号Son而开始完成启动程序的更新流程后的第一开机期间Ton1,存储器装置27由状态C转换至状态D,且主机21尝试依据状态D所对应的第二引导块域配置BootLayout2加载更新版启动程序upBootPG,但因更新版启动程序upBootPG加载后无法顺利执行而使主机21搁置在状态D。据此,触发电路254a会在第一开机期间Ton1产生触发信号Str设定启动还原参数rstrFLG。待主机21与存储器装置27第二度收到上电信号Son而重新启动后,主机21与存储器装置27进入第二开机期间Ton2。此时,存储器装置27由状态D转换至状态A,而主机21改为加载默认启动程序dftBootPG。因为默认启动程序dftBootPG曾经在更新启动程序的开机期间Tboot_update顺利用于开机,故主机21必能顺利加载默认启动程序dftBootPG。
步骤S47可能对应的第二类演变过程为,在更新启动程序的开机期间Tboot_update,主机21以启动程序存放区boot2储存的默认启动程序dftBootPG开机,并执行启动程序的更新流程。因此,存储器装置27在更新启动程序的开机期间Tboot_update先由状态D转换至状态E,然后再由状态E转换至状态F。在更新流程结束后,主机21与存储器装置27等待上电信号Son而重新启动。因为接收上电信号Son而开始进入第一开机期间Ton1,存储器装置27先由状态F转换至状态A,且主机21尝试依据状态A所对应的第一引导块域配置BootLayout1进行开机,但因加载后无法顺利执行更新版启动程序upBootPG而使主机21搁置。待主机21与存储器装置27第二度收到上电信号Son而重新启动后,主机21与存储器装置27进入完成启动程序的更新流程后的第二开机期间Ton2。此时,存储器装置27由状态A转换至状态D,而主机21改为加载默认启动程序dftBootPG。因为默认启动程序dftBootPG曾经在更新启动程序的开机期间boot_update的一开始顺利用于开机,故主机21必能顺利加载默认启动程序dftBootPG。
若步骤S42的判断结果为否定,代表启动还原参数rstrFLG等于0。在这种情况下,主机21必须对存储器装置27中看门狗定时器2541送发禁能命令(步骤S44)。步骤S42的判断结果为否定,可能代表主机21在前一次开机期间并未进行启动程序的更新流程(即,并未加载更新版启动程序upBootPG)(步骤S45)。或者,主机21在前一次开机期间曾经进行启动程序的更新流程(即加载更新版启动程序upBootPG),且这次开机期间主机21可顺利加载更新版启动程序upBootPG并执行(步骤S43)。
若为步骤S45,因为主机21在前一次开机期间并未进行启动程序的更新流程,所以存储器装置27的状态并不会改变。步骤S45可能对应于两类演变过程,其一为,存储器装置27在先后两次的开机期间均维持在状态A;其二为,存储器装置27在先后两次的开机期间均维持在状态D。
若为步骤S43,因为主机21在前一次开机期间进行启动程序的更新流程,所以存储器装置27需要变更引导块域配置。BootLayout步骤S43可能对应于两类演变过程。
步骤S43可能对应的第一类演变过程为,在更新启动程序的开机期间Tboot_update,存储器装置27先由状态A转换至状态B,再由状态B转换至状态C。之后,在接收上电信号Son而进入第一开机期间Ton1时,存储器装置27进一步从状态C转换至状态D。换句话说,存储器装置27原本在更新启动程序的开机期间Tboot_update采用第一引导块域配置BootLayout1,在第一开机期间Ton1会转换为采用第二引导块域配置BootLayout2。并且,储存在启动程序存放区boot2的更新版启动程序upBootPG,将被重新定义为与第一开机期间Ton1所使用的默认启动程序dftBootPG。
步骤S43可能对应的第二类演变过程为,在更新启动程序的开机期间Tboot_update,存储器装置27先由状态D转换至状态E,再由状态E转换至状态F。之后,在接收上电信号Son而进入第一开机期间Ton1时,存储器装置27进一步从状态F转换至状态A。换句话说,存储器装置27原本在更新启动程序的开机期间Tboot_update采用第二引导块域配置BootLayout2,在第一开机期间Ton1会转换为采用第一引导块域配置BootLayout1。并且,先前在更新启动程序的开机期间Tboot_update被储存在启动程序存放区boot1的更新版启动程序upBootPG,将在第一开机期间Ton1被重新定义为与第一开机期间Ton1对应的默认启动程序dftBootPG。
承上,根据本发明构想的实施例,存取电路252对存储器存取地址Madd进行写入操作的情况可能是,主机21将更新版启动程序upBootPG存入存储器阵列271;存取电路252对存储器存取地址Madd进行读取操作的情况可能是,主机21从存储器阵列271加载更新版启动程序upBootPG的期间;存取电路252对存储器存取地址Madd进行擦除操作的情况可能是,主机21清除储存区域内的旧的(前一次开机所使用的)默认启动程序dftBootPG、清除未完成更新流程而写入一半的更新版启动程序upBootPG,或是已经确认先前所加载更新版启动程序upBootPG无法被顺利执行而需擦除等情形。关于存取电路252的设计,以及如何搭配地址转换模块256而控制存储器阵列271的做法,可由本案所属技术领域的技术人员自由代换与应用,故此处不予详述。
存储器装置27中,与默认启动地址参数bootPT、更新启动地址参数updatePT与启动还原参数rstrFLG相关的电路可分为两个部分,图7所示的触发电路254a与图8A所示的地址转换电路253。
请参见图7,其是触发电路的内部电路示意图。触发电路254a包含看门狗定时器2541、使能信号选择电路2543与定时器使能电路2542。
其中,看门狗定时器2541电连接于频率产生器254b与还原缓存器259,其是自频率产生器254b接收内部频率信号CLKint,以及产生逾时触发信号Str至还原缓存器259。定时器使能电路2542电连接于更新启动地址缓存器255与默认启动地址缓存器257,其是接收更新启动地址参数updatePT与默认启动地址参数bootPT。定时器使能电路2542根据更新启动地址参数updatePT与默认启动地址参数bootPT产生存储器端定时器使能信号Msen。
使能信号选择电路2543电连接于定时器使能电路2542与看门狗定时器2541之间,且使能信号选择电路2543还电连接于主机21。使能信号选择电路2543从定时器使能电路2542接收存储器端定时器使能信号Msen,或是从主机21接收主机端定时器使能信号Hsen后,产生用于使能/禁能看门狗定时器2541的定时器使能信号Sen。
在此实施例中,假设定时器使能电路2542为一XNOR逻辑闸。
当默认启动地址参数bootPT与更新启动地址参数updatePT的值不相等时,定时器使能电路2542输出的存储器端定时器使能信号Msen为0,且使能信号选择电路2543输出的定时器使能信号Sen为0(Sen=0)。此时看门狗定时器2541被禁能。
当默认启动地址参数bootPT与更新启动地址参数updatePT的值相等时,定时器使能电路2542输出的存储器端定时器使能信号Msen为1,且使能信号选择电路2543输出的定时器使能信号Sen为(Sen=1)。此时看门狗定时器2541被使能。一旦看门狗定时器2541被使能,看门狗定时器2541持续判断内部频率信号CLKint的数量是否超过预设频率门限CLKth。
根据本发明的实施例,在看门狗定时器2541被使能的情况下,主机21若能顺利执行系统的开机流程(加载默认启动程序dftBootPG或更新版启动程序upBootPG)时,便能在看门狗定时器2541产生逾时触发信号Str前,透过主机端定时器使能信号Hsen将看门狗定时器2541禁能。因此可避免看门狗定时器2541产生的逾时触发信号Str将启动还原参数rstrFLG设为1。
由于默认启动程序dftBootPG必须能让主机21顺利加载,后续的系统程序才能被顺利执行。因此,在看门狗定时器2541被使能的情况下,若主机21无法顺利执行更新版启动程序时,主机21便无法顺利地在内部频率信号CLKint超过默认频率门限CLKth前,将看门狗定时器2541禁能。据此,看门狗定时器2541将持续对内部频率信号CLKint计数,直到内部频率信号CLKint的数量超过默认频率门限CLKth而发出逾时触发信号Str为止。在这种情况下,使用者也会因为等待一段时间却发现电子装置20无法顺利开机而手动将电子装置20关机重开,或是重置(reset)电子装置20。
随着电子装置20的重新启动或重置,主机21与存储器装置27将再度收到上电信号Son。此时,主机21可通过读取启动还原参数rstrFLG得知前一次开机时,主机21曾经发生无法在开机流程顺利加载启动程序的情况。即,图6的步骤S47的情况。
承上所述,存储器装置27与主机21均会随着更新启动地址参数updatePT与默认启动地址参数bootPT的值是否相等而产生对应的动作。以下简要整理如表5。
表5
附带一提的是,尽管存储器装置27提供多个储存区域作为储存启动程序使用,但对主机21而言,在开机后加载启动程序时,并不需要随着启动程序所在的储存区域不同而改变传送至存储器装置27的主机存取地址Hadd。
请参见图8A,其是地址转换模块将主机存取地址Madd转换为存储器存取地址Madd示意图。在此附图中,地址转换电路253利用主机存取地址Hadd产生存储器存取地址最高有效位MMSadd后,地址译码电路251再依据存储器存取地址最高有效位MMSadd与主机存取地址最低有效位HLSadd组合成存储器存取地址Madd。
根据本发明的实施例,地址转换电路253进一步包含启动地址决定电路253a与地址映射逻辑253c,其中启动地址决定电路253a进一步包含配置选择电路253e与上电启动地址电路253d。在此实施例中,假设配置选择电路253e为一XOR逻辑闸,且假设上电启动地址电路253d为一D型正反器(D-Flip flop)。
配置选择电路253e电连接于默认启动地址缓存器257。配置选择电路253e从默认启动地址缓存器257读取默认启动地址参数bootPT,以及从还原缓存器259读取启动还原参数rstrFLG后,产生配置选择信号Ssel给上电启动地址电路253d。上电启动地址电路253d由上电信号Son触发,并对应将启动地址选择信号Ssel_startAdd输出至地址映射逻辑253c。
因此,当上电信号Son产生而使上电启动地址电路253d接收到由0转为1的上升缘时,上电启动地址电路253d输出的启动地址选择信号Ssel_startAdd的位准会等于配置选择信号Ssel的位准。
地址映射逻辑253c会同时接收主机存取地址最高有效位HMSadd与启动地址选择信号Ssel_startAdd,并依据启动地址选择信号Ssel_startAdd而决定存储器存取地址最高有效位MMSadd。
如前所述,存储器阵列271的储存区域可被任意选用作为启动程序存放区boot1、boot2,且随着引导块域配置BootLayout的不同,启动程序存放区boot1、boot2可能被交替用于储存默认启动程序dftBootPG。为简化主机存取存储器阵列271时的控制流程,存储器装置27利用地址映射逻辑253c,因应默认启动地址参数bootPT与配置选择信号rstrFLG的不同,协助主机21使用适当的启动地址startAdd加载默认启动程序dftBootPG。
表6为与加载地址选择电路相关的信号列表。表6可作为地址映射逻辑253c产生存储器存取地址最高有效位MMSadd的判断依据。
表6
当启动还原参数rstrFLG为0(如表6的第一列与第三列)时,启动程序存放区选择电路253e输出的配置选择信号Ssel即对应于与默认启动地址参数bootPT对应的启动程序存放区。以下说明当启动还原参数rstrFLG为0时,启动程序存放区boot1、boot2是如何被选定作为主机21加载默认启动程序dftBootPG的来源。
例如,默认启动地址参数bootPT=0时,配置选择信号Ssel=0,此时与启动地址选择信号Ssel_startAdd对应的是启动程序存放区boot1。又如,默认启动地址参数bootPT=1时,配置选择信号Ssel=1,此时与启动地址选择信号Ssel_startAdd对应的是启动程序存放区boot2。
当启动还原参数rstrFLG为1(如表6的第二列与第四列)时,启动程序存放区选择电路253e输出的配置选择信号Ssel并不会对应于与默认启动地址参数bootPT对应的启动程序存放区。以下说明当启动还原参数rstrFLG为1时,启动程序存放区boot1、boot2是如何被选定作为主机21加载默认启动程序dftBootPG的来源。
例如,默认启动地址参数bootPT=0时,配置选择信号Ssel=1,此时与启动地址选择信号Ssel_startAdd对应的是启动程序存放区boot2。又如,默认启动地址参数bootPT=1时,配置选择信号Ssel=0,此时与启动地址选择信号Ssel_startAdd对应的是启动程序存放区boot1。
表6所对应的地址对应关系,不会随着储存区域的选择不同而改变。另一方面,随着系统所定义的作为启动程序存放区boot1、boot2的储存区域不同,经由启动地址选择信号Ssel_startAdd所决定的启动程序存放区的启动地址,也会跟着所选择的储存区域不同而改变。
此处延续图2的举例,假设当启动程序存放区boot1对应于储存区域D,且启动程序存放区boot2对应于储存区域A的前提下,说明地址转换模块256如何搭配储存区域标识符IDsa,产生存取存储器阵列271的存储器存取地址Madd。这些地址的对应关系,取决于地址映射逻辑253c的操作,以下请一并参看图8A与图8B。
请参见图8B,其是举例说明地址转换电路如何将主机存取地址Hadd拆分为主机存取地址最高有效位HMSadd与主机存取地址最低有效位HLSadd后,再搭配存储器存取地址最高有效位MMSadd产生存储器存取地址Madd示意图。
如前所述,本发明可利用储存区域标识符IDsa判断存储器阵列271的储存区域。在图2的举例中,假设储存区域共有4个,且储存区域标识符IDsa为两个位。此处,依据储存区域标识符IDsa的长度,将主机存取地址Hadd区分为两个部分。第一个部分为主机存取地址最高有效位(HMSadd),第二个部分为主机存取地址最低有效位(HLSadd)。其中,主机存取地址最高有效位HMSadd的长度,等于储存区域标识符IDsa的长度。
例如,若主机存取地址Hadd的全长为24位,则第22~23位为主机存取地址最高有效位HMSadd,第0~21位为主机存取地址最低有效位HLSadd。其后,地址映射逻辑253c会根据启动地址选择信号Ssel_startAdd与主机存取地址最高有效位HMSadd产生存储器存取地址最高有效位MMSadd
例如,在前述图2中假设启动程序存放区boot1对应于储存区域D,且启动程序存放区boot2对应于储存区域A。又,储存区域D的标识符为″11″,而储存区域A的标识符为″00″。因此,启动地址选择信号Ssel_startAdd=0时,地址映射逻辑253c就以″11″作为存储器存取地址最高有效位MMSadd。启动地址选择信号Ssel_startAdd=1时,地址映射逻辑253c就以″00″作为存储器存取地址最高有效位MMSadd。
其后,地址译码电路251分别接收主机存取地址最低有效位HLSadd(b0~b21),以及由地址映射逻辑253c产生的存储器存取地址最高有效位MMSadd(b22~b23)。并以组合后的结果作为存储器存取地址Madd。
通过地址映射逻辑253c所管理的地址间的对应关系,主机21在传送主机存取地址Hadd时,并不需要考虑存储器装置27的配置。换句话说,本发明的存储器装置27在提供多重弹性的储存区域作为主机21执行更新流程时使用的同时,主机21控制存储器阵列271存取操作的负荷并不会增加。
根据前述的实施例可以看出,本发明存储器装置提供多个储存区域,并可弹性自其中选择启动程序存放区,作为储存系统的启动程序使用。本发明的存储器装置提供启动程序的更新功能,能在系统完成启动程序的更新流程时,让主机能顺利切换使用更新版启动程序。此外,针对更新版程序未能顺利执行的情况,也提供还原使用默认启动程序dftBootPG的功能。据此,主机执行启动程序的更新流程时的可能状况均已被纳入考虑,故能使嵌入式系统的开发者能够便利且轻易的使用存储器装置,不须额外费心考虑启动程序的更新与切换所需的设计。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种存储器装置,用以电连接于一主机,该存储器装置包含:
一存储器阵列,包含多个储存区域,其中所述储存区域的一者定义为一第一启动程序存放区,且所述储存区域中的另一者定义为一第二启动程序存放区;
一还原缓存器,用以电连接于该主机,其储存一启动还原参数;以及
一默认启动地址缓存器,用以电连接于该主机,其储存一默认启动地址参数,其中该主机于一第一开机期间,根据该默认启动地址参数而加载储存在该第一启动程序存放区的一默认启动程序以及储存在该第二启动程序存放区的一更新版启动程序二者中的一者;
一地址转换模块,用以电连接于该主机、该还原缓存器与该默认启动地址缓存器,其在接收由该主机所产生的一主机存取地址后,依据该主机存取地址、该启动还原参数与该默认启动地址参数而产生一存储器存取地址;
一存取电路,用以电连接于该主机、该存储器阵列与该地址转换模块,其自该主机接收一存取指令,其中该存取电路对该存储器存取地址执行该存取指令;以及
一触发电路,用以电连接于该主机、该还原缓存器与该默认启动地址缓存器,其中,在该第一开机期间,该触发电路选择性产生用于设定该启动还原参数的一逾时触发信号。
2.如权利要求1所述的存储器装置,其中该主机于一更新启动程序的开机期间自该第一启动程序存放区加载该默认启动程序,且该存储器装置还包含;
一更新启动地址缓存器,其储存一更新启动地址参数,其中,
在该更新启动程序的开机期间开始前,该更新启动地址参数与该默认启动地址参数对应于该第一启动程序存放区;
在该更新启动程序的开机期间,该主机于开始执行一更新流程时,设定该更新启动地址参数,使该更新启动地址参数对应于该第二启动程序存放区;
在该更新流程的期间,该主机控制该存储器装置将该更新版启动程序储存在该第二启动程序存放区;以及
在该更新流程结束前,该主机设定该默认启动地址参数,使该默认启动地址参数对应于该第二启动程序存放区,
其中该主机与该存储器装置因应在该更新启动程序的开机期间接收的一上电信号而重新启动,且该主机在重新启动后进入该第一开机期间。
3.如权利要求2所述的存储器装置,其中,在该第一开机期间,
若该更新启动地址参数与该默认启动地址参数均对应于该第一启动程序存放区时,该主机加载储存在该第一启动程序存放区的该默认启动程序,且该主机于该逾时触发信号产生前禁能该触发电路;
若该更新启动地址参数对应于该第二启动程序存放区,且该默认启动地址参数对应于该第一启动程序存放区时,该主机加载储存在该第一启动程序存放区的该默认启动程序;以及
若该更新启动地址参数与该默认启动地址参数均对应于该第二启动程序存放区时,该主机执行储存在该第二启动程序存放区的该更新版启动程序,且该触发电路判断一内部频率信号是否满足一默认条件,并于该预设条件成立时产生该逾时触发信号。
4.如权利要求3所述的存储器装置,其中该默认条件是指,自该存储器装置接收该上电信号后,该触发电路累计接收的该内部频率信号的数量大于一默认频率门限,其中,
当该主机可顺利加载储存在该第二启动程序存放区的该更新版启动程序时,该主机于该默认条件满足前禁能该触发电路,且该主机进一步将储存在该第二启动程序存放区的该更新版启动程序定义为与该第一开机期间对应的另一默认启动程序;以及,
当该主机无法顺利加载执行储存在该第二启动程序存放区的该更新版启动程序时,该触发电路判断该默认条件满足并产生该触发信号。
5.如权利要求3所述的存储器装置,其中该存储器装置更包含产生该内部频率信号的一频率产生器,且该触发电路包含:
一定时器,用以电连接于该还原缓存器与该频率产生器,其接收该内部频率信号,并于被使能时判断该预设条件是否成立;以及
一定时器使能电路,用以电连接于该默认启动地址缓存器、该更新启动地址缓存器与该定时器,其中,
当该默认启动地址参数不等于该更新启动地址参数时,该定时器使能电路禁能该定时器;以及
当默认启动地址参数等于该更新启动地址参数时,该定时器使能电路使能该定时器。
6.如权利要求2所述的存储器装置,其中当该逾时触发信号产生后,该主机与该存储器装置因应另一上电信号而重新启动并进入一第二开机期间。
7.如权利要求6所述的存储器装置,其中,于该第二开机期间,
该主机于该第二开机期间加载储存在该第一启动程序存放区的该默认启动程序,且该主机清除该启动还原参数,并将该更新启动地址参数与该默认启动地址参数设定为与该第一启动程序存放区相对应。
8.如权利要求7所述的存储器装置,其中,
当该启动还原参数被该逾时触发信号设定时,该启动地址选择信号对应于在该第一启动程序存放区与该第二启动程序存放区中,未与该默认启动地址参数对应者;以及,
当该启动还原参数未被该逾时触发信号设定时,该启动地址选择信号对应于在该第一启动程序存放区与该第二启动程序存放区中,与该默认启动地址参数对应者。
9.一种电子装置的启动程序加载方法,该电子装置包含一主机与一存储器装置,且该存储器装置包含一存储器阵列,其中该存储器阵列包含的多个储存区域的一者被定义为一第一启动程序存放区,且所述储存区域中的另一者被定义为一第二启动程序存放区,其中该启动程序加载方法包含以下步骤:
该存储器装置储存一启动还原参数以及一默认启动地址参数;
该主机于一第一开机期间,根据该默认启动地址参数而加载储存在该第一启动程序存放区的一默认启动程序以及储存在该第二启动程序存放区的一更新版启动程序二者中的一者;
该存储器装置依据该主机所产生的一主机存取地址、该启动还原参数与该默认启动地址参数而产生一存储器存取地址;
该存储器装置自该主机接收一存取指令,并对该存储器存取地址执行该存取指令;以及
在该第一开机期间,该存储器装置选择性产生用于设定该启动还原参数的一逾时触发信号。
10.如权利要求9所述的启动程序加载方法,其中更包含以下步骤:
该主机于一更新启动程序的开机期间加载储存在该第一启动程序存放区的该默认启动程序;
该存储器装置储存一更新启动地址参数,其中,在该更新启动程序的开机期间开始前,该更新启动地址参数与该默认启动地址参数对应于该第一启动程序存放区;
在该更新启动程序的开机期间,该主机于开始执行一更新流程时,设定该更新启动地址参数,使该更新启动地址参数对应于该第二启动程序存放区;
在该更新流程的期间,该主机控制该存储器装置将一更新版启动程序储存在该第二启动程序存放区;
在该更新流程结束前,该主机设定该默认启动地址参数,使该默认启动地址参数对应于该第二启动程序存放区,其中该主机与该存储器装置因应在该更新启动程序的开机期间所接收的一上电信号而重新启动,且该主机在重新启动后进入该第一开机期间;以及
当该逾时触发信号产生后,该主机与该存储器装置因应另一上电信号而重新启动并进入一第二开机期间。
CN201811264242.6A 2018-01-11 2018-10-26 存储器装置与电子装置的启动程序加载方法 Active CN110032403B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/868,896 US10445088B2 (en) 2018-01-11 2018-01-11 System boot code clone
US15/868,896 2018-01-11

Publications (2)

Publication Number Publication Date
CN110032403A true CN110032403A (zh) 2019-07-19
CN110032403B CN110032403B (zh) 2022-02-22

Family

ID=61192657

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201810232378.2A Active CN110032520B (zh) 2018-01-11 2018-03-20 系统开机代码存储器管理方法、存储器装置及其制造方法
CN201811264242.6A Active CN110032403B (zh) 2018-01-11 2018-10-26 存储器装置与电子装置的启动程序加载方法
CN201910024870.5A Active CN110032405B (zh) 2018-01-11 2019-01-10 系统开机码存储器管理方法、存储器装置与应用其的电子系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201810232378.2A Active CN110032520B (zh) 2018-01-11 2018-03-20 系统开机代码存储器管理方法、存储器装置及其制造方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201910024870.5A Active CN110032405B (zh) 2018-01-11 2019-01-10 系统开机码存储器管理方法、存储器装置与应用其的电子系统

Country Status (4)

Country Link
US (1) US10445088B2 (zh)
EP (1) EP3511826B1 (zh)
CN (3) CN110032520B (zh)
TW (3) TWI678613B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116700061A (zh) * 2023-04-12 2023-09-05 广东为辰信息科技有限公司 一种基于安全启动技术的快速启动方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI666556B (zh) * 2018-03-27 2019-07-21 緯創資通股份有限公司 電子裝置及其操作方法
KR102646630B1 (ko) * 2018-10-01 2024-03-11 삼성전자주식회사 시스템 런타임 환경에서 dram 셀 상의 라이트 보호 커맨드를 발행하는 방법
EP4004742A4 (en) * 2019-07-31 2023-04-19 Hewlett-Packard Development Company, L.P. UPDATES TO A FLASH MEMORY BASED ON DETERMINATION OF BITS
FR3105854A1 (fr) * 2019-12-31 2021-07-02 Stmicroelectronics (Rousset) Sas Système embarqué
CN111338668B (zh) * 2020-02-14 2022-05-10 支付宝(杭州)信息技术有限公司 用于实时计算中的代码升级的方法及装置
TWI768316B (zh) * 2020-03-30 2022-06-21 旺宏電子股份有限公司 記憶體裝置以及安全開機的記憶體管理方法
US11734018B2 (en) * 2020-07-17 2023-08-22 Western Digital Technologies, Inc. Parallel boot execution of memory devices
TWI805946B (zh) * 2020-09-29 2023-06-21 瑞昱半導體股份有限公司 內嵌式系統及控制非揮發性記憶體之方法
TWI755184B (zh) * 2020-12-03 2022-02-11 聯陽半導體股份有限公司 電子裝置及其開機方法
US11550494B2 (en) * 2021-02-03 2023-01-10 Macronix International Co., Ltd. Method to support high reliability multiple times program non-volatile configuration setting
FR3128543B1 (fr) * 2021-10-26 2023-12-22 Sagemcom Broadband Sas Procede de verrouillage d’une memoire non-volatile reinscriptible et dispositif electronique mettant en œuvre ledit procede
US11797230B2 (en) * 2021-12-14 2023-10-24 Hewlett-Packard Development Company, L.P. Bios variables storage

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030005277A1 (en) * 2001-06-29 2003-01-02 Harding Matthew C. Automatic replacement of corrupted BIOS image
US20050033954A1 (en) * 2003-08-05 2005-02-10 Cheng-Fan Wang Computer system having BIOS with multiple memory block
CN101017441A (zh) * 2007-02-27 2007-08-15 华为技术有限公司 一种电子设备、电子设备的启动方法及bios升级方法
US20080141016A1 (en) * 2006-12-07 2008-06-12 Lung-Chiao Chang Computer System and Related Method for Preventing Failure of Updating BIOS Programs
CN103136072A (zh) * 2011-12-05 2013-06-05 技嘉科技股份有限公司 自动修复系统及其自动修复方法
US20170123927A1 (en) * 2015-10-30 2017-05-04 Quanta Computer Inc. System and method for selective bios restoration
CN106776376A (zh) * 2015-11-24 2017-05-31 群联电子股份有限公司 缓冲存储器管理方法、存储器控制电路单元及存储装置

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282675B1 (en) 1997-08-06 2001-08-28 Macronix International Co., Ltd. Fault-tolerant architecture for in-circuit programming
US6275931B1 (en) 1998-06-22 2001-08-14 Elsag International N.V. Method and apparatus for upgrading firmware boot and main codes in a programmable memory
US6205548B1 (en) 1998-07-31 2001-03-20 Intel Corporation Methods and apparatus for updating a nonvolatile memory
US6473856B1 (en) * 1999-06-30 2002-10-29 International Business Machines Corporation Gold code backup for corrupt boot code recovery
US6748480B2 (en) 1999-12-27 2004-06-08 Gregory V. Chudnovsky Multi-bank, fault-tolerant, high-performance memory addressing system and method
US20010047473A1 (en) * 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US6757838B1 (en) * 2000-10-13 2004-06-29 Hewlett-Packard Development Company, L.P. Hardware independent implementation of computer system BIOS recovery
US7017004B1 (en) * 2002-03-29 2006-03-21 Microsoft Corporation System and method for updating contents of a flash ROM
US7089549B2 (en) * 2002-04-01 2006-08-08 International Business Machines Corp. Updating flash memory
JP2004013719A (ja) * 2002-06-10 2004-01-15 Fujitsu Ltd 多重化された不揮発性メモリの更新回路、及び多重化された不揮発性メモリの更新方法
US8667249B2 (en) * 2004-12-22 2014-03-04 Intel Corporation Systems and methods exchanging data between processors through concurrent shared memory
US9003000B2 (en) * 2006-07-25 2015-04-07 Nvidia Corporation System and method for operating system installation on a diskless computing platform
CN100504782C (zh) * 2006-12-18 2009-06-24 纬创资通股份有限公司 避免基本输出入系统程序更新失败的计算机系统
US20090006834A1 (en) * 2007-06-29 2009-01-01 Michael Rothman Proxied firmware updates
WO2009052525A1 (en) 2007-10-19 2009-04-23 Virident Systems, Inc. Managing memory systems containing components with asymmetric characteristics
CN101667128B (zh) * 2008-09-05 2013-11-06 华硕电脑股份有限公司 更新与修复基本输入输出系统的方法
TWI460657B (zh) * 2008-09-05 2014-11-11 Asustek Comp Inc 更新與修復基本輸入輸出系統的方法
US8266408B2 (en) 2009-03-17 2012-09-11 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US8397039B2 (en) * 2010-02-12 2013-03-12 Symantec Corporation Storage systems and methods
TWI441081B (zh) 2011-11-04 2014-06-11 Asrock Inc 更新韌體方法與開機方法及使用其之電子裝置
CN103186434A (zh) * 2011-12-31 2013-07-03 国民技术股份有限公司 恢复基本输入输出系统的方法及系统
US8880962B2 (en) * 2012-04-24 2014-11-04 International Business Machines Corporation Maintenance planning and failure prediction from data observed within a time window
KR101991905B1 (ko) * 2012-07-19 2019-06-24 삼성전자주식회사 불휘발성 메모리, 불휘발성 메모리의 읽기 방법 및 불휘발성 메모리를 포함하는 메모리 시스템
US9158683B2 (en) 2012-08-09 2015-10-13 Texas Instruments Incorporated Multiport memory emulation using single-port memory devices
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US20140089561A1 (en) 2012-09-26 2014-03-27 Kiran Pangal Techniques Associated with Protecting System Critical Data Written to Non-Volatile Memory
CN104102585B (zh) * 2013-04-03 2017-09-12 群联电子股份有限公司 映射信息记录方法、存储器控制器与存储器储存装置
TWI514281B (zh) 2014-08-28 2015-12-21 具spi介面的sata儲存裝置、應用該sata儲存裝置之開機方法及基本輸入輸出系統程式碼更新方法
US10019358B2 (en) 2015-03-20 2018-07-10 Vixs Systems Inc. Bank address remapping to load balance memory traffic among banks of memory
TWI556172B (zh) 2015-09-04 2016-11-01 神雲科技股份有限公司 電腦裝置及其開機方法
CN106814968B (zh) * 2015-11-27 2020-03-17 群联电子股份有限公司 存储器管理方法与系统及其存储器存储装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030005277A1 (en) * 2001-06-29 2003-01-02 Harding Matthew C. Automatic replacement of corrupted BIOS image
CN1514970A (zh) * 2001-06-29 2004-07-21 英特尔公司 被破坏的bios映像的自动替换
US20050033954A1 (en) * 2003-08-05 2005-02-10 Cheng-Fan Wang Computer system having BIOS with multiple memory block
US20080141016A1 (en) * 2006-12-07 2008-06-12 Lung-Chiao Chang Computer System and Related Method for Preventing Failure of Updating BIOS Programs
CN101017441A (zh) * 2007-02-27 2007-08-15 华为技术有限公司 一种电子设备、电子设备的启动方法及bios升级方法
CN103136072A (zh) * 2011-12-05 2013-06-05 技嘉科技股份有限公司 自动修复系统及其自动修复方法
US20170123927A1 (en) * 2015-10-30 2017-05-04 Quanta Computer Inc. System and method for selective bios restoration
CN106776376A (zh) * 2015-11-24 2017-05-31 群联电子股份有限公司 缓冲存储器管理方法、存储器控制电路单元及存储装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
丁元舟 等: "嵌入式Linux系统中的多重备份与恢复设计", 《电子技术应用》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116700061A (zh) * 2023-04-12 2023-09-05 广东为辰信息科技有限公司 一种基于安全启动技术的快速启动方法
CN116700061B (zh) * 2023-04-12 2024-05-03 广东为辰信息科技有限公司 一种基于安全启动技术的快速启动方法

Also Published As

Publication number Publication date
EP3511826A1 (en) 2019-07-17
CN110032405A (zh) 2019-07-19
EP3511826B1 (en) 2022-03-16
TW201937367A (zh) 2019-09-16
US20190212999A1 (en) 2019-07-11
CN110032520A (zh) 2019-07-19
TW201931111A (zh) 2019-08-01
CN110032405B (zh) 2022-03-15
TW201931115A (zh) 2019-08-01
US10445088B2 (en) 2019-10-15
TWI678613B (zh) 2019-12-01
TWI703498B (zh) 2020-09-01
TWI722361B (zh) 2021-03-21
CN110032520B (zh) 2021-06-29
CN110032403B (zh) 2022-02-22

Similar Documents

Publication Publication Date Title
CN110032403A (zh) 存储器装置与电子装置的启动程序加载方法
CN106055489B (zh) 存储器装置与其操作方法
CN103493011B (zh) 与库操作系统的应用兼容性
JP6814327B1 (ja) 単一メモリデバイスによりファームウェアを更新するためのメモリデバイス、システム、及び方法
US8612722B2 (en) Determining an end of valid log in a log of write records
CN104246727B (zh) 数据处理系统以及用于操作数据处理系统的方法
CN107851037A (zh) 在使用带锁定和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议
KR101555210B1 (ko) 휴대용 단말기에서 내장 대용량 메모리를 이용한 컨텐츠 다운로드 방법 및 장치
CN101872306B (zh) 一种实现软件更新和软件备份的嵌入式系统及其实现方法
CN100426220C (zh) 在通信系统中利用单片机实现软件下载的装置及其方法
CN101166229A (zh) 一种电视软件更新的方法
CN104007992A (zh) 程序更新、启动方法及其装置
CN108958647A (zh) 存储器装置的边读边写访问方法
CN105830021A (zh) 可更新集成电路无线电
US20070192533A1 (en) Apparatus and method for managing mapping information of nonvolatile memory
CN109213510A (zh) 一种用于嵌入式设备的应用程序升级方法及存储介质
CN108958813A (zh) 文件系统构建方法、装置及存储介质
CN103064654A (zh) 集成电路、电子系统及提供otp内存配置可更新的方法
CN107507644A (zh) 存储器装置及其操作方法
US20030084232A1 (en) Device and method capable of changing codes of micro-controller
CN106934258A (zh) 一种嵌入式系统
CN101853269B (zh) 分布数据更新的一致性处理方法
CN112860595B (zh) Pci设备或pcie设备、数据存取方法及相关组件
CN101685450A (zh) 一种在嵌入式操作系统中实现数据库功能的方法
CN111475179B (zh) 一种软件在线刷写方法、装置、电子控制单元及上位机

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