位置:51电子网 » 技术资料 » 接口电路

闪存中的底层操作系统更新策略

发布时间:2008/9/1 0:00:00 访问次数:433

  将底层操作系统放于闪存中有很多好处,例如设计人员可以随时在现场将软件新版本下载到闪存中对其进行更新,但在下载过程中有一些因素需要注意,否则会造成系统崩溃的灾难性后果。本文介绍一种便利的软件结构,它可以帮助工程师避免犯一些常见的错误。

  所有现场更新底层操作系统的方法都存在这样一个问题,即假如升级内容中存在缺陷,那么目标系统可能需要花很大力气才能更正,许多缺陷很简单且显而易见,但有些隐藏很深的缺陷只有在产品完成以后才能显现出来。

  用户发现和处理缺陷的能力各有千秋,而更糟糕的是,他们往往不注意诸如“如果在编程过程中电源系统中断系统将受到损坏”一类的警告,在系统更新过程中,他们很愿意重新启动其它功能系统,然后再把“出了问题”的产品拿去维修。

  所有设计完好的底层操作系统更新过程,都要能够尽可能从用户的错误和其它灾难性事件中恢复,做到这一点最好的方法就是采取可靠的底层操作系统更新策略,以完全避免这些问题。本文将讨论这样一种策略,它可以直接使用,但是也可以根据实际应用的特性对它进行修正。

  微编程器

  微编程器是对嵌入式系统在底层操作系统更新过程之前、过程中及之后运行情况的一种系统级描述,这种对工作情形的描述有助于避免与其它底层操作系统下载方法有关的问题,小心对待这些过程可以消除很多其它的担心。

  采用微编程器的底层操作系统更新方法第一步是使嵌入式系统进入下载发生时所期望的状态。过渡到这个状态可以采用好几种方式,例如,它可以通过用户按下设备控制界面上的“升级”键来完成,或者在系统探测到文件传输开始或结束时进行,或者用其它方法。不管哪种情况,目标系统都会意识到底层操作系统马上要更新了,于是让其它控制过程进入安全和稳定的停止状态。

  下一步,目标系统会收到一个叫做微编程器的应用程序,微编程器将控制系统,并开始接收新的应用底层操作系统,将它写到闪存中。一切完成后,目标系统就开始运行新的底层操作系统。

  采用微编程器下载底层操作系统的最大特点之一是它的灵活性,微编程器的执行过程即使在底层操作系统开始更新前的最后一刻也可以更改,以便对系统进行错误纠正和改进。

  微编程器不会消耗目标系统的资源,除非已开始进行编程。此外,由于微编程器很小,所以目标系统在更新过程开始时不需要庞大而复杂的通讯协议,只需简单的文本文件传输就足够了。

  采用微编程器的底层操作系统更新其安全性一度是最引人注目的优点。当目标系统的闪存芯片只用于存储底层操作系统时,系统将不会有对闪存芯片内容进行删除和编程的代码,除非实际过程中需要这样。因此即使在程序失控的严重情况下,系统也不会意外地删除它本身的底层操作系统。

  然而,微编程器也有缺点,它通常作为一个独立的程序执行,因此下载和传输到目标系统的代码需要分开管理。处理程序组件时小心谨慎有助于减少后续工作量。

  微编程器一般都载入ram中运行,这在某些微处理器结构中是不可能的,尤其是古老的8051系列,虽然其结构都是面向硬件的,但它的限制大过它所带来的好处。

  下载过程

  程序1中的代码显示的是下载目标系统和运行微编程器所需要的功能。在这个例子中,目标系统从某个i/o通道(也许是串口)接收文本形式的摩托罗拉s record文件,将它译码并写到ram中,然后在传输结束时目标系统跳转到下载代码启动微编程器。

  注意programmer_buf[]存储空间是自动调整的,也就是说它在目标系统的存储单元里没有固定的位置,这意味着新记录的地址是相对的而不是绝对的,新代码的位置是独立的。如果汇编程序不能产生位置独立的代码,那么programmer_buf[]就要在存储器中分配一个固定的位置,新记录的地址也要留在那个位置。

  假如目标系统没有资源可长期分配给programmer_buf[],则新来的微编程器内容可以放在其它数据的上面。此时,系统无论如何都要中断其它操作,将ram大部分空间留给微编程器。

  基本微编程器

  微型编程器的顶级代码如程序2所示,这个代码也可以从某些地方接收s record文件并将其译码。微编程器将新接收到的数据记录在闪存中,当文件传输完成后重新启动系统。虽然过于简单了些(用文本文件来传输大的程序也许不十分可靠),但这个代码表示了微编程器的所有重要特征。

  erase_flash()除了实际擦除闪存中的内容外,它还管理简单的数据结构,继续跟踪哪一段闪存中的数据需要擦除,哪一段已经被擦除。s re

  将底层操作系统放于闪存中有很多好处,例如设计人员可以随时在现场将软件新版本下载到闪存中对其进行更新,但在下载过程中有一些因素需要注意,否则会造成系统崩溃的灾难性后果。本文介绍一种便利的软件结构,它可以帮助工程师避免犯一些常见的错误。

  所有现场更新底层操作系统的方法都存在这样一个问题,即假如升级内容中存在缺陷,那么目标系统可能需要花很大力气才能更正,许多缺陷很简单且显而易见,但有些隐藏很深的缺陷只有在产品完成以后才能显现出来。

  用户发现和处理缺陷的能力各有千秋,而更糟糕的是,他们往往不注意诸如“如果在编程过程中电源系统中断系统将受到损坏”一类的警告,在系统更新过程中,他们很愿意重新启动其它功能系统,然后再把“出了问题”的产品拿去维修。

  所有设计完好的底层操作系统更新过程,都要能够尽可能从用户的错误和其它灾难性事件中恢复,做到这一点最好的方法就是采取可靠的底层操作系统更新策略,以完全避免这些问题。本文将讨论这样一种策略,它可以直接使用,但是也可以根据实际应用的特性对它进行修正。

  微编程器

  微编程器是对嵌入式系统在底层操作系统更新过程之前、过程中及之后运行情况的一种系统级描述,这种对工作情形的描述有助于避免与其它底层操作系统下载方法有关的问题,小心对待这些过程可以消除很多其它的担心。

  采用微编程器的底层操作系统更新方法第一步是使嵌入式系统进入下载发生时所期望的状态。过渡到这个状态可以采用好几种方式,例如,它可以通过用户按下设备控制界面上的“升级”键来完成,或者在系统探测到文件传输开始或结束时进行,或者用其它方法。不管哪种情况,目标系统都会意识到底层操作系统马上要更新了,于是让其它控制过程进入安全和稳定的停止状态。

  下一步,目标系统会收到一个叫做微编程器的应用程序,微编程器将控制系统,并开始接收新的应用底层操作系统,将它写到闪存中。一切完成后,目标系统就开始运行新的底层操作系统。

  采用微编程器下载底层操作系统的最大特点之一是它的灵活性,微编程器的执行过程即使在底层操作系统开始更新前的最后一刻也可以更改,以便对系统进行错误纠正和改进。

  微编程器不会消耗目标系统的资源,除非已开始进行编程。此外,由于微编程器很小,所以目标系统在更新过程开始时不需要庞大而复杂的通讯协议,只需简单的文本文件传输就足够了。

  采用微编程器的底层操作系统更新其安全性一度是最引人注目的优点。当目标系统的闪存芯片只用于存储底层操作系统时,系统将不会有对闪存芯片内容进行删除和编程的代码,除非实际过程中需要这样。因此即使在程序失控的严重情况下,系统也不会意外地删除它本身的底层操作系统。

  然而,微编程器也有缺点,它通常作为一个独立的程序执行,因此下载和传输到目标系统的代码需要分开管理。处理程序组件时小心谨慎有助于减少后续工作量。

  微编程器一般都载入ram中运行,这在某些微处理器结构中是不可能的,尤其是古老的8051系列,虽然其结构都是面向硬件的,但它的限制大过它所带来的好处。

  下载过程

  程序1中的代码显示的是下载目标系统和运行微编程器所需要的功能。在这个例子中,目标系统从某个i/o通道(也许是串口)接收文本形式的摩托罗拉s record文件,将它译码并写到ram中,然后在传输结束时目标系统跳转到下载代码启动微编程器。

  注意programmer_buf[]存储空间是自动调整的,也就是说它在目标系统的存储单元里没有固定的位置,这意味着新记录的地址是相对的而不是绝对的,新代码的位置是独立的。如果汇编程序不能产生位置独立的代码,那么programmer_buf[]就要在存储器中分配一个固定的位置,新记录的地址也要留在那个位置。

  假如目标系统没有资源可长期分配给programmer_buf[],则新来的微编程器内容可以放在其它数据的上面。此时,系统无论如何都要中断其它操作,将ram大部分空间留给微编程器。

  基本微编程器

  微型编程器的顶级代码如程序2所示,这个代码也可以从某些地方接收s record文件并将其译码。微编程器将新接收到的数据记录在闪存中,当文件传输完成后重新启动系统。虽然过于简单了些(用文本文件来传输大的程序也许不十分可靠),但这个代码表示了微编程器的所有重要特征。

  erase_flash()除了实际擦除闪存中的内容外,它还管理简单的数据结构,继续跟踪哪一段闪存中的数据需要擦除,哪一段已经被擦除。s re

相关IC型号

热门点击

 

推荐技术资料

耳机放大器
    为了在听音乐时不影响家人,我萌生了做一台耳机放大器的想... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!