一种用于物联网的实时擦写FLASH方法与流程


一种用于物联网的实时擦写flash方法
技术领域
1.本发明属于物联网技术领域,具体涉及一种用于物联网的实时擦写flash方法。


背景技术:



2.物联网要求低成本,所以sram(staticrandom-accessmemory,静态随机存取存储器),tcm(tightly-coupledmemory,紧耦合内存)等速度快的存储设备尽量裁减适当使用以降低成本,尽量使用norflash运行程序以及存储必要的数据(nv)。这要求flash使用寿命能够达到一定的要求。物联网终端的flash有两种:
3.一种是片内集成一片norflash运行程序,再集成一片eprom或者norflash存储数据。好处是软件简单,norflash只在下载的时候擦写,上电运行之后,只需要cpu从flash取指,存储数据的时候不用关心软件代码放在哪里,直接写另外一块eprom或者flash,缺点就是成本大大的提高。
4.第二种方案是集成一片norflash,既要运行代码,也要分一部分出来存储数据。该种方案中,芯片内部只集成一块norflash,这也是在控制成本下大多数使用的方案。优点是省去一块flash,以及soc上省去一个控制器,有效的降低成本。但是缺点软件复杂度上就提升了很多,同一个norflash上既要保证cpu取指,又要保证擦写flash成功。一般的做法就是擦写flash的时候,保证擦写flash的软件由一个cpu核取指并将程序放在片内ram中。在通信终端如果接入网络的情况下,终端设备会和存在drx(非连续接收)的行为。在通信处理器一侧,物理层会每1ms产生一次中断,如果不能及时处理,物理层软件就会导致芯片死机。因此一般情况下,写flash的时候需要关闭网络连接,其中一个处理器进入等待状态,另一个处理器去擦写flash,完成擦写flash之后再恢复网络连接状态。这种方案在一般业务下还可以勉强运行,但是如果需要保持网络连通的情况下,例如fota升级这样的业务,如果还是按照以往方式关闭网络,写flash,再开网络,则会存在很多问题。


技术实现要素:



