一种嵌入式开发过程中的资源分布统计方法技术

技术编号:39318273 阅读:12 留言:0更新日期:2023-11-12 16:00
本发明专利技术公开了一种嵌入式开发过程中的资源分布统计方法,包括步骤:步骤:用户导入对应平台的map文件后,map解析工具软件调用对应的解析函数,通过Python的re模块对对应格式的map文件做解析,提取所需的内容;软件工具提取内容后,通过Qt的GUI编程将解析内容显示在图形界面上。本发明专利技术在使用时,用户只需导入对应嵌入式开发平台的map文件,即可自动解析其中内容,能将不同程序段内的文件、变量、常量的内存占用情况降序排序,显示在界面表格中,使开发人员方便快捷地了解当前程序内存资源分配情况。情况。情况。

【技术实现步骤摘要】
一种嵌入式开发过程中的资源分布统计方法


[0001]本专利技术涉及嵌入式开发领域,具体为一种嵌入式开发过程中的资源分布统计方法。

技术介绍

[0002]在嵌入式编程中,map文件是一种以文本形式描述程序源代码、数据、函数等在内存中布局的文件。map文件是在链接程序(Linker)将可执行文件从目标文件生成之后产生的文件,可以用于分析程序的执行和优化可执行文件的生成。Map文件通常包含如下重要内容:
[0003]1.包含每个文件的内存布局:Map文件会显示程序中每个源文件的地址范围以及该文件中每个区段在内存中的位置。
[0004]2.显示函数、变量和宏定义的位置:Map文件可以帮助我们查找在程序中哪些函数被放置在内存中的哪个位置,以及全局变量和宏定义的内存地址。
[0005]3.显示内存使用情况:map文件可以显示程序中数据段、栈段、堆段等不同内存段的使用情况,帮助我们了解程序中内存的使用情况并进行内存的优化。通过分析Map文件,我们可以更好地了解程序的内存使用情况和执行情况,并针对性地进行程序优化,提高程序的性能和稳定性。
[0006]然而,这种链接器生成的map文件内容极其繁多,长度长达上万行,不便阅读,开发人员如需对当前程序内存分配进行调整,需要花费很长的检索时间。
[0007]此为嵌入式开发过程中经常遇到的问题,因此,针对现有技术中的上述缺陷,提供一种解析map内存资源映射文件的工具及方法,是非常有必要的。

技术实现思路

[0008]本专利技术的目的在于提供一种嵌入式开发过程中的资源分布统计方法,以解决上述
技术介绍
中提出的问题。
[0009]为实现上述目的,本专利技术提供如下技术方案:一种嵌入式开发过程中的资源分布统计方法,包括步骤:
[0010]S1:用户导入对应平台的map文件后,map解析工具软件调用对应的解析函数,通过Python的re模块对对应格式的map文件做解析,提取所需的内容;
[0011]S2:软件工具提取内容后,通过Qt的GUI编程将解析内容显示在图形界面上。
[0012]优选的,S1中提取内容包括:
[0013]程序段,如.text文本段(程序源代码编译后的机器指令)、.data数据段即显式初始化非0的全局变量、.bss零初始化段等的内存大小;
[0014]每个程序段内的.o/.obj可重定位二进制文件的内存大小、起始地址、结束地址,并在每个程序段内按内存大小降序排序;
[0015]每个.o/.obj可重定位二进制文件内的内存单元的的内存大小、起始地址、结束地
址,并在每个.o/.obj文件内按内存大小降序排序。
[0016]优选的,map解析工具软件包括UI界面模块以及解析函数模块,其中UI界面模块包括多个选择单元,即选择map文件平台单元、单元内存排序单元以及界面显示单元,其中选择map文件平台单元与解析函数模块单元关联,解析函数模块内存储有英飞凌Tasking编译器、瑞萨CS+编译器、恩智浦Code Warrior编译器,选择map文件平台单元用于选择编译器,并基于编译器提取内存单元名、内存占用,并由单元内存排序单元进行排序。
[0017]与现有技术相比,本专利技术的有益效果是:
[0018]1、本专利技术提供一种解析map内存资源映射文件的工具及方法,用户只需导入对应嵌入式开发平台的map文件,即可自动解析其中内容,能将不同程序段内的文件、变量、常量的内存占用情况降序排序,显示在界面表格中,使开发人员方便快捷地了解当前程序内存资源分配情况。
[0019]2、本专利技术采用Python解析map文本技术,根据用户导入的特定平台的map内存资源映射文件,即可解析出内存资源使用情况,适用平台广、用户操作简便,显示界面结构清晰。另一方面,由于每个嵌入式平台的链接器生成的map文件结构固定,对于本专利技术目前支持的三个平台可以永久复用,对于新平台,确定了对应的解析方案后可以永久复用。
附图说明
[0020]图1为本专利技术的工具架构图;
[0021]图2为本专利技术实施例中解析内容概览图;
[0022]图3为本专利技术实施例中展开某一程序段后显示的目标文件内存情况及起始、结束地址示意图;
[0023]图4为本专利技术实施例中选择map文件平台示意图;
[0024]图5为本专利技术实施例中导入文件后解析显示的程序段内存大小示意图;
[0025]图6为本专利技术实施例中嵌入式程序经英飞凌编译平台生成的map文件;
[0026]图7为本专利技术实施例中读取英飞凌编译平台map文件后重组结构化数据示意图;
[0027]图8为本专利技术实施例中读取英飞凌编译平台map文件的解析函数示意图;
[0028]图9为本专利技术实施例中展开解析后的格式化数据显示在UI界面;
[0029]图10为本专利技术实施例中显示在UI界面的内存信息图。
具体实施方式
[0030]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0031]请参阅图1

