快闪存储器的实时固件更新的制作方法
未命名
09-29
阅读:74
评论:0
1.本技术案大体来说涉及固件更新,且更特定来说涉及用于处置中断服务请求的软件的快闪存储器中的实时固件更新。
背景技术:
2.快闪存储器是可进行电擦除及写入的电子非易失性计算机存储媒体。这意味着快闪存储器可存储软件,使得在对包含快闪存储器(例如集成电路(ic))的装置进行电源接通复位(或对易失性存储器进行清除的其它事件)之后,所述软件立即可用于执行。在一些实例中,快闪存储器的个别存储体无法同时(例如在同一时钟循环期间)进行读取及写入两者。
技术实现要素:
3.在所描述的实例中,一种快闪存储器存储体包含应用程序部分及引导加载程序部分。所述应用程序部分存储用于执行中断服务例程(isr)的第一指令。所述引导加载程序部分存储用于以下各项的第二指令:致使所述快闪存储器存储体接收新的第一指令以供执行所述isr,及写入所述新的第一指令以替换旧的第一指令,以及执行所述新的第一指令。所述新的第一指令按次序执行以下步骤。第一,在维持中断响应的同时,将由所述新的第一指令规定且未由所述旧的第一指令规定的变量初始化并且不改变由所述旧的第一指令规定的变量。第二,在确定不存在正在进行的中断响应之后,停用所述中断响应且进行到第三步骤。第三,将堆叠初始化、更新中断向量且更新函数指针。第四,重新启用所述中断响应。
附图说明
4.图1展示实例处理系统的功能框图。
5.图2展示关于图1的处理系统描述的实例快闪存储器的功能框图。
6.图3展示用于关于图2描述的快闪存储体0的应用程序的lfu的实例实时固件更新(lfu)过程。
7.图4图解说明关于ic的实例过程流,所述ic是关于图1描述,包含关于图2描述的快闪存储体0。
8.图5展示图解说明图1的处理系统的实例过程及信号活动的各种图表。
具体实施方式
9.图1展示实例处理系统100的功能框图。集成电路(ic)102通信地连接到主机104及其它外部功能106。(其它外部功能106可包含例如其它ic、外部存储器或其它外围装置。)主机104可为例如包含微控制器或处理器的ic。主机104及其它外部功能106通信地连接到ic 102内的包含时钟109的中央处理单元(cpu)108。cpu 108连接到快闪存储器110、随机存取存储器(ram)112及浮点单元114。快闪存储器110包含一或多个快闪存储器存储体202(图
2)。
10.快闪存储体0 202a包含引导加载程序部分204及应用程序部分206。引导加载程序部分204包含用于控制实时固件更新(lfu)的软件。应用程序部分206存储命令接收中断服务例程(isr)214以接收包含中断相关命令及lfu相关命令在内的命令。应用程序部分206还包含用于处置对应于所接收中断命令的请求的命令接收isr 214及用于执行中断响应动作的一或多个执行isr 215,以及其它软件(关于图2进一步描述)。存储于应用程序部分206中的全部代码称为应用程序映像。
11.在正常操作期间,cpu 108响应于请求时间敏感响应的消息或其它事件而产生中断。此消息或其它事件可在ic 102的功能块(例如cpu 108或浮点单元114)中或由主机104或其它外部功能106产生。所述中断充当对cpu 108中断当前执行的代码并立即执行解决导致所述中断的事件的软件的请求。如果所述请求被接受,那么cpu 108暂停且保存其当前执行的软件上下文并开始执行适当isr以处理起因事件的过程。(软件上下文是软件任务使用的相对最小的数据集,如果被保存将允许中断任务并稍后基于所保存数据重新开始任务。)存储于快闪存储器110的不同部分(例如快闪存储体0 202a、1 202b或2 202c或者其它快闪存储体)中或ram 112(或其它存储器)中的不同isr可用于对不同类型的中断做出响应。不同类型的中断可花费不同时间量(不同时钟循环数目)来处理。中断用于服务于各种类型的周期性事件,例如硬件定时器、电压调节、电机控制、数字电源控制、数据传送、通信接口、用户输入装置及其它时间敏感事件。
12.固件是驻留在非易失性存储器(例如快闪存储器110)中的软件。固件可被更新以例如解决错误、添加新特征或提高性能。使用固件进行中断响应的系统可在固件更新期间停止、重新起动或连续操作。在其中中断响应中的间歇可能损害关键服务(例如在服务器电力供应器的电压调节或计量中)的性能的一些实例中,连续系统操作及连续中断响应是优选的。在不需要系统停止或重新起动的情况下执行的固件更新称为lfu。图2中描述的快闪存储体0 202a以及图3及4中描述的lfu使得能够使用单个快闪存储体202来执行lfu,而不需要系统停止或重新起动,并且对于lfu过程的大部分不需要lfu操作的仔细定时。
13.图2展示关于图1的处理系统100描述的实例快闪存储器110的功能框图。快闪存储器110包含多个快闪存储体202,其中的不同者区分为快闪存储体0 202a、快闪存储体1202b、快闪存储体2 202c、快闪存储体3 202d、
…
、直到称为快闪存储体n 202n的第n快闪存储体202。快闪存储体0 202a(如先前所描述,其是非易失性存储器)包含可分类成引导加载程序部分204及应用程序部分206的各种软件。快闪存储体0 202a横跨快闪存储器110地址范围,例如0x80000到0x8ffff。
14.引导加载程序部分204包含串行通信接口(sci)内核208及快闪存储器应用程序编程接口(快闪api)210。sci内核208在lfu期间从应用程序部分206接收过程控制,致使将经由cpu 108从主机104接收的新应用程序映像复制到应用程序部分206中,且将过程控制返回到应用程序部分206以促进完成lfu并返回到正常中断响应。
15.应用程序部分206包含isr 212、应用程序lfu入口点216、正常应用程序入口点218(其处在正常操作期间开始执行应用程序组件)及后台任务220。isr包含命令接收isr 214及一或多个执行isr 215(即时控制isr,例如电压控制isr)。后台任务220包含lfu控件222。命令接收isr 214接收且记录(例如,通过设定对应旗标)来自cpu 108的命令,包含中断命
令,以及快闪存储体0 202a经由cpu 108从主机104接收的lfu命令。lfu控件222是在从应用程序部分206执行lfu过程时控制lfu过程流的后台任务功能。此包含确定命令接收isr 214是否已设定指示cpu 108已接收到要开始应用程序部分206的lfu的命令的旗标,且在确定已接收到lfu命令之后将控制传递到引导加载程序部分204。
16.应用程序lfu入口点216在应用程序部分206中的应用程序映像的初始化期间执行。因此,应用程序lfu入口点216是在ic 102的电源复位之后执行,且是在lfu过程将新应用程序映像复制到应用程序部分206中之后的lfu期间执行。应用程序lfu入口点216将以下内容复制到ram 112中:应用程序部分206中需要可用于响应于中断事件而执行的isr,以及快闪api 210(除非快闪api 210在只读存储器(rom)中),sci内核208的与快闪api 210相关联的部分,以及引导加载程序部分204及应用程序部分206的在lfu期间isr及lfu过程恰当工作所必需的其它内容(例如由存储在应用程序部分206中的isr使用的常数)。这意味着在正常执行期间及lfu期间,isr可用于从ram 112执行,从而避免破坏中断响应。sci内核部分208及快闪api 210被复制到ram 112中,因为快闪存储体0202a不能同时进行读取及写入两者(快闪存储体0 202a不能在向应用程序部分206中写入的同时从引导加载程序部分204被读取)。注意,当在lfu过程将新应用程序映像复制到应用程序部分206中之后执行应用程序lfu入口点216时,对应于新应用程序映像(而不是旧的预lfu应用程序映像)的isr及其它分量被复制到ram 112中。
17.应用程序lfu入口点216还在中断响应保持启用(中断响应被维持)的同时执行变量初始化,接着在无正在解决的中断事件的情况下致使停用中断响应,后续接着执行堆叠初始化、中断向量更新及函数指针更新,且接着致使重新启用中断处置。由isr使用的变量在ram 112中初始化。变量初始化会致使由新应用程序映像规定的新变量在ram112内初始化,而不会使由旧应用程序映像使用的变量(包含由旧及新的应用程序映像两者使用的变量)复位或不会以其它方式影响所述变量。在不影响由旧应用程序映像使用的变量的情况下执行变量初始化会促进中断响应在lfu期间继续而不被破坏。
18.被初始化的堆叠是ram 112中用于在调用函数之后或中断发生之后保存及恢复上下文的软件堆叠。堆叠初始化将堆叠的指针设定为指向堆叠的顶部。中断向量是isr(例如命令接收isr 214及执行isr 215)的存储器地址。在中断发生之后,cpu 108在向量表中查找对应于所述特定中断的位置以找出对应于所述特定中断的特定isr的存储器地址,且在所述isr的存储器地址处开始执行,因此执行特定isr。中断向量及函数指针在lfu期间被更新,因为快闪存储体0 202a中的isr或函数地址可随着对应的应用程序映像改变而改变。
19.应用程序lfu入口点216未必位于快闪存储体0 202a的存储器范围的开始处。举例来说,应用程序lfu入口点216可在从地址0x80000开始的快闪存储体0 202a中位于快闪存储器110内的地址0x8eff0处。
20.在一些实例中,在lfu完成之后,ram 112中的与旧应用程序映像对应的isr及其它分量仍保持于ram 112中(在一些实例中,在新应用程序执行之后,此存储继续)。与稍后的lfu过程对应的应用程序lfu入口点216的稍后执行可以用与稍后的lfu过程的新应用程序映像对应的以类似方式选择的分量来覆写这些遗留的isr相关分量及lfu相关分量(包含变量)(先前的lfu过程的新应用程序映像相对于稍后的lfu过程变成旧应用程序映像)。
21.图3展示用于关于图2描述的快闪存储体0 202a的应用程序部分206的lfu的实例
lfu过程300。图4图解说明关于ic 102的lfu过程300的实例过程流400,所述ic是关于图1描述,包含关于图2描述的快闪存储体0 202。在图4中,指令及数据传送是通过cpu108中介,但为了清晰而展示为直接通信。
22.在lfu过程300开始时,存储于快闪存储体0 202a中的应用程序部分206是旧应用程序映像,且在装置复位(ic 102的全功率复位)期间或先前lfu期间,由于执行应用程序lfu入口点216,根据旧应用程序映像维持中断响应所需的各种isr及相关联执行产品(例如变量)存在于ram 112中。这些图解说明为旧的应用程序isr及相关分量402。在步骤302中,主机104将要开始应用程序部分206的lfu的命令发送到cpu 108;因此,主机104规定将使用lfu来更新快闪存储体0 202a(与快闪存储器200的不同快闪存储体202相反)内的应用程序部分206。在步骤304中,命令接收isr 214接收lfu命令且设定指示将执行lfu的lfu旗标(例如,在ram 112中)。在步骤306中,lfu控件222响应于lfu旗标而起始lfu且将lfu过程控制传送到引导加载程序部分204内的sci内核208。sci内核208及快闪api 210的参与lfu过程的部分在装置重新启动期间及lfu期间被复制到ram 112中,并且在lfu期间从ram 112执行。对sci内核208及快闪api 210的引用是对ram 112中这些副本的引用。这由在下文进一步描述的步骤313处置。
23.在步骤308中,sci内核208从主机104接收新应用程序映像,且将所述新应用程序映像写入到ram 112。举例来说,新应用程序映像是以组块形式接收的,并且在被写入到快闪存储体0 202a之前存储在ram 112中。在步骤310中,sci内核208致使快闪api 210擦除应用程序部分206内的旧应用程序映像且从ram 112读取新应用程序映像并将其写入到快闪存储体0 202a中的应用程序部分206。
24.在紧接在步骤310之后的步骤312中,将执行控制从引导加载程序部分204传递到应用程序lfu入口点216(新应用程序映像的部分)。举例来说,可使用引导加载程序204中的分支指令来将执行引向快闪存储体0 202a的应用程序部分206中的固定存储器地址,其中应用程序lfu入口点216的开始位于所述固定存储器地址处。紧接在将新应用程序映像复制到应用程序部分206之后执行应用程序lfu入口点216会使得能够在不发生ic 102装置复位的情况下执行lfu。在一些实例中,从引导加载程序部分到应用程序部分的普通控制传送包含装置复位(经由引起装置复位的指令进行装置复位)。此处,紧接在之后意味着将控制从引导加载程序部分传送到应用程序部分并在应用程序lfu入口点216处进入应用程序部分不包含装置复位(经由引起装置复位的指令进行装置复位),并且lfu在不发生装置复位的情况下完成。
25.在步骤313中,将sci内核208及快闪api 210的参与lfu过程的部分以及新应用程序映像的可在lfu过程期间执行的isr及其它部分复制到ram 112中。新应用程序映像分量被复制到ram 112中以便利于下一lfu过程,其中新应用程序映像将被另一新(更新)的应用程序映像替换。在ram 112中复制旧应用程序映像分量对应于执行步骤313(作为在先前lfu期间执行应用程序lfu入口点216的一部分),或者对应于执行正常应用程序入口点218(例如,在装置重新启动期间)。
26.在步骤314中,应用程序lfu入口点216致使在中断保持启用的同时在ram 112中将由新应用程序映像规定的新变量初始化。(由isr使用的变量状态404位于ram 112中。)作为在不发生装置复位的情况下启用单个快闪存储体202lfu的条件,在不使由新及旧的应用程
序映像两者使用的变量或由旧应用程序映像使用的其它变量复位或不以其它方式改变所述变量的情况下,完成新变量初始化。换句话说,将新规定的变量初始化且不理会先前规定的变量,以使lfu能够在不发生装置复位的情况下继续并完成;不理会由旧及新的应用程序映像两者使用的变量不会影响新应用程序映像在lfu结束后对中断做出响应的能力。并且,这种对变量的区别处理使得ram 112中对应于旧应用程序映像的isr能够在lfu期间保持可用于执行。数据常数作为应用程序映像的一部分存储在快闪存储体0 202a中。就isr执行需要数据常数来说,当应用程序lfu入口点216将isr以及引导加载程序部分204及应用程序部分206中isr功能可靠性及lfu所需的其它分量复制到ram 112(如关于图2所描述)时,数据常数被复制到ram 112。步骤302到314可在中断保持启用的同时执行,而不管包含中断响应负载的上升沿及下降沿在内的中断响应活动如何。在一些实例中,cpu 108可一次仅执行一个任务,且因此,当cpu 108不参与对中断做出响应时(例如在t1与t2之间,或者在t4与t5之间,如下文关于图5所展示及描述),分别开始步骤313及314,但所述步骤可在中断响应期间暂停并且在中断响应结束后返回。
27.在步骤316中,应用程序lfu入口点216等待直到其识别出isr结束,并且一旦识别出isr终点便遍及ic 102停用中断响应且移动到步骤318。举例来说,从ram 112运行的isr在isr开始执行时将isr_end_flag变量设定为第一逻辑值,并且在isr结束执行时将isr_end_flag变量设定为第二逻辑值。应用程序lfu入口点216等待直到isr_end_flag变量具有第二逻辑值以停用中断响应且移动到步骤318。
28.在步骤318中,在应用程序lfu入口点216的控制下,以任一相对次序将堆叠初始化,更新中断向量且更新函数指针。这意味着堆叠初始化、中断向量更新及函数指针更新中的任一者可在步骤318内第一、第二或第三地执行;或者这些中的一或多者可部分或完全并行执行,如果这是可用的选项的话。堆叠、中断向量及函数指针406位于ram 112中。步骤318与步骤314相比相对较短(并且,在一些实例中,与中断之间的周期相比相对较短)。因此,当ic 102不处置中断时,由步骤316执行的isr_end_flag检查为将执行的步骤318定时序。在步骤318期间,中断响应被停用,因为如果在执行中断响应过程的同时更新中断向量,那么执行中断响应(其导致中断向量读取以确定对应isr的存储器位置)可导致意外行为;类似的问题可因堆叠检查及函数调用(其调用作为由函数指针规定的存储器位置的函数)而发生。因此,由于由步骤316协调的时序,步骤318不会破坏正在进行的中断响应,并且步骤318的简短意味着中断响应中的任何延迟都将很短。在步骤318完成之后,在步骤320中,重新启用中断响应。与新应用程序映像中的isr对应的后续中断将导致新应用程序映像代码的执行。
29.因此,使用单个快闪存储体202且在不需要执行装置复位的情况下启用lfu。这实现成本及装置面积效率,从而减少(最多减少一半)存储可使用lfu更新的应用程序固件所需的快闪存储体数目。此外,使用单个快闪存储体202进行lfu实现了较简单的快闪更新软件,因为可以编写更新代码,而不需要规定不同的快闪存储体来存储旧应用程序映像及接收新应用程序映像。
30.如果在lfu期间发生异常(软件或硬件错误),那么可能需要或可能不需要装置复位。如果执行装置复位,那么一旦完成重新起动功能并且执行返回到执行lfu,便在引导加载程序部分204中开始执行映像检查功能。映像检查功能确定应用程序部分206中是否存在
有效的应用程序映像。此确定可通过例如读取快闪存储体0 202a中的规定位置以检查状态指示符及应用程序版本号来进行。如果映像检查功能确定应用程序部分206中存在有效的应用程序映像,那么其向正常应用程序入口点218分支。如果映像检查功能确定应用程序部分206中不存在有效的应用程序映像,那么映像检查功能等待主机104发送要将有效的应用程序映像编程到快闪存储体0 202a的应用程序部分206中的命令。
31.如果不执行装置复位,那么执行取决于新应用程序映像是否被恰当写入到应用程序部分206;相应地,擦除及写入动作两者被成功完成(通过)。如果新应用程序映像被恰当写入到应用程序部分206,那么引导加载程序部分204更新状态指示符及应用程序版本号,紧接着将执行控制传送到应用程序lfu入口点216。如果新应用程序映像未被恰当写入到应用程序部分206,那么引导加载程序部分204执行映像检查功能且过程如上文关于映像检查功能所描述地进行。
32.图5展示图解说明图1的处理系统100的实例过程及信号活动的各种图表500。经调节信号502线展示由快闪存储体0 202a的执行isr 215调节的信号。经调节信号502展示在整个lfu过程中不存在不连续或不希望的变化(因此,不存在中断响应不能维持信号输出及调节的周期)。cpu isr负载504线展示cpu 108中对应于由快闪存储体0 202a的执行isr215处置的中断的负载。当特定中断的中断处置开始时,cpu isr负载504展示上升沿。当特定中断的中断处置结束时,cpu isr负载504展示下降沿。因此,中断是在t1与t2之间、t4与t5之间、t6与t7之间以及t9与t10之间处置。lfu作用506状态线指示状态信号的状态;所述信号在执行步骤313、314、316、318及320时具有高电平状态(垂直轴上的较高电平)。即,在t3(其中lfu作用状态506展示上升沿,指示步骤313开始)之前,新应用程序映像由sci内核308接收,位于快闪存储体0 202a中的旧应用程序映像被擦除,且快闪存储体0 202a的应用程序部分206被重新编程为含有新应用程序映像。在t3(在此实例中,在于t2处结束的中断响应之间且在于t4处开始的中断响应之前)处开始,将可以或被要求在lfu期间执行的引导加载程序部分204及应用程序部分206(其含有新应用程序映像)的分量复制到ram 112中(步骤313)且执行变量初始化(步骤314),从而将存在于新应用程序映像中的新变量初始化而使存在于旧及新的应用程序映像两者中的旧变量不受影响。步骤313及314的执行可在t3与t4之间以及t5与t6之间主动执行。在t7与t8之间,执行步骤316、318及320。在t8之后,根据应用程序部分206执行的后台任务可重新开始且是根据新应用程序映像而重新开始。
33.修改在所描述实施例中为可能的,且其它实施例在权利要求书的范围内为可能的。
34.在一些实例中,ram 112比快闪存储器202更快。
35.在一些实例中,仅将旧应用程序映像的在步骤310、312及314期间必须运行的部分复制到ram 112。
36.在一些实例中,仅将应用程序映像的可在中断事件期间触发的那些部分复制到ram112;在一些实例中,将应用程序映像的较大部分或全部复制到ram 112。
37.在一些实例中,在应用程序映像初始化开始之后(例如在已接收到lfu命令之后),将旧应用程序映像复制到ram 112。在一些实例中,在装置复位之后不执行应用程序lfu入口点216;举例来说,可替代地执行正常应用程序入口点218。在一些实例中,在lfu开始之前或开始时执行应用程序lfu入口点216以将旧应用程序映像复制到ram 112(作为在将过程
控制从引导加载程序部分204返回到应用程序部分206之后执行应用程序lfu入口点216的补充)。
38.在一些实例中,使用阴影向量表。在一些实例中,更新中断向量意味着在执行应用程序lfu入口点之前更新阴影向量表,并且应用程序lfu入口点216将阴影向量表指定为执行使用向量表,并将旧执行使用向量表指定为阴影向量表(交换阴影向量表与执行使用向量表的指定)。
39.在一些实例中,sci内核208的与快闪api 210相关联的部分是sci内核208的在快闪api 210执行时在循环中等待的部分。
40.在一些实例中,关于与经由lfu被新应用程序映像取代的旧应用程序映像对应的后lfu isr相关分量及后lfu相关分量,实施除上文所描述的那些外的其它存储器使用方法。
41.在一些实例中,在lfu完成之后,由与旧应用程序映像对应且不与新应用程序映像对应的变量使用的ram 112存储器位置将保持不变且不处于作用使用。在一些实例中,可使用其它存储器使用方法(例如动态存储器分配)来提高ram 112利用效率。
42.在一些实例中,在lfu期间不运行的一或多个isr是从快闪存储体0 202a(而不是从ram 112)运行。
43.在一些实例中,使用除上文所描述的那些外的确定中断响应何时不作用的其它方法来找出期间开始变量初始化的空闲窗口,以及找出期间开始堆叠、中断向量及函数指针更新的空闲窗口。
44.在一些实例中,多个cpu 108或多个快闪存储体202可参与lfu。
45.在一些实例中,步骤316的执行直到isr响应完成才开始。在一些实例中,步骤316的执行在未执行isr响应时开始。
46.在一些实例中,使用除sci外的通信协议,例如控制器区域网络(can)或以太网。
技术特征:
1.一种快闪存储器的快闪存储器存储体,所述快闪存储器存储体包括:应用程序部分,其存储第一组第一指令,所述第一组第一指令配置成由处理器执行以执行第一中断服务例程;及引导加载程序部分,其存储第二指令,所述第二指令配置成由所述处理器执行以:致使所述快闪存储器存储体接收第二组第一指令,所述第二组第一指令配置成由所述处理器执行以执行与所述第一中断服务例程相同或不同的第二中断服务例程;致使所述快闪存储器存储体写入所述第二组第一指令以替换所述第一组第一指令;及执行所述第二组第一指令以按次序执行以下步骤:在第一步骤中,在维持中断响应的同时,将由所述第二组第一指令规定且未由所述第一组第一指令规定的变量初始化并且不改变由所述第一组第一指令规定的变量;在第二步骤中,在确定不存在正在进行的中断响应之后,停用所述中断响应且进行到第三步骤;在所述第三步骤中,将用于保存及恢复上下文的堆叠初始化、更新中断向量且更新函数指针;及在第四步骤中,重新启用所述中断响应。2.根据权利要求1所述的快闪存储器存储体,其中所述第二组指令配置成由所述处理器执行以,紧接在所述第二组指令致使所述快闪存储器写入所述第二组第一指令以替换所述应用程序部分中的所述第一组第一指令之后,致使所述第二组第一指令由所述处理器执行以按次序执行所述第一、第二、第三及第四步骤。3.根据权利要求1所述的快闪存储器存储体,其中所述第二指令及所述第二组第一指令是在未执行装置复位的情况下执行。4.根据权利要求1所述的快闪存储器存储体,其中所述第二组第一指令配置成由所述处理器执行以,在另一步骤中,致使所述快闪存储器存储体将所述第二组第一指令的一部分复制到随机存取存储器ram。5.根据权利要求4所述的快闪存储器存储体,其中所述第二组第一指令配置成由所述处理器执行以在所述处理器的装置复位期间或者在所述接收第二组第一指令动作之后且在所述第四步骤之前执行所述另一步骤。6.根据权利要求4所述的快闪存储器存储体,其中旧应用程序映像的部分至少包含所述第一组第一指令的维持中断响应所需的部分。7.根据权利要求4所述的快闪存储器存储体,其中所述旧应用程序映像的所述部分至少包含所述第二指令的执行所述接收第二组第一指令动作、所述写入所述第二组第一指令动作及所述执行所述第二组第一指令动作所需的部分。8.根据权利要求4所述的快闪存储器存储体,其中所述第二指令配置成致使在所述执行所述第二组第一指令动作之前将所述第二组第一指令写入到所述ram。9.根据权利要求1所述的快闪存储器存储体,其中所述第一组第一指令配置成由所述处理器执行以确定是否已接收到lfu命令,且响应于确定已接收到所述lfu命令而致使过程控制传送到所述第二指令。10.一种集成电路ic,其包括快闪存储器,其包含快闪存储器存储体;及
处理器,其配置成从主机接收要致使所述处理器执行所述快闪存储器存储体上的指令以执行所述快闪存储器存储体的实时固件更新lfu的命令;所述快闪存储器存储体包含:应用程序部分,其存储第一组第一指令,所述第一组第一指令配置成由所述处理器执行以执行中断服务例程;及引导加载程序部分,其存储第二指令,所述第二指令配置成由所述处理器执行以:响应于所述lfu命令而致使所述快闪存储器存储体经由所述处理器从所述主机接收第二组第一指令,所述第二组第一指令配置成由所述处理器执行以执行所述中断服务例程;致使所述快闪存储器存储体写入所述第二组第一指令以替换所述第一组第一指令;及执行所述第二组第一指令以按次序执行以下步骤:在第一步骤中,在维持中断响应的同时,将由所述第二组第一指令规定且未由所述第一组第一指令规定的变量初始化并且不改变由所述第一组第一指令规定的变量;在第二步骤中,在确定不存在正在进行的中断响应之后,停用所述中断响应且进行到第三步骤;在所述第三步骤中,将用于保存及恢复上下文的堆叠初始化、更新中断向量且更新函数指针;及在第四步骤中,重新启用所述中断响应。11.根据权利要求10所述的ic,其中所述第二组指令配置成由所述处理器执行以,紧接在所述第二组指令致使所述快闪存储器写入所述第二组第一指令以替换所述应用程序部分中的所述第一组第一指令之后,致使所述第二组第一指令由所述处理器执行以按次序执行所述第一、第二、第三及第四步骤。12.根据权利要求10所述的ic,其中所述第二指令及所述第二组第一指令是在未执行所述ic的装置复位的情况下执行。13.根据权利要求10所述的ic,其进一步包含随机存取存储器ram;其中所述第二组第一指令配置成由所述处理器执行以在另一步骤中致使所述快闪存储器存储体将所述第二组第一指令的一部分复制到所述ram。14.根据权利要求13所述的ic,其中所述第二组第一指令配置成由所述处理器执行以在所述处理器的装置复位期间或者在所述接收第二组第一指令动作之后且在所述第四步骤之前执行所述另一步骤。15.根据权利要求13所述的ic,其中旧应用程序映像的部分至少包含所述第一组第一指令的维持中断响应所需的部分。16.根据权利要求13所述的ic,其中所述旧应用程序映像的所述部分至少包含所述第二指令的执行所述接收第二组第一指令动作、所述写入所述第二组第一指令动作及所述执行所述第二组第一指令动作所需的部分。17.根据权利要求13所述的ic,其中所述第二指令配置成致使在所述执行所述第二组第一指令动作之前将所述第二组第一指令写入到所述ram。18.根据权利要求10所述的ic,其中所述第一组第一指令配置成由所述处理器执行以确定是否已接收到所述lfu命令,且响应于确定已接收到所述lfu命令而致使过程控制传送
到所述第二指令。19.一种操作集成电路ic的方法,其包括:在不发生所述ic的电源复位的情况下使用所述ic中的单个快闪存储器存储体在所述ic接收到要执行实时固件更新lfu的命令与在所述lfu之后重新启用中断响应之间执行所述单个快闪存储器存储体的所述lfu。20.根据权利要求19所述的方法,其中所述执行步骤包含:使用快闪存储器存储体接收第一指令,所述第一指令配置成由处理器执行以执行中断服务例程;将所述第一指令写入到所述快闪存储器存储体的应用程序部分以替换由所述快闪存储器存储体先前存储的第二指令;执行所述第一指令以按次序执行以下步骤:在第一步骤中,在维持中断响应的同时,将由所述第一指令规定且未由所述第二指令规定的变量初始化并且不改变由第一组第一指令规定的变量;在第二步骤中,在确定不存正在进行的中断响应之后,停用所述中断响应且进行到第三步骤;在所述第三步骤中,将用于保存及恢复上下文的堆叠初始化、更新中断向量且更新函数指针;及在第四步骤中,重新启用所述中断响应。
技术总结
本申请案涉及快闪存储器的实时固件更新。在所描述的实例中,一种快闪存储器存储体(202a)包含应用程序部分(206)及引导加载程序部分(204)。所述应用程序部分(206)存储用于执行中断服务例程ISR(212)的第一指令。所述引导加载程序部分(204)存储用于以下各项的第二指令:致使所述快闪存储器存储体(202a)接收新的第一指令以供执行所述ISR(212),及写入所述新的第一指令以替换旧的第一指令,以及执行所述新的第一指令。新的第一指令。新的第一指令。
技术研发人员:S
受保护的技术使用者:德州仪器公司
技术研发日:2023.03.22
技术公布日:2023/9/26
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/