5.本发明公开了一种用于物联网的实时擦写flash方法,实现了所有场景下的flash擦写,有些情况下擦写flash是在网络连接的状态下,有些是无网络状态下擦写。
6.为达到上述目的,本发明的技术方案如下:
7.一种用于物联网的实时擦写flash方法,包括如下步骤
8.步骤一,判断系统芯片是否为单核启动模式,如为单核启动模式,则直接转至步骤五,如非单核启动模式则执行步骤二;
9.步骤二,配置共享内存数据;
10.步骤三,正要进行flash擦写的处理器通知其他需要可能会进行flash操作的处理器进入等待状态,不对flash进行操作;
11.步骤四,判断此时网络是否处于连接状态,如处于连接状态,则需要每1ms周期内限定擦写的时间,即每1ms周期内首先满足物理层任务运行时间需要,剩余时间根据系统的
繁忙程度获取flash擦写时间;如网络处于非连接状态,则执行步骤五;
12.步骤五,不限定擦写时间;
13.步骤六,配置擦写flash命令;
14.步骤七,进行flash擦写;当不限定擦写时间时,则在flash擦写过程中不限制其操作时间;当每1ms周期内限定可擦写时间时,每1ms周期内利用当前可以擦写的时间进行其中一段擦写,当该段时间结束时flash状态若还没有擦写完,则采用suspend机制,将flash擦写动作挂起;当下一个1ms的时间片段内检测到当前flash擦写处于suspend状态,则继续获取可以擦写的时间,再采用resume机制,将从之前flash挂起的地方继续擦写操作并设置操作状态为resume状态,当可擦写的时间到期,通过命令查询flash状态若还没有擦写完,则suspend挂起,等待下一次的擦写;重复步骤七;如果擦写完则进入步骤八;
15.步骤八,比较已经完成擦写长度与要擦写的长度,当相等时表示擦写完成,执行步骤九;当未结束时反复执行步骤七;
16.步骤九,通知其他等待的处理器已完成擦写,恢复其状态,令其不再等待。
17.进一步的,所述步骤二中,当arm核需要操作flash时,由dsp核检测共享内存有配置并开始flash的操作。
18.进一步的,获取的flash擦写时间尽量长。
19.进一步的,当每1ms周期内限定可擦写时间时,flash擦工作切分成多个扇区,写切分成多个页,每个扇区的擦和每个页的写分时间片段操作。
20.进一步的,通过以下方式计算flash可以擦写的时间:首先获取当前时间,再获取下一次滴答中断到来的时间,计算两者时间差。
21.进一步的,擦写放进系统空闲任务中执行。
22.进一步的,擦写放进1ms的滴答中断服务程序里面执行,每次固定执行定量时间。
23.进一步的,所述步骤七中限定可擦写时间时flash擦写过程具体包括如下步骤:
24.步骤1,判断flash操作是否处于执行阶段,如否则进入步骤10,如是则进入步骤2;
25.步骤2,关闭中断,获取当前时间以及下一次滴答中断到来时间,计算时间差;
26.步骤3,判断当前状态是否是flash初始状态,如是则设置擦写flash的类型,起始地址,长度,数据地址,判断是否需要擦除,如需要擦除则设置状态为flash擦开始状态,进入步骤4,否则设置状态为flash写开始状态,进入步骤7;
27.步骤4,判断当前状态是否为flash擦开始状态,如是则开始使用擦除命令进行擦除并等待可以擦除的时间到,如果时间到,flash没有擦完,则发送命令挂起当前擦除,设置状态为flash继续擦状态,进入步骤5,否则设置成擦完成状态进入步骤6;
28.步骤5,判断当前状态是否为flash继续擦状态,如是则发送恢复擦命令继续擦除,并等待可以擦除的时间,检查是否擦完,如果没有擦完,则发送挂起命令,将擦挂起,重复步骤5,否则设置擦完成状态进入步骤6;
29.步骤6,判断当前状态是否为flash擦完成状态,如是则检查擦是否成功,判断操作是否为仅仅擦,如是则设置状态为写完成状态,进入步骤8,否则进入步骤7;
30.步骤7,判断当前状态是否为flash写开始状态,如是则开始使用写命令进行写flash操作,并等待可写时间,等待时间到查询是否写结束,如没有结束则挂起写操作,设置flash写继续状态,进入步骤8;否则设置flash写完成进入步骤9;
31.步骤8,判断当前状态是否是flash写继续状态,如是则发送恢复写命令继续写,并等待可以写的时间,检查是否写完,如没有写完则发送挂起命令,将擦挂起,重复步骤8,否则设置擦完成状态进入步骤9;
32.步骤9,判断当前状态是否为flash写完成状态,如是则检查擦是否还有后续要操作,如果还有,操作状态为完成,否则还设置flash操作阶段为空闲;
33.步骤10,打开中断。
34.本发明的有益效果为:
35.1.通过本发明方法,在所有的启动场景,都可以完成flash的擦写:任意一个单核启动的时候,都可以在运行软件的同时一次性擦写flash;两个核同时启动时,可以没有网络连接的情况下一次性擦写flash;当存在网络连接的情况下,在擦写flash时保证物理层任务也能正常运行的情况下尽量少次数挂起恢复完成擦写。
36.2.本发明能够根据系统的任务紧张程度,最大限度地保证擦写机会,在得到擦写机会后估算时间进行最多时间的擦写,减少挂起恢复的次数。
附图说明
37.图1为本发明提供的用于物联网的实时擦写flash方法整体流程示意图。
38.图2为本发明提供的分段式flash擦写状态转移图。
具体实施方式
39.以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
40.如图1所示,本发明提供的用于物联网的实时擦写flash方法,包括如下步骤:
41.步骤一,判断soc(系统级芯片)是否为单核启动模式,如为单核启动模式,则直接转至步骤五,如非单核启动模式则执行步骤二。(本例中为双核)本例中soc集成arm和dsp双核处理器。根据实际需要,soc中有可能集成两个以上处理器。
42.步骤二,配置共享内存数据。
43.共享内存设置擦写flash的起始地址,长度,擦写动作(擦、写、先擦后写)以及配置操作状态、操作标记和需要写入的数据内容。如果arm核需要操作flash,则需要在arm的程序中填写共享内存的内容,dsp核检测到共享内存有配置,则开始flash的操作。当dsp核需要操作flash时,也要配置共享内存数据,并由dsp自身完成flash操作。从而使得flash擦写动作尽量放在一个核上操作(dsp核)。
44.步骤三,正要进行flash擦写的处理器通知其他需要可能会进行flash操作的处理器程序运行sram里的等待代码,进入等待状态,不对flash进行操作。
45.步骤四,判断此时网络是否处于连接状态。网络连接状态是通过协议栈,物理层软件协同完成的。此时系统中需要保证每1ms都必须运行物理层任务。如处于连接状态,因为物理层原因必须要每1ms执行一次物理层任务不可以打断延时,此时则需要每1ms周期内限定擦写的时间,首先满足物理层任务运行时间需要,剩余的时间根据系统的繁忙程度获取尽量长的flash擦写时间,这样能够尽量少次数挂起恢复完成擦写。获取方法可采用常规取值方法,当前可以擦写的时间可以为一设定值或根据既定公式的计算结果。如网络处于非
连接状态,则执行步骤五;
46.步骤五,不限定擦写时间,在本例中设置无限长擦写时间。
47.步骤六,基于步骤四或步骤六中获取的擦写时间结合其他常规参数配置擦写flash命令;
48.步骤七,进行flash擦写。本步骤中,当不限定擦写时间时,则在flash擦写过程中不限制其操作时间,flash擦写可以一次性连贯完成。当每1ms周期内限定可擦写时间时,实质上是将flash擦工作切分成多个扇区(每个扇区4096字节),写切分成多个页(每个页256字节),因为每1ms周期内可擦写时间有限,每个扇区的擦和每个页的写很可能又分时间片段操作。每1ms周期内利用当前可以擦写的时间进行其中一段擦写,当该段时间结束时,采用suspend机制,将flash擦写动作挂起,设置当前flash操作的状态为suspend状态,flash可以进行正常的读取。当下一个1ms的时间片段内系统进入空闲任务,在空闲任务中检测到当前flash擦写处于suspend状态,则继续获取可以擦写的时间,再采用resume机制,将从之前flash挂起的地方继续擦写操作并设置操作状态为resume状态。当可擦写的时间到期,通过命令查询flash状态,若还没有擦写完,则suspend挂起,等待下一次的擦写。重复步骤七。如果擦写完则进入步骤八。
49.一般系统擦写flash用于写重要的数据信息,或者写升级版本的差分包等,所以应用程序根据业务需要,可以设定flash擦写的重要性。如果优先级不高,则把擦写放进系统空闲任务中,每次进入空闲任务,首先获取当前时间,再获取下一次滴答中断到来的时间,计算这个时间差,就是flash可以擦写的时间。如果优先级高的擦写flash,则把suspend、resume机制的擦写放进1ms的滴答中断服务程序里面执行,每次执行时间120us,这样可以保证每1ms内都保持擦写。
50.步骤八,比较已经完成擦写长度与要擦写的长度,当相等时表示擦写完成,执行步骤九;当未结束时反复执行步骤七。
51.步骤九,通知其他等待的处理器已完成擦写,恢复其状态,令其不再等待。
52.实时擦写flash的具体过程如图2所示,包括如下步骤:
53.步骤1,判断flash操作是否处于执行阶段,如果否,则进入步骤10,是进入步骤2。
54.步骤2,关闭中断,获取当前时间以及下一次滴答中断到来时间,计算时间差。
55.步骤3,判断当前状态是否是flash初始状态,如果是则设置擦写flash的类型,起始地址,长度,数据地址,判断是否需要擦除,如需要擦除则设置状态为flash擦开始状态,进入步骤4,否则设置状态为flash写开始状态,进入步骤7。
56.步骤4,判断当前状态是否为flash擦开始状态,如果是,则开始使用擦除命令进行擦除并等待可以擦除的时间到,如果时间到,flash没有擦完,则发送命令挂起当前擦除,设置状态为flash继续擦状态,进入步骤5,否则设置成擦完成状态进入步骤6。
57.步骤5,判断当前状态是否为flash继续擦状态,如果是,则发送恢复擦命令继续擦除,并等待可以擦除的时间,检查是否擦完,如果没有擦完,则发送挂起命令,将擦挂起,重复步骤5,否则设置擦完成状态进入步骤6。
58.步骤6,判断当前状态是否为flash擦完成状态,如果是,检查擦是否成功,判断操作是否为仅仅擦,如果是,则设置状态为写完成状态,进入步骤8,否则进入步骤7。
59.步骤7,判断当前状态是否为flash写开始状态,如果是开始使用写命令进行写
flash操作,并等待可写时间,等待时间到查询是否写结束,如果没有结束,则挂起写操作,设置flash写继续状态,进入步骤8。否则设置flash写完成进入步骤9。
60.步骤8,判断当前状态是否是flash写继续状态,如果是,则发送恢复写命令继续写,并等待可以写的时间,检查是否写完,如果没有写完,则发送挂起命令,将擦挂起,重复步骤8,否则设置擦完成状态进入步骤9。
61.步骤9,判断当前状态是否为flash写完成状态,如果是,检查擦是否还有后续要操作,如果还有,操作状态为完成,否则还要设置flash操作阶段为空闲,
62.步骤10,打开中断。
63.需要说明的是,以上内容仅仅说明了本发明的技术思想,不能以此限定本发明的保护范围,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰均落入本发明权利要求书的保护范围之内。

