[发明专利]一种基于Linux内核的嵌入式固件的外设移植方法有效
申请号: | 202110097929.0 | 申请日: | 2021-01-25 |
公开(公告)号: | CN112905233B | 公开(公告)日: | 2023-09-12 |
发明(设计)人: | 周亚金;姜木慧;马麟;刘强;吴磊;罗夏朴;任奎 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F8/76 | 分类号: | G06F8/76 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 贾玉霞 |
地址: | 310058 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 linux 内核 嵌入式 外设 移植 方法 | ||
1.一种基于Linux内核的嵌入式固件的外设移植方法,其特征在于,所述的外设移植包括硬件模型移植以及软件驱动移植;
所述的硬件模型移植为通过QEMU提供的固定接口进行特定的描述;
所述的软件驱动移植包括如下步骤:
(1)分析提供的基于Linux内核的嵌入式固件,从中提取Linux内核;
(2)通过模拟运行,解压缩预提取出来的Linux内核,得到解压缩后的Linux内核;
(3)静态分析解压缩后的Linux内核,识别出前向函数指针和后向函数指针;
(4)根据解压缩后的Linux内核提供的版本信息,生成适配于待移植的硬件模型的软件驱动;将所述的后向函数指针重写到适配于待移植的硬件模型的软件驱动中,得到待移植的软件驱动,并将待移植的软件驱动放置在Linux内核的不透明内存中;Linux内核利用前向函数指针间接调用存放于不透明内存中的驱动函数,待移植的软件驱动利用后向函数指针间接调用存放于内核中的特定函数;所述的不透明内存为Linux内核无法知晓的内存空间;
(5)进行移植操作,具体为:所述的Linux内核初始化软件驱动,初始化过程中,前向函数指针初始化存放于不透明内存中的待移植的软件驱动,待移植的软件驱动通过后向函数指针调用外设相关接口,与待移植的硬件模型进行交流,完成软件驱动移植;
当同时完成硬件模型移植和软件驱动移植,则成功模拟执行嵌入式固件,得到启动界面。
2.根据权利要求1所述的基于Linux内核的嵌入式固件的外设移植方法,其特征在于,所述步骤(5)的整个移植操作过程中,QEMU通过页表翻译模块将虚拟地址翻译为物理地址时,检测虚拟地址是否属于不透明内存,若为是,则使用用户修改的页表进行翻译;若为否,则使用内核原来的页表进行翻译;从而不影响Linux内核本身的内存分配机制。
3.根据权利要求1所述的基于Linux内核的嵌入式固件的外设移植方法,其特征在于,所述步骤(3)中,静态分析解压缩后的Linux内核,生成对应的指令集以及函数边界,通过三种不同的策略识别出前向函数指针和后向函数指针;所述的三种策略具体为:
策略一:当函数中含有特定的字符串或者警告信息,则唯一确定该函数;
策略二:通过函数与函数之间的关系,间接地确定函数指针;
策略三:对于根据策略一和策略二仍无法确定的函数,通过函数自身的特性来进一步缩小范围。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110097929.0/1.html,转载请声明来源钻瓜专利网。