专利名称:一种运行应用程序的方法及控制器的制作方法
技术领域:
本发明涉及嵌入式领域,特别是涉及运行应用程序的方法及控制器。
背景技术:
存储器(Memory)是计算机系统中的记忆设备,用来存放程序和数据。计算机中的全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。 在通信领域、消费领域、计算机领域等,闪存(flash)已得到广泛的应用。生产商们正在开发多种新技术,以便使闪存也拥有像动态随机存储器(DRAM)和同步动态随机存取存储器(SDRAM)那样的高速、低价、寿命长等特点。 在嵌入式应用领域,串行闪存器主要用于存储程序和数据,当用于存储应用程序代码时, 一般需要一个较大容量的程序SRAM(用于装置应用程序并执行应用程序)来运行应用程序。即控制器上电后需要将闪存器中的应用程序代码读到程序SRAM中,然后运行程序SRAM中的应用程序。 因此该方案要求更长的时间内有更多的器件在工作,从而需要消耗更多的电池能量。设计工程师也必须确认在修改数据时有足够容量的程序SRAM可用。并且如果闪存器中的应用程序代码有误,将其读到程序SRAM后运行时便会出错,可能导致严重后果。
发明内容
本发明实施例提供一种运行应用程序的方法及控制器,用于提高应用程序运行的安全性。
—种运行应用程序的方法,包括以下步骤 控制器通过运行内部的服务程序判断闪存器中是否有应用程序; 控制器在确定有应用程序时,读取闪存器中应用程序的代码,对读取的代码进行
求和,将求和结果与闪存器的标志区域中校验标志的值进行比较,在比较结果一致时确定
应用程序正确; 控制器在确定应用程序正确时,从服务程序切换到应用程序。
—种控制器,包括 识别模块,用于通过运行内部的服务程序判断闪存器中是否有应用程序;
校验模块,用于在确定有应用程序时,读取闪存器中应用程序的代码,对读取的代码进行求和,将求和结果与闪存器的标志区域中校验标志的值进行比较,在比较结果一致时确定应用程序正确; 解析模块,用于在确定应用程序正确时,从服务程序切换到应用程序。 本发明实施例在控制器中增加服务程序,通过该服务程序在控制器启动后对闪存
器中的应用程序代码进行识别,即判断闪存器中是否有应用程序,在有应用程序时,进一步
对应用程序进行校验,即读取闪存器中应用程序的代码,对读取的代码进行求和,将求和结果与闪存器的标志区域中校验标志的值进行比较,在识别和校验均通过时,控制器从服务程序切换到闪存器中的应用程序,以执行应用程序。实现了在无程序SRAM的情况下运行应用程序,以及通过识别和校验后才运行应用程序,提高了安全性。
图1为本发明实施例中控制器的主要结构图; 图2为本发明实施例中控制器的详细结构图; 图3为本发明实施例中硬件升级标志的示意图; 图4为本发明实施例中运行应用程序的主要方法流程图; 图5为本发明实施例中带有软件升级标志的运行应用程序的详细方法流程图; 图6为本发明实施例中带有硬件升级标志的运行应用程序的详细方法流程图。
具体实施例方式
本发明实施例在控制器中增加服务程序,通过该服务程序在控制器启动后对闪存器中的应用程序代码进行识别和校验,在识别和校验均通过时,控制器从服务程序切换到闪存器中的应用程序,以执行应用程序。实现了在无程序SRAM(尤其指装载和执行应用程序的SRAM)的情况下运行应用程序,以及通过识别和校验后才运行应用程序,提高了安全性。 参见图l,本实施例中的控制器包括识别模块101、校验模块102和解析模块103。控制器中的处理器通过运行内部的服务程序实现识别模块101和解析模块103的功能,以及处理器通过运行内部的系统程序实现解析模块103的功能。所述闪存器为包括串行接口的闪存器。该闪存器可以位于控制器的外部,且与控制器相连;或者位于控制器的内部,与控制器中的其它模块连接。 识别模块101用于通过运行内部的服务程序判断闪存器中是否有应用程序,实现对闪存器中应用程序的识别。具体实现方式有多种,如识别模块101读取闪存器的标志区域中识别标志的值,并根据该识别标志的值判断闪存器中是否有应用程序。例如,识别标志的值为l表示有应用程序,为O表示无应用程序。其中,在对闪存器进行擦写操作时会修改识别标志的值。 校验模块102用于在确定有应用程序时,进一步判断应用程序是否正确,实现对
闪存器中应用程序的校验。具体实现方式有多种,如校验模块102读取闪存器中应用程序
的代码,对读取的代码进行求和,将求和结果与闪存器的标志区域中校验标志的值进行比
较,在比较结果一致时确定应用程序正确,否则确定应用程序错误。其中,在对闪存器进行
写操作或升级操作时会通过对代码求和的方式获得并修改校验标志的值。 解析模块103用于在确定应用程序正确时,从服务程序切换到应用程序,从闪存
器中读取应用程序的代码并运行。 应用程序包括代码和数据,本实施例中主要对应用程序的代码进行识别和校验。
控制器还包括存储模块104和升级模块105,参见图2所示。 存储模块104,不同于闪存器,用于保存系统程序和服务程序等,可具体为随机存取存储器(RAM)、只读存储器(ROM)等。
升级模块105用于通过运行内部的服务程序判断是否有升级程序,若有,则根据该升级程序对闪存器中的应用程序进行升级。该升级程序可以存储在控制器外部的存储设备上。判断是否升级的具体实现方式有多种,如升级模块105根据升级标志判断是否有升级程序。该升级标志可以是硬件标志或软件标志,如果是软件标志,则通过运行服务程序实现对软件标志的判断。该软件标志由控制器收到上层设备(如计算机)发送的升级命令后将其设置为l,然后控制器进行软复位,升级模块105在检测出软件标志为1后进行升级。在升级结束后,升级模块105将软件标志置为0,表示无升级程序。如果是硬件标志,则升级模块105根据收到的电平信号进行判断,参见图3所示,本实施例中当控制器的引脚(pin)连接电源端(+Vcc)时向升级模块105发送高电平信号,即传输升级标志l,表示有升级程序。当控制器的引脚(pin)连接接地端(Gnd)时向升级模块105发送低电平信号,即传输升级标志O,表示无升级程序。该硬件标志可由用户手动设置,在需要升级时,将引脚置于电源端,在升级结束后将引脚置于接地端。升级过程包括升级模块105向闪存器发送模式转换命令,使闪存器进入可擦写状态;根据升级程序对闪存器进行擦写操作,以升级应用程序;升级后再次向闪存器发送模式转换命令,使闪存器进入保护状态,只能进行读操作。
在升级结束后或判断没有升级程序时,识别模块101判断闪存器中是否有应用程序。 以上介绍了控制器的内部结构和功能,下面对控制器实现运行应用程序的过程进行介绍。
参见图4,本实施例中运行应用程序的主要方法流程如下 步骤401 :控制器通过运行内部的服务程序判断闪存器中是否有应用程序。
步骤402 :控制器在确定有应用程序时,进一步判断应用程序是否正确。
步骤403 :控制器在确定应用程序正确时,从服务程序切换到应用程序。 以上流程有多种实现方式,下面通过两个实施例来详细说明。 参见图5,本实施例中带有软件升级标志的运行应用程序的详细方法流程如下 步骤501 :控制器上电后运行服务程序。
步骤502 :控制器读取升级标志的值。 步骤503 :控制器根据升级标志的值判断是否升级,若是,则继续步骤504,否则继续步骤505。 步骤504 :控制器对闪存器中的应用程序进行升级。
步骤502-504为关于闪存器的升级过程。 步骤505 :控制器根据闪存器中的识别标志的值判断闪存器中是否有应用程序,
若有,则继续步骤506,否则继续步骤510。该步骤为对闪存器的识别过程。 步骤506 :控制器对闪存器中的应用程序的代码进行求和,并得到求和结果。 步骤507 :控制器将求和结果与闪存器中的校验标志的值进行比较。 步骤508 :控制器判断比较结果是否一致,若是,则继续步骤509,否则继续步骤
510。 步骤506-508为对闪存器的校验过程。 步骤509 :控制器从服务程序切换到应用程序。运行应用程序的步骤包括控制器中的解析模块103停止解析服务程序,从闪存器中读取应用程序,并进行解析等操作。
步骤510 :控制器生成并输出错误提示信息。 其中,步骤504包括控制器向闪存器发送模式转换命令,使闪存器进入可擦写状态;根据升级程序对闪存器进行擦写操作,以升级应用程序;升级后再次向闪存器发送模式转换命令,使闪存器进入保护状态,只能进行读操作;控制器复位。 参见图6,本实施例中带有硬件升级标志的运行应用程序的详细方法流程如下
步骤601 :控制器上电后运行服务程序。 步骤602 :控制器检测引脚的状态(相当于获得升级标志的值)。 步骤603 :控制器根据引脚的状态(是高电平还是低电平)判断是否升级,若是,
则继续步骤604,否则继续步骤605。 步骤604 :控制器对闪存器中的应用程序进行升级。
步骤602-604为关于闪存器的升级过程。 步骤605 :控制器根据闪存器中的识别标志的值判断闪存器中是否有应用程序,
若有,则继续步骤606,否则继续步骤610。该步骤为对闪存器的识别过程。 步骤606 :控制器对闪存器中的应用程序的代码进行求和,并得到求和结果。 步骤607 :控制器将求和结果与闪存器中的校验标志的值进行比较。 步骤608 :控制器判断比较结果是否一致,若是,则继续步骤609,否则继续步骤
610。 步骤606-608为对闪存器的校验过程。
步骤609 :控制器从服务程序切换到应用程序。运行应用程序的步骤包括控制器中的解析模块103停止解析服务程序,从闪存器中读取应用程序,并进行解析等操作。
步骤610 :控制器生成并输出错误提示信息。 如果控制器既包括硬件升级标志又包括软件升级标志,则本实施例中先对硬件升级标志进行判断,若判断需要升级,则进行升级流程;否则进一步对软件升级标志进行判断,若判断需要升级,则进行升级流程。 本发明实施例在控制器中增加服务程序,通过该服务程序在控制器启动后对闪存器中的应用程序代码进行识别和校验,在识别和校验均通过时,控制器从服务程序切换到闪存器中的应用程序,以执行应用程序。实现了在无程序SRAM的情况下运行应用程序,以及通过识别和校验后才运行应用程序,提高了安全性。本发明实施例还通过获得升级标志来确定是否有升级程序,实现了对应用程序的升级。并且升级标志可以是软件形式或硬件形式,适合多种实际需要。 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种运行应用程序的方法,其特征在于,包括以下步骤控制器通过运行内部的服务程序判断闪存器中是否有应用程序;控制器在确定有应用程序时,读取闪存器中应用程序的代码,对读取的代码进行求和,将求和结果与闪存器的标志区域中校验标志的值进行比较,在比较结果一致时确定应用程序正确;控制器在确定应用程序正确时,从服务程序切换到应用程序。
2. 如权利要求1所述的方法,其特征在于,控制器判断闪存器中是否有应用程序的步 骤包括控制器读取闪存器的标志区域中识别标志的值,并根据该识别标志的值判断闪存 器中是否有应用程序。
3. 如权利要求1所述的方法,其特征在于,还包括步骤控制器在确定无应用程序或应 用程序错误时,生成并输出错误提示信息。
4. 如权利要求1所述的方法,其特征在于,还包括步骤控制器在判断闪存器中是否有 应用程序之前,控制器通过运行内部的服务程序判断是否有升级程序,若有,则根据该升级 程序对闪存器中的应用程序进行升级; 在升级结束后或判断没有升级程序时,控制器判断闪存器中是否有应用程序。
5. 如权利要求4所述的方法,其特征在于,控制器根据升级标志判断是否有升级程序。
6. 如权利要求5所述的方法,其特征在于,升级标志为软件标志或为硬件标志。
7. —种控制器,其特征在于,包括识别模块,用于通过运行内部的服务程序判断闪存器中是否有应用程序; 校验模块,用于在确定有应用程序时,读取闪存器中应用程序的代码,对读取的代码进行求和,将求和结果与闪存器的标志区域中校验标志的值进行比较,在比较结果一致时确定应用程序正确;解析模块,用于在确定应用程序正确时,从服务程序切换到应用程序。
8. 如权利要求7所述的控制器,其特征在于,识别模块读取闪存器的标志区域中识别 标志的值,并根据该识别标志的值判断闪存器中是否有应用程序。
9. 如权利要求7所述的控制器,其特征在于,还包括升级模块,用于通过运行内部的 服务程序判断是否有升级程序,若有,则根据该升级程序对闪存器中的应用程序进行升级。
10. 如权利要求9所述的控制器,其特征在于,升级模块根据升级标志判断是否有升级 程序。
11. 如权利要求7所述的控制器,其特征在于,所述闪存器为包括串行接口的闪存器。
全文摘要
本发明公开了一种运行应用程序的方法,用于提高应用程序运行的安全性。所述方法包括控制器通过运行内部的服务程序判断闪存器中是否有应用程序;控制器在确定有应用程序时,读取闪存器中应用程序的代码,对读取的代码进行求和,将求和结果与闪存器的标志区域中校验标志的值进行比较,在比较结果一致时确定应用程序正确;控制器在确定应用程序正确时,从服务程序切换到应用程序。本发明还公开了用于实现所述方法的控制器。
文档编号G06F9/445GK101710297SQ20091024284
公开日2010年5月19日 申请日期2009年12月17日 优先权日2009年12月17日
发明者吴大斌, 温元胜, 胡庆庆 申请人:北京中星微电子有限公司