5,本专利技术使用了Python解析map文本技术,针对上述三个平台的链接器(英飞凌Tasking编译器、瑞萨CS+编译器和恩智浦Code Warrior编译器)生成的map文件都做了解析,具体执行方案为:
[0032]S1:用户导入对应平台的map文件后,软件调用对应的解析函数,通过Python的re模块对对应格式的map文件做解析,提取所需的内容,内容包括:
[0033]程序段,如.text文本段(程序源代码编译后的机器指令)、.data数据段(显式初始化非0的全局变量)、.bss零初始化段等的内存大小;
[0034]每个程序段内的.o/.obj可重定位二进制文件的内存大小、起始地址、结束地址,并在每个程序段内按内存大小降序排序;
[0035](3)每个.o/.obj可重定位二进制文件内的内存单元的的内存大小、起始地址、结束地址,并在每个.o/.obj文件内按内存大小降序排序;
[0036]S2:软件工具提取到上述内容后,通过Qt的GUI编程将解析内容显示在图形界面上。
[0037]下面以英飞凌平台作为例子,详细阐述读取map文件、解析数据、展示数据的过程。
[0038]第一步:读取文件,解析数据:
[0039]在前期编写特定map文件的解析函数时,需要阅读此类map文件内容的构成方式。为了方便阅读者理解,选用结构较为简单的英飞凌编译平台生成的map文件,如图6是某个嵌入式程序经英飞凌编译平台生成的map文件的部分内容。
[0040]可以观察到第一列是.o文件名,第二列是以“程序块

文件名
...

【技术保护点】

【技术特征摘要】
1.一种嵌入式开发过程中的资源分布统计方法,其特征在于,包括步骤:S1:用户导入对应平台的map文件后,map解析工具软件调用对应的解析函数,通过Python的re模块对对应格式的map文件做解析,提取所需的内容;S2:软件工具提取内容后,通过Qt的GUI编程将解析内容显示在图形界面上。2.根据权利要求1所述的一种嵌入式开发过程中的资源分布统计方法,其特征在于:所述S1中提取内容包括:程序段,如.text文本段(程序源代码编译后的机器指令)、.data数据段即显式初始化非0的全局变量、.bss零初始化段等的内存大小;每个程序段内的.o/.obj可重定位二进制文件的内存大小、起始地址、结束地址,并在每个程序段内按内存大小降序排...

【专利技术属性】
技术研发人员:金思宇薛青云张卜刘子郡
申请(专利权)人:上海智驾汽车科技有限公司
类型:发明
国别省市:

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

1