程序运行方法、系统、终端及存储介质与流程

文档序号:24161140发布日期:2021-03-05 17:02阅读:73来源:国知局
程序运行方法、系统、终端及存储介质与流程

[0001]
本申请涉及但不限于嵌入式领域,尤其是涉及一种程序运行方法、系统、终端及存储介质。


背景技术:

[0002]
随着物联网技术的发展,单片机的应用越来越广泛,单片机普遍存在着内部存储空间不足、外部存储效率低的问题。


技术实现要素:

[0003]
本申请旨在至少解决现有技术中存在的技术问题之一。为此,本申请提出一种程序运行方法,能够解决单片机内部存储空间不足、外部存储效率低的问题。
[0004]
本申请还提出一种具有程序运行方法的系统。
[0005]
本申请还提出一种具有程序运行方法的终端。
[0006]
本申请还提出一种具有程序运行方法的计算机可读存储介质。
[0007]
根据本申请第一方面实施例的程序运行方法,所述方法包括:获取来自于处理装置的数据下载程序模块、数据加载程序模块;运行所述数据下载程序模块,以获取来自于所述处理装置的数据,并将所述数据存储至外部存储装置;其中,所述数据包括运行代码;运行所述数据加载程序模块,以通过所述数据加载程序模块在所述外部存储装置上运行所述运行代码。
[0008]
根据本申请实施例的程序运行方法,至少具有如下技术效果:本方法利用下载程序、引导加载程序实现了数据和代码的外部存取和运行,解决单片机存储空间不足的问题,提升了外部存储的存取和程序运行效率。
[0009]
根据本申请的一些实施例,所述下载程序包括:所述获取来自于处理装置的数据下载程序模块、数据加载程序模块,包括:获取所述外部存储装置的信息结构体;根据所述信息结构体获得所述数据下载程序模块。
[0010]
根据本申请的一些实施例,所述获取来自于处理装置的数据下载程序模块、数据加载程序模块,还包括:获取来自于处理装置的映射程序模块、跳转程序模块;根据所述映射程序模块、所述跳转程序模块获得所述数据加载程序模块。
[0011]
根据本申请的一些实施例,所述信息结构体至少包括以下的一个或多个:版本号、所述下载程序的名称、存储类型、起始地址、容量、页面大小、扇区大小。
[0012]
根据本申请的一些实施例,所述数据下载程序模块至少包括以下的一个:读函数程序模块、写函数程序模块、擦除函数程序模块。
[0013]
根据本申请第二方面实施例的程序运行系统,包括处理装置、外部存储装置。处理装置,用于获取数据下载程序模块、数据加载程序模块;外部存储装置,外部存储装置与所述处理装置通过接口通信连接;处理装置运行所述数据下载程序模块,以获取来自于所述处理装置的数据,并将所述数据存储至外部存储装置;其中,所述数据包括运行代码;处理
装置运行所述数据加载程序模块,以通过所述数据加载程序模块在所述外部存储装置上运行所述运行代码。
[0014]
根据本申请的一些实施例,所述外部存储为flash存储器。
[0015]
根据本申请的一些实施例,所述接口为qspi接口。
[0016]
根据本申请第三方面实施例的终端,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现:本申请上述第一方面实施例的程序运行方法。
[0017]
根据本申请第四方面实施例的计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于:第一方面实施例的程序运行方法。
[0018]
本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过申请的实践了解到。
附图说明
[0019]
下面结合附图和实施例对本申请做进一步的说明,其中:
[0020]
图1是本申请一个实施例提供的程序运行方法流程图;
[0021]
图2是本申请另一个实施例提供的程序运行方法流程图;
[0022]
图3是本申请另一个实施例提供的程序运行方法流程图;
[0023]
图4是本申请另一个实施例提供的程序运行方法流程图;
[0024]
图5是本申请一个实施例提供的程序运行系统模块框图。
具体实施方式
[0025]
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。
[0026]
本申请的描述中,除非另有明确的限定,连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本申请中的具体含义。
[0027]
本申请的描述中,参考术语“一个实施例”、“一些实施例”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0028]
首先,对本申请中出现的名词进行解析:flash,闪存,又被叫做闪存存储器,是一种长寿命的非易失性的存储器,在断电情况下仍能保持所存储的数据信息;单片机,又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上;qspi(quad spi,队列串行外围接口)也叫快速spi,因为比普通的spi多了两条数据线;bootloader为引导加载程序;ram(random access memory,随机存取存储器)为主存,是与cpu直接交换数据的内部存储器。
[0029]
按摩椅市场的发展催生了一种手持显示遥控器的应用技术。按摩椅手持显示遥控器,用来控制按摩椅的同时提供了显示界面给到用户。用户可以通过手持显示遥控器来选
择按摩的手法,比如揉捏按摩,轻拍按摩等按摩手法,还可以选择多国语言以适应不同地区的需求,当然还包括人体各个部位的按摩选择等等。这些图形的显示,界面的切换都需要大量存储空间。
[0030]
然而,通常单片机没有大量的内部flash空间来存储这些图片和数据,就需要外扩一个flash来存储这些信息,同时由于某些大的图片导致单片机的ram无法加载图片,就还需要外扩一个ram来传输图片。因此,在硬件方面,现有的这种图形显示能够采用大容量ram、扩展外部ram或外扩flash存储器的方式,以提升单片机存储效率;在软件方面,通过修改链接文件使代码重定位到目标文件,来实现代码和数据运行和存储到外部falsh,而ram成本比较高,制板走线和layout比较复杂。
[0031]
基于此,本申请采用了带有qspi接口的单片机、带qspi接口flash的设计,使得应用程序可以在具有qspi接口的flash上运行,这样不仅可以把图片存储在flash上,同时程序代码也可以运行在flash上,就解决了单片机存储空间不足的短板,节省一个ram的成本同时使得制板比较简单。
[0032]
另一方面,能够通过修改链接文件使代码重定位到目标文件的方法,来实现代码和数据运行和存储到外部falsh,但这种方法要区分程序空间和数据空间,也就是要区分代码空间和数据空间,使得在要存储数据到外部flash时,每个数据都要指定到对应的数据空间,不能像单片机内部那样自由定义存储数据。由于按摩椅显示遥控器显示的图片量比较大,每个控件都有对应的图片,如果要对这样成千上万种不同数据图片数据都加上特定的外部地址,给程序和图片加载带来巨大麻烦,效率低下,工作量太大。
[0033]
基于此,本发申请采用了以下实施例的程序运行方法,使得单片机运行代码和存储数据不用区分代码区和数据就能像单片机内部空间一样使用外部flash,从而提高了图形存储时的编程工作效率。
[0034]
由于代码需要运行在外部flash,所以需要高效的时钟运行,因此,为了提高代码在外部执行效率,采用的单片机和flash都需要具备qspi接口。在代码软件编译平台来讲,采用了keil编译平台。
[0035]
根据本申请实施例的程序运行方法,方法包括:获取来自于处理装置的数据下载程序模块、数据加载程序模块;运行数据下载程序模块,以获取来自于处理装置的数据,并将数据存储至外部存储装置;其中,数据包括运行代码;运行数据加载程序模块,以通过数据加载程序模块在外部存储装置上运行代码。
[0036]
在具体的实施例中,数据包括但不限于图片数据、运行代码数据。
[0037]
在具体的实施例中,数据下载程序模块即为下载程序,数据加载程序模块即为引导加载程序。
[0038]
在具体的实施例中,如图1所示,程序运行方法包括:s110、获取下载程序、引导加载程序;s120、通过下载程序实现数据和代码的外部存取;s130、通过引导加载程序实现代码的外部运行。
[0039]
具体地,下载程序、引导加载程序都是为了服务于应用程序,使得运行代码和存储数据都在外部flash。在获得了下载程序、引导加载程序之后,下载算法文件通过keil平台把代码下载到外部flash,实现应用程序在外部flash下载仿真调试代码数据。引导加载程序则是先烧录到单片机,提供引导加载跳转到外部flash运行应用程序。
[0040]
在具体的实施例中,下载算法的作用是要能够在keil平台上实现代码在外部falsh运行是仿真,运行,调试。因为代码是存储在外部flash的,不能像代码在单片机内部,keil平台会自动生成一个下载算法文件;其次,若没有这个算法文件,就无法调试、运行、仿真代码。引导加载程序的作用就是要让单片机运行代码从内部falsh空间切换到外部flash空间运行。单片机无法直接运行代码在外部,需利用引导引导程序使得单片就通过这个引导从内部flash运行切换到外部flash运行。
[0041]
根据本申请实施例的程序运行方法,至少具有如下技术效果:程序运行方法利用下载程序、引导加载程序实现了数据和代码的外部存取和运行,解决单片机存储空间不足的问题,提升了外部存储的存取和程序运行效率。
[0042]
根据本申请的一些实施例,下载程序包括:获取来自于处理装置的数据下载程序模块、数据加载程序模块,包括:获取外部存储装置的信息结构体;根据信息结构体获得数据下载程序模块。
[0043]
在具体的实施例中,处理装置为单片机。
[0044]
在具体的实施例中,如图2所示,程序运行方法包括:s210、初始化外部存储;s220、获取外部存储的信息结构体、读写函数;s230、根据信息结构体、读写函数获得下载程序。
[0045]
具体地,步骤s210中初始化过程包括:使用flash存储器的接口函数,初始化外部flash存储器,检验外部flash存储器是否处于正常工作状态、是否被损坏、是否可用等。
[0046]
在具体的实施例中,下载程序又称下载算法或下载算法文件,下载算法文件程序产生依赖兼容单片机c语言的软件开发平台,如keil平台,本申请的下载算法不同于平台原有的下载算法,而是与引导加载程序相适应的下载算法,用于将数据和程序在外部存储中读写。因此,本申请的下载算法需自行实现,用于软件开发平台编译和下载应用程序到外部存储,进而当单片机运行引导加载程序后,使单片机能够在外部存储中执行已下载的程序。
[0047]
在具体的实施例中,如图3所示,程序运行方法包括:s310、根据flash存储器的存储型号,得到flash存储器的存储类型、起始地址、容量、页面大小、扇区大小等参数;s320、利用flash存储器的参数构建信息结构体,制作成c文件的结构体类型;s330、调用读写函数,根据keil平台的结构流程制作c文件格式的算法文件;s340、把制作好的c文件通过keil编译就可以生成flm格式的下载算法文件。
[0048]
通过上述步骤,能够利用keil平台把程序下载到外部flash,以实现仿真调试。
[0049]
根据本申请的一些实施例,获取来自于处理装置的数据下载程序模块、数据加载程序模块,还包括:获取来自于处理装置的映射程序模块、跳转程序模块;根据映射程序模块、跳转程序模块获得数据加载程序模块。
[0050]
在具体的实施例中,映射程序模块为映射指令、跳转程序模块为跳转指令。
[0051]
在具体的实施例中,如图4所示,程序运行方法包括:s410、初始化外部存储;s420、获取映射指令、跳转指令;s430、通过映射指令将外部存储映射到接口;s440、通过跳转指令跳转到接口,实现在外部存储上执行代码。
[0052]
引导加载程序又称为bootloader程序,bootloader程序是存储和运行在单片机内部的一段代码。具体地,在步骤s410中,引导加载程序像下载算法文件一样,使用flash的接口函数初始化外部flash,检验外部flash存储器是否处于正常工作状态、是否被损坏、是否可用等;在步骤s430中,若检验flash是可用的,则通过单片机内部的映射指令,使得外部
flash映射到单片机内部的qspi接口上;进而,在步骤s440中,单片机使用跳转指令,跳转到qspi接口地址上执行代码,qspi接口地址即为是映射后的外部flash。
[0053]
其中,步骤s440中的单片机跳转指令如下:
[0054]
jumptoapplication=(pfunction)(*(__io uint32_t*)(application_address+4));
[0055]
__set_msp(*(__io uint32_t*)application_address);
[0056]
jumptoapplication();
[0057]
其中application_address是qspi接口地址,也是外部flash的起始地址,__set_msp指令就是让单片机的主线程跳转到外部flash,实现单片机从内部运行跳转到外部运行,把外部的flash当成单片机内部的来使用。
[0058]
引导加载程序让单片机从内部flash运行跳转到外部flash运行,把外部flash映射到单片机内部qspi接口上,既可以在外部flash中调试仿真代码,又可以使得图片数据的自由方便存储,降低应用成本的同时提高工作效率。
[0059]
以数据为图片数据为例,引导加载程序实现数据与程序不需分区处理过程如下:
[0060]
当单片机加载了bootlaoader程序后,就会跳转到外部flash执行代码,使得外部flash在不用区分程序区和数据区的情况下,即可顺利的执行代码和调用图片数据来显示;把外部flash映射到单片机内部,不会因为代码量的增加而减少图片数据的使用空间,也不需要去定义每张图片数据的具体地址,而是代码和数据共存储在一个flash区中,想定义一个图片数据数组时只需要在数组前加上const关键字。
[0061]
若代码和数据分区,则代码在单片机空间中就会占用一段flash空间。比如代码占用的单片机flash空间是0000—00ff,此时若继续往单片机flash空间中添加一段代码,此时代码空间变成了0000
---
01ff,即当代码空间增加时,所需的flash空间就会增加。由于flash的容量是一定的,代码的增加会挤压存放数据,比如存放数据是图片数据,就导致了图片空间的地址发生了变化。若需要存储的图片很多,图片地址的变化,就会导致所有图片地址都要进行更改。而要去改变这些地址就要很大的工作量,外部存储的效率会降低。
[0062]
利用了以上实施例的方法能够不用进行分区,即把代码和数据空间看成一个整体。比如当定义一张图片数据时直接用c语言关键字const来声明图片数据是保存在flash空间,而不用另外在加这张图片数据的地址,这样即使代码容量在不断增加也不影响图片数据存放的地址。因此在大量图片数据的应用中可以提高工作效率。
[0063]
根据本申请的一些实施例,信息结构体至少包括以下的一个或多个:版本号、下载程序的名称、存储类型、起始地址、容量、页面大小、扇区大小。
[0064]
信息结构体的参数包括但不限于版本号、下载程序的名称、存储类型、起始地址、容量、页面大小、扇区大小。示例如下:
[0065][0066]
根据本申请的一些实施例,数据下载程序模块至少包括以下的一个:读函数程序模块、写函数程序模块、擦除函数程序模块。
[0067]
读写函数包括但不限于读函数、写函数、擦除函数。在具体的实施例中示例如下:
[0068]
uint8_t qspi_readbyte(void)//flash读函数
[0069]
void qspi_writebyte(uint8_t dat)//flash写函数
[0070]
uint8_t qspi_eraseblock(uint32_t blockaddress)//flash擦除函数
[0071]
在具体的实施例中,需根据keil平台结构流程制作c文件格式的下载算法文件,需要分别调用flash擦除函数,写函数,校验读函数,示例如下:
[0072][0073]
根据本申请实施例的程序运行系统,包括处理装置、外部存储装置。处理装置,用于获取数据下载程序模块、数据加载程序模块;外部存储装置,外部存储装置与处理装置通过接口通信连接;处理装置运行数据下载程序模块,以获取来自于处理装置的数据,并将数据存储至外部存储装置;其中,数据包括运行代码;处理装置运行数据加载程序模块,以通过数据加载程序模块在外部存储装置上运行代码。
[0074]
在具体实施例中,处理装置为单片机,外部存储装置为flash。如图5所示,程序运行系统包括单片机、外部存储,单片机和外部存储通过qspi接口通信连接,即单片机为具有qspi接口的单片机,外部存储为外加qspi接口的flash。
[0075]
程序运行系统采用了程序运行方法,利用下载程序、引导加载程序实现了数据和代码的外部存取和运行,解决单片机存储空间不足的问题,提升了外部存储的存取和程序运行效率。
[0076]
根据本申请的一些实施例,外部存储为flash存储器。
[0077]
根据本申请的一些实施例,接口为qspi接口。
[0078]
根据本申请实施例的终端,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现:本申请上述任一实施例的程序运行方法。
[0079]
根据本申请实施例的计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令用于:上述任一实施例的程序运行方法。
[0080]
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0081]
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
[0082]
上面结合附图对本申请实施例作了详细说明,但是本申请不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本申请宗旨的前提下作出各种变化。此外,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1