[发明专利]一种嵌入式系统中BootLoader代码重利用方法和开发板有效
申请号: | 201810862645.4 | 申请日: | 2018-08-01 |
公开(公告)号: | CN108958795B | 公开(公告)日: | 2022-04-26 |
发明(设计)人: | 刘茂栋 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
主分类号: | G06F8/76 | 分类号: | G06F8/76;G06F8/41;G06F9/4401 |
代理公司: | 北京连和连知识产权代理有限公司 11278 | 代理人: | 刘小峰 |
地址: | 450018 河南省郑州市*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 系统 bootloader 代码 利用 方法 开发 | ||
本发明公开了一种嵌入式系统中BootLoader代码重利用方法,包括以下步骤:创建设备描述文件,在设备描述文件中描述开发板上的硬件;编译BootLoader代码并且将BootLoader代码移植到开发板上,BootLoader代码在移植过程中从设备描述文件中获取开发板的内存的映射地址和内存大小以将其自身重定位到开发板的内存;以及运行重定位后的BootLoader代码以根据设备描述文件操作硬件。本发明能够提高BootLoader代码的兼容性,使得BootLoader代码无需重新编译,就可以直接在不同的开发板上运行。
技术领域
本发明涉及计算机技术领域,更具体地,特别是指一种嵌入式系统中BootLoader代码重利用方法和开发板。
背景技术
在嵌入式系统中,BootLoader是操作系统运行前执行的一段代码,目的是在操作系统运行前,执行硬件初始化操作,为操作系统运行准备好环境,最后将操作系统加载到内存执行。
传统的BootLoader中有两个弊端:
(1)代码对硬件资源的操作是通过直接操作硬件进行的,如果开发板上硬件资源发生变更,BootLoader将不能正常运行。
(2)代码的运行地址是在编译的时候就确定好了的,编译时通过TEXT_BASE指定,然后BootLoader启动后必须把自己的代码拷贝到TEXT_BASE指定的地址处开始执行,如果不拷贝到TEXT_BASE指定的地址执行,由于代码中访问的函数和变量的地址已经发生改变,就会出现不能正确调用函数及访问变量的问题,导致代码跑飞。
发明内容
有鉴于此,本发明实施例的目的在于提出一种嵌入式系统中BootLoader代码重利用方法和开发板,能够提高BootLoader代码的兼容性,使得BootLoader代码无需重新编译,就可以直接在不同的开发板上运行。
基于上述目的,本发明实施例的一方面提供了一种嵌入式系统中BootLoader代码重利用方法,包括以下步骤:
创建设备描述文件,在设备描述文件中描述开发板上的硬件;
编译BootLoader代码并且将BootLoader代码移植到开发板上,BootLoader代码在移植过程中从设备描述文件中获取开发板的内存的映射地址和内存大小以将其自身重定位到开发板的内存;以及
运行重定位后的BootLoader代码以根据设备描述文件操作硬件。
在一些实施方式中,创建设备描述文件包括将设备描述文件存储到开发板的存储器中。
在一些实施方式中,编译BootLoader代码包括:为编译器指定编译选项-fpic或-fpie和在链接时为链接器指定链接选项-pie以生成rel.dyn段。
在一些实施方式中,重定位包括:将编译生成的BootLoader代码重定位到内存地址的顶端运行。
在一些实施方式中,rel.dyn段保存BootLoader代码重定位之前全局变量的地址和全局变量指针的地址。
在一些实施方式中,重定位进一步包括:通过将BootLoader代码重定位之前全局变量的地址和全局变量指针的地址加上重定位后偏移量,将rel.dyn段内的全局变量的地址和全局变量指针的地址修正为重定位之后的全局变量的地址和全局变量指针的地址。
在一些实施方式中,嵌入式系统为服务器板级监控嵌入式系统。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810862645.4/2.html,转载请声明来源钻瓜专利网。