一种引导与目标分离的嵌入式软件固化、加载方法技术

技术编号:11122965 阅读:98 留言:0更新日期:2015-03-11 12:05
一种引导与目标分离的嵌入式软件固化、加载方法,将非易失存储器的存储空间划分为三个存储空间;将引导、加载程序,配置信息,被加载程序分别固化到三个存储空间;处理器从第一个存储空间中取指执行最小系统初始化;完成后,引导、加载程序从第二个存储空间中读取配置信息并解析;根据解析结果判断被加载程序的个数,若被加载程序个数为零,则进入空操作循环,否则依次加载每个被加载程序;当所有被加载程序加载完后,引导、加载程序根据配置信息判断被加载程序是否需要首先执行,若需要首先执行,则跳转到该被加载程序的入口地址执行,否则进入空操作循环。本发明专利技术解决了有限资源的深嵌入应用中的多目标文件加载问题,且易于移植。

【技术实现步骤摘要】
—种引导与目标分离的嵌入式软件固化、加载方法
本专利技术涉及一种嵌入式软件的固化、加载技术,具体涉及。
技术介绍
大多数嵌入式软件都在RAM中运行,由于RAM中的数据断电后无法保存,因此嵌入式软件应被固化在非易失存储器中,在系统上电后通过引导、加载程序加载到RAM中运行。引导、加载程序首先初始化硬件设备,建立内存空间映射关系,将整个系统初始化到一个静止的、适于操作的状态,然后加载应用软件到指定的RAM空间,并跳转到应用软件执行。 目前嵌入式软件的引导、加载主要有三种方式, 第一种方式,处理器自带固件完成引导、加载(如DSP);其优点是用户无需做任何工作,只需把应用软件的目标格式文件固化到非易失存储器中指定地址处即可;但缺点是引导、加载程序与处理器直接相关,如果使用的处理器没有加载固件的话就不能使用,使得硬件设计时可选择的器件范围变窄,同时这种固件加载方式对被加载软件的大小有要求,如只能加载64kbyte大小以内的数据; 第二种方式,采用开源工具对用户目标格式文件进行处理(如MKPR0M),提取目标格式文件的代码段、数据段内容形成一个新的目标格式文件,该文件中包含了被加载程序及系统上电后的引导、加载程序,上电后自动加载用户程序到RAM区执行;其优点是引导、加载程序对被加载软件的大小无限制,并且支持多款处理器的引导、加载;但缺点是由于用户程序与引导、加载程序最终合并为一个文件,导致每次用户程序修改后都需要重新合并,进行重复工作,同时合并为同一文件增加了调试难度,该方式最大的缺点是只能加载一个文件,无法进行多目标文件的加载; 第三种方式,开源的引导、加载程序(UBOOT),用户根据需要修改引导、加载程序,将修改后的引导、加载程序及用户程序分别固化到非易失存储器中,上电后引导、加载程序完成用户程序的加载。其优点是适用多款处理器;缺点是占用空间大、不适于系统资源有限的深嵌入式应用,用户使用前必须先熟悉其源代码,并根据其应用环境进行修改,难度较大,且不支持Windows环境。
技术实现思路
本专利技术的目的在于提出,解决了有限资源的深嵌入应用中的多目标文件加载问题,且易于移植。 为了达到上述目的,本专利技术采用的技术方案包括以下步骤: I)根据非易失存储器的存储空间大小,将非易失存储器的存储空间划分为三个存储空间; 2)将引导、加载程序固化到第一个存储空间;将被加载程序及存储空间的配置信息写入第二个存储空间,将被加载程序的代码段、数据段固化到第三个存储空间;并根据被加载程序的个数将第三个存储空间划分为N个子空间,每个子空间存放一个被加载程序的代码段和数据段;N为被加载程序的个数; 3)处理器从第一个存储空间中取指执行最小系统初始化;最小系统初始化完成后,引导、加载程序从第二个存储空间中读取被加载程序及存储空间的配置信息并进行解析; 4)根据被加载程序及存储空间的配置信息解析后的结果判断被加载程序的个数,如果被加载程序个数为零,则进入空操作循环,否则依次加载每个被加载程序,然后转入步骤5); 5)根据被加载程序及存储空间的配置信息判断被加载程序是否需要首先执行,若需要首先执行,则跳转到该程序的入口地址执行,否则进入空操作循环。 所述的步骤2)中第一个存储空间的地址是从系统上电后取指令的地址处开始的。 所述的步骤2)中被加载程序及存储空间的配置信息包括非易失存储器的大小,被加载程序的校验和,被加载程序的代码段、数据段的起始地址,被加载程序的代码段、数据段的段大小,被加载程序的代码段、数据段的目的地址,被加载程序的个数和被加载程序是否需执行的标志。 所述的步骤2)中被加载程序及存储空间的配置信息的获取方式为: 编译、链接被加载程序,生成被加载程序的目标格式文件,从被加载程序的目标格式文件中提取被加载程序的配置信息,被加载程序的配置信息包括被加载程序的校验和,被加载程序的代码段、数据段的起始地址,被加载程序的代码段、数据段的段大小,被加载程序的代码段、数据段的目的地址和被加载程序的个数;同时根据应用需求确定被加载程序是否需执行的标志,根据非易失存储器确定非易失存储器的大小,最终获取到被加载程序及存储空间的配置信息;若有多个被加载程序,则依次提取被加载程序的配置信息。 所述的步骤2)中被加载程序及存储空间的配置信息需要更改,则重新获取配置信息。 所述的步骤4)中进行加载是根据被加载程序及存储空间配置信息中被加载程序的代码段、数据段的起始地址,被加载程序的代码段、数据段的目的地址和被加载程序的代码段、数据段的段大小进行的。 所述的步骤3)中最小系统初始化包括初始化CPU,挂接异常处理程序,关中断和配置内存。 与现有技术相比,本专利技术的有益效果在于: 本专利技术将非易失存储器划分成三个存储空间,且将第三个存储空间按照被加载程序的个数划分为N个子空间,这样就能实现对N版本、多重备份软件的加载;同时引导、力口载程序功能简单、占用硬件资源少(50Kbyte),便于修改、移植,适用于有限资源的深嵌入应用。 【附图说明】 图1为本专利技术非易失存储器的空间划分图; 图2为引导、加载程序执行流程; 图3为获取被加载程序的配置信息及固化的流程; 图4为本专利技术在采用NOR FLASH存储器的目标板上的一个实施例。 【具体实施方式】 下面结合附图对本专利技术做进一步详细说明。 参见图2,本专利技术引导与目标分离的嵌入式软件固化、加载方法包括以下步骤: 1)参见图1,根据非易失存储器的存储空间大小,将非易失存储器的存储空间划分为三个存储空间; 第一个存储空间用于存储引导、加载程序,系统上电后首先执行引导、加载程序,因此第一个存储空间的地址应从系统上电后取指令的地址处开始; 第二个存储空间用于存储配置信息,包括非易失存储器的大小,被加载程序的代码段、数据段的起始地址,被加载程序的代码段、数据段的段大小,被加载程序的代码段、数据段的目的地址,被加载程序的代码段、数据段的段大小,被加载程序的个数、被加载程序是否需执行的标志以及被加载程序的校验和等; 配置信息是由两部分共同构成的,一部分是从被加载程序的格式文件中提取的被加载程序的代码段、数据段的起始地址,被加载程序的代码段、数据段的段大小,被加载程序的代码段、数据段的目的地址,被加载程序的代码段、数据段的段大小,另一部分是由软、硬件情况确定的被加载程序的个数,被加载程序是否需执行的标志,被加载程序的校验,非易失存储器的大小等信息。以上两部分信息共同构成了配置信息。 第三个存储空间用于存储被加载程序的代码段和数据段,代码段和数据段连续存放,第三个存储空间可根据被加载程序的个数进一步划分为N个子空间#等于被加载程序的个数,N ^ 0,每个子空间存放一个被加载程序的代码段和数据段; 2)将引导、加载程序固化到第一个存储空间; 3)参见图3,编译、链接加载程序,生成被加载程序的目标格式文件,从被加载程序的目标格式文件中提取被加载程序的配置信息,被加载程序的配置信息包括被加载程序的校验和,被加载程序的代码段、数据段的起始地址,被加载程序的代码段、数据段的段大小,被加载程序的代码段、数据段的目的地址和被加载程序的个数;同时根据应用需本文档来自技高网
...
一种引导与目标分离的嵌入式软件固化、加载方法