技术特征:


1.一种用于物联网的实时擦写flash方法,其特征在于,包括如下步骤:步骤一,判断系统芯片是否为单核启动模式,如为单核启动模式,则直接转至步骤五,如非单核启动模式则执行步骤二;步骤二,配置共享内存数据;步骤三,正要进行flash擦写的处理器通知其他需要可能会进行flash操作的处理器进入等待状态,不对flash进行操作;步骤四,判断此时网络是否处于连接状态,如处于连接状态,则需要每1ms周期内限定擦写的时间,即每1ms周期内首先满足物理层任务运行时间需要,剩余时间根据系统的繁忙程度获取flash擦写时间;如网络处于非连接状态,则执行步骤五;步骤五,不限定擦写时间;步骤六,配置擦写flash命令;步骤七,进行flash擦写;当不限定擦写时间时,则在flash擦写过程中不限制其操作时间;当每1ms周期内限定可擦写时间时,每1ms周期内利用当前可以擦写的时间进行其中一段擦写,当该段时间结束时flash状态若还没有擦写完,则采用suspend机制,将flash擦写动作挂起;当下一个1ms的时间片段内检测到当前flash擦写处于suspend状态,则继续获取可以擦写的时间,再采用resume机制,将从之前flash挂起的地方继续擦写操作并设置操作状态为resume状态,当可擦写的时间到期,通过命令查询flash状态若还没有擦写完,则suspend挂起,等待下一次的擦写;重复步骤七;如果擦写完则进入步骤八;步骤八,比较已经完成擦写长度与要擦写的长度,当相等时表示擦写完成,执行步骤九;当未结束时反复执行步骤七;步骤九,通知其他等待的处理器已完成擦写,恢复其状态,令其不再等待。2.根据权利要求1所述的用于物联网的实时擦写flash方法,其特征在于,所述步骤二中,当arm核需要操作flash时,由dsp核检测共享内存有配置并开始flash的操作。3.根据权利要求1所述的用于物联网的实时擦写flash方法,其特征在于,获取的flash擦写时间尽量长。4.根据权利要求1所述的用于物联网的实时擦写flash方法,其特征在于,当每1ms周期内限定可擦写时间时,flash擦工作切分成多个扇区,写切分成多个页,每个扇区的擦和每个页的写分时间片段操作。5.根据权利要求1所述的用于物联网的实时擦写flash方法,其特征在于,通过以下方式计算flash可以擦写的时间:首先获取当前时间,再获取下一次滴答中断到来的时间,计算两者时间差。6.根据权利要求1所述的用于物联网的实时擦写flash方法,其特征在于,擦写放进系统空闲任务中执行。7.根据权利要求1所述的用于物联网的实时擦写flash方法,其特征在于,擦写放进1ms的滴答中断服务程序里面执行,每次固定执行定量时间。8.根据权利要求1所述的用于物联网的实时擦写flash方法,其特征在于,所述步骤七中限定可擦写时间时flash擦写过程具体包括如下步骤:步骤1,判断flash操作是否处于执行阶段,如否则进入步骤10,如是则进入步骤2;步骤2,关闭中断,获取当前时间以及下一次滴答中断到来时间,计算时间差;
步骤3,判断当前状态是否是flash初始状态,如是则设置擦写flash的类型,起始地址,长度,数据地址,判断是否需要擦除,如需要擦除则设置状态为flash擦开始状态,进入步骤4,否则设置状态为flash写开始状态,进入步骤7;步骤4,判断当前状态是否为flash擦开始状态,如是则开始使用擦除命令进行擦除并等待可以擦除的时间到,如果时间到,flash没有擦完,则发送命令挂起当前擦除,设置状态为flash继续擦状态,进入步骤5,否则设置成擦完成状态进入步骤6;步骤5,判断当前状态是否为flash继续擦状态,如是则发送恢复擦命令继续擦除,并等待可以擦除的时间,检查是否擦完,如果没有擦完,则发送挂起命令,将擦挂起,重复步骤5,否则设置擦完成状态进入步骤6;步骤6,判断当前状态是否为flash擦完成状态,如是则检查擦是否成功,判断操作是否为仅仅擦,如是则设置状态为写完成状态,进入步骤8,否则进入步骤7;步骤7,判断当前状态是否为flash写开始状态,如是则开始使用写命令进行写flash操作,并等待可写时间,等待时间到查询是否写结束,如没有结束则挂起写操作,设置flash写继续状态,进入步骤8;否则设置flash写完成进入步骤9;步骤8,判断当前状态是否是flash写继续状态,如是则发送恢复写命令继续写,并等待可以写的时间,检查是否写完,如没有写完则发送挂起命令,将擦挂起,重复步骤8,否则设置擦完成状态进入步骤9;步骤9,判断当前状态是否为flash写完成状态,如是则检查擦是否还有后续要操作,如果还有,操作状态为完成,否则还设置flash操作阶段为空闲;步骤10,打开中断。

技术总结


本发明提供了一种用于物联网的实时擦写FLASH方法。本发明在所有的启动场景,都可以完成flash的擦写:任意一个单核启动的时候,都可以在运行软件的同时一次性擦写flash;两个核同时启动时,可以没有网络连接的情况下一次性擦写flash;当存在网络连接的情况下,在擦写flash时保证物理层任务也能正常运行的情况下尽量少次数挂起恢复完成擦写。本发明能够根据系统的任务紧张程度,最大限度地保证擦写机会,在得到擦写机会后估算时间进行最多时间的擦写,减少挂起恢复的次数。减少挂起恢复的次数。减少挂起恢复的次数。


技术研发人员:

周玉超

受保护的技术使用者:

诺领科技(南京)有限公司

技术研发日:

2021.12.31

技术公布日:

2022/3/25

本文发布于:2024-09-22 10:30:53,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/11821.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:步骤   状态   时间   操作
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议