[发明专利]一种数字信号处理器目标码加载方法在审
申请号: | 202111243656.2 | 申请日: | 2021-10-25 |
公开(公告)号: | CN113961345A | 公开(公告)日: | 2022-01-21 |
发明(设计)人: | 程胜;王明;邱化强;王龙;赵新鹏;王勋 | 申请(专利权)人: | 北京神舟航天软件技术股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京世誉鑫诚专利代理有限公司 11368 | 代理人: | 刘秀珍 |
地址: | 100094*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数字信号 处理器 目标 加载 方法 | ||
1.一种数字信号处理器目标码加载方法,其特征在于,所述加载方法包括:
解析数字信号处理器目标码文件的文件头信息,获取段头信息和程序执行入口地址;
遍历每个所述段头,识别出.cinit段,如果它的段属性为copy section,表示.cinit段需要复制,并确定加载模式为运行内存加载,否则加载模式为存储内存加载;
遍历每个所述段头,识别出可分配的连续内存块,并将各个段的状态标记为连续状态,如果所述段为连续内存块中的首个段,标记为“连续块头”,如果所述段为在连续内存块中该段连接在首个段之后,标记为“连续块体”,所有所述段的初始状态为“未决定”;
根据所述“连续块头”计算每个连续内存块的长度;
连续内存块长度=连续块头长度+属于该连续块头的所有连续块体的长度;
根据确定的加载模式有所区分:若是运行内存加载模式,则不将.cinit段的长度包含在所述连续内存块中;
根据所述内存块的长度为每一个连续内存块分配临时缓冲区,将每个所述段的内容从目标码中拷贝到对应的所述临时缓冲区;
获取虚拟机系统内存根地址;
根据所述连续内存块的长度为每个连续内存块创建虚拟内存区,将临时缓冲区中的内容拷贝到虚拟内存区;
根据该连续内存块中首个段的物理地址对虚拟内存区进行初始化,确保虚拟内存区与物理地址完成绑定;
将所有虚拟内存区挂接到系统内存根地址上。
2.根据权利要求1所述的一种数字信号处理器目标码加载方法,其特征在于,所述段头信息包括各个段的起始地址、大小和属性信息。
3.根据权利要求1所述的一种数字信号处理器目标码加载方法,其特征在于,所述遍历每个所述段头,识别出可分配的连续内存块,并将各个段的状态标记为连续状态,如果所述段为连续内存块中的首个段,标记为“连续块头”,如果所述段为在连续内存块中该段连接在首个段之后,标记为“连续块体”,所有所述段的初始状态为“未决定”具体包括:
如果当前段为.cinit段且加载模式为执行内存加载,将所述当前段标记为“连续块体”,继续解析下一个段;
如果当前段状态不是“未决定”,则不更改段的状态,继续解析下一个段;
如果当前段是目标文件中的最后一个段并且它不是“连续块体”,则将当前段标记为“连续块头”,遍历停止;
否则,则从当前段的下一个段开始遍历直到最后一个段,检查每个段的地址是否为当前段的连续地址,若是连续地址,将该段的状态标记为“连续块体”,为当前段找到所有的“连续块体”;
如果没有为当前段找到“连续块体”,则将当前段标记为“连续块头”。
4.根据权利要求1所述的一种数字信号处理器目标码加载方法,其特征在于,所述根据所述内存块的长度为每一个连续内存块分配临时缓冲区,将每个所述段的内容从目标码中拷贝到对应的所述临时缓冲区具体包括:
如果是运行内存加载,加载.cinit段中的变量初始值的拷贝到.bss段相应的地址;
如果是存储内存加载,将.cinit段的内容拷贝到对应的临时缓冲区中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京神舟航天软件技术股份有限公司,未经北京神舟航天软件技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111243656.2/1.html,转载请声明来源钻瓜专利网。