【技术保护点】
一种引导与目标分离的嵌入式软件固化、加载方法,其特征在于,包括以下步骤:1)根据非易失存储器的存储空间大小,将非易失存储器的存储空间划分为三个存储空间;2)将引导、加载程序固化到第一个存储空间;将被加载程序及存储空间的配置信息写入第二个存储空间,将被加载程序的代码段、数据段固化到第三个存储空间;并根据被加载程序的个数将第三个存储空间划分为N个子空间,每个子空间存放一个被加载程序的代码段和数据段;N为被加载程序的个数;3)处理器从第一个存储空间中取指执行最小系统初始化;最小系统初始化完成后,引导、加载程序从第二个存储空间中读取被加载程序及存储空间的配置信息并进行解析;4)根据被加载程序及存储空间的配置信息解析后的结果判断被加载程序的个数,如果被加载程序个数为零,则进入空操作循环,否则依次加载每个被加载程序,然后转入步骤5);5)根据被加载程序及存储空间的配置信息判断被加载程序是否需要首先执行,若需要首先执行,则跳转到该程序的入口地址执行,否则进入空操作循环。

【技术特征摘要】
1.一种引导与目标分离的嵌入式软件固化、加载方法,其特征在于,包括以下步骤: 1)根据非易失存储器的存储空间大小,将非易失存储器的存储空间划分为三个存储空间; 2)将引导、加载程序固化到第一个存储空间;将被加载程序及存储空间的配置信息写入第二个存储空间,将被加载程序的代码段、数据段固化到第三个存储空间;并根据被加载程序的个数将第三个存储空间划分为N个子空间,每个子空间存放一个被加载程序的代码段和数据段;N为被加载程序的个数; 3)处理器从第一个存储空间中取指执行最小系统初始化;最小系统初始化完成后,弓丨导、加载程序从第二个存储空间中读取被加载程序及存储空间的配置信息并进行解析; 4)根据被加载程序及存储空间的配置信息解析后的结果判断被加载程序的个数,如果被加载程序个数为零,则进入空操作循环,否则依次加载每个被加载程序,然后转入步骤5); 5)根据被加载程序及存储空间的配置信息判断被加载程序是否需要首先执行,若需要首先执行,则跳转到该程序的入口地址执行,否则进入空操作循环。2.根据权利要求1所述的引导与目标分离的嵌入式软件固化、加载方法,其特征在于:所述的步骤2)中第一个存储空间的地址是从系统上电后取指令的地址处开始的。3.根据权利要求1所述的引导与目标分离的嵌入式软件固化、加载方法,其特征在于:所述的步骤2)中被加载程序及存储空间的配置信息包括非易失存储器的大小,被加载程序的校验和,被加载程序的代码段、数据段的起始地址,被加载程序的代码段、数据...

【专利技术属性】
技术研发人员:褚哲韩源冬焦淼袁成军张城
申请(专利权)人:中国航天科技集团公司第九研究院第七七一研究所
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1