[发明专利]一种单ELF文件实现多操作系统加载的方法有效
| 申请号: | 201710661884.9 | 申请日: | 2017-08-04 |
| 公开(公告)号: | CN107479920B | 公开(公告)日: | 2020-05-29 |
| 发明(设计)人: | 李红;黄雷;金瑜林;杨国青;吴朝晖 | 申请(专利权)人: | 浙江大学 |
| 主分类号: | G06F9/445 | 分类号: | G06F9/445 |
| 代理公司: | 杭州天勤知识产权代理有限公司 33224 | 代理人: | 王琛 |
| 地址: | 310013 浙江*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 elf 文件 实现 操作系统 加载 方法 | ||
本发明公开了一种单ELF文件实现多操作系统加载的方法,其将同一操作系统的多份ELF文件以及加载程序ELF文件转化为单一ELF文件,该单一ELF文件可被一次性烧入FLASH中,并可一次性从FLASH被加载到内存中,从而使得加载程序在选择待加载操作系统时,不需要从FLASH中读取操作系统,即不需要包含FLASH驱动,最大程度减少了加载程序的体积,从而减少因加载程序自身所处的FLASH区错误而无法加载任何系统的概率。本发明可应用于在复杂环境,特别是FLASH易产生坏块或位反转的环境中实现多操作系统。
技术领域
本发明属于嵌入式操作系统技术领域,具体涉及一种单ELF文件实现多操作系统加载的方法。
背景技术
ELF(Executable and Linkable Format)文件是一种可执行文件的格式,其包含了编译生成的二进制数据以及一些必要的段信息、符号表等信息,在嵌入式领域,ELF文件常作为最终编译生成的可烧写文件格式用于程序烧写及加载。
嵌入式多操作系统备份技术是指在一个嵌入式系统上安装多个操作系统,并利用加载程序加载合适的操作系统实例运行的技术,多种操作系统可以是同种操作系统,也可以是多种不同的系统,利用多操作系统技术可以实现操作系统冗余,这在一些FLASH易产生坏块的环境十分重要,可以有效防止FALSH坏块导致的整个嵌入式系统无法运行的情况。
传统实现多操作系统的方法主要是通过将FLASH进行分区,在不同分区事先安装好各个操作系统,然后加载程序通过外部指示或根据上一次系统异常的情况从FLASH中加载对应分区的操作系统进行运行;但传统方法采用的加载程序需包含FLASH驱动,故使得自身代码体积较大,且当加载程序自身所处的FLASH区出现错误时,则无法加载相应的操作系统。
发明内容
鉴于上述,本发明提供了一种单ELF文件实现多操作系统加载的方法,能够最大程度减少加载程序自身的代码体积,减少因加载程序自身所处的FLASH区错误而无法加载任何系统的概率。
一种单ELF文件实现多操作系统加载的方法,包括如下步骤:
(1)将各操作系统的ELF文件转换成C结构体数组;
(2)将各操作系统的C结构体数组与加载程序一同编译成单个ELF文件,并将该ELF文件烧入至FLASH中;
(3)利用单个ELF文件中的加载程序在内存中对预加载的操作系统进行重定位,使其正常运行从而完成加载。
进一步地,所述步骤(1)的具体实现过程为:首先,对各操作系统的ELF文件进行转化,即将其中有数据内容的各个段(如TEXT段、DATE段、RODATE段)内的二进制数据转化为C语言字节数组;然后,将ELF文件中关于这些段的核心信息(如加载地址、段大小等)抽取出来与C语言字节数组一起生成C结构体;最后,将同一操作系统各个段的C结构体组合在一起形成C结构体数组。
进一步地,所述步骤(2)中将各操作系统的C结构体数组加入至加载程序的源码树中,从而使得加载程序可以访问到所有操作系统的各段信息及内容,进而将加载程序与各C结构体数组一同编译成单个ELF文件烧入至FLASH中。
进一步地,所述步骤(3)中当系统加载时,将所述单个ELF文件从FLASH加载入内存中并跳转至该ELF文件中加载程序的入口地址,利用加载程序根据预加载的操作系统将其内容根据C结构体中记录的信息进行重定位,并跳转至该ELF文件中对应操作系统的入口地址,从而在内存中完成操作系统的加载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710661884.9/2.html,转载请声明来源钻瓜专利网。





