CN101706735A - 一种嵌入式系统及其获取符号表的方法 - Google Patents

一种嵌入式系统及其获取符号表的方法 Download PDF

Info

Publication number
CN101706735A
CN101706735A CN200910246729A CN200910246729A CN101706735A CN 101706735 A CN101706735 A CN 101706735A CN 200910246729 A CN200910246729 A CN 200910246729A CN 200910246729 A CN200910246729 A CN 200910246729A CN 101706735 A CN101706735 A CN 101706735A
Authority
CN
China
Prior art keywords
file
embedded system
array
bin
analysis
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN200910246729A
Other languages
English (en)
Inventor
汪亚雷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN200910246729A priority Critical patent/CN101706735A/zh
Publication of CN101706735A publication Critical patent/CN101706735A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种嵌入式系统及其获取符号表的方法,包括:嵌入式系统进行编译时在存储器中预留空间,生成obj文件并根据该obj文件获得所有符号的数量m,根据所述数量m在所述预留空间中生成包含长度为m的空的数组的c文件;嵌入式系统编译所述c文件,并和所述obj文件链接生成bin文件;嵌入式系统分析所述bin文件,根据所述数组在存储器中存放位置,生成包含所有符号查找表信息的新的bin文件。应用本发明,解决了当前需要得到所有bin文件内的符号的地址的需求的问题,可以最大程度得到所有的符号,其中包括static的变量和函数。

Description

一种嵌入式系统及其获取符号表的方法
技术领域
本发明涉及嵌入式系统的技术领域,尤其涉及一种嵌入式系统及其获取符号表的方法。
背景技术
在通信领域中,大多数的产品是基于实时操作系统如VxWorks开发的,Vxworks系统提供了一种基于符号表查找函数等符号地址的debug的功能。在debug的过程中,Vxworks往往使用shell里运行调试函数、查看关键全局变量等方法,所以找到目标函数或变量在内存中的地址是debug的关键。为了实现这功能,Vxworks使用2步链接的方法,即第一步将程序需要的目标代码形成obj,接下来通过binutils的工具和tcl脚本提取obj里面的信息形成一个c文件,这个c文件包含一个结构体的数组D,表示了所有函数和全局变量的一个对应关系,然后把这个c文件编译,将这个结构体数组D和obj最终第二次链接形成最终bin文件,这样在bin里面的其他函数就可以通过查找D来得到需要的函数或全局变量的地址。这种方法存在局限性,它无法查询那种只能为当前文件中的函数使用static的变量和函数,因为D所在的c文件,无法包含具体实际的地址信息。因为obj链接时,只有全局变量或函数的地址信息才可以得以确定。对该c文件来说,只有全局函数和变量的符号可以进行extern操作来实现引用。所以默认Vxworks的shell在使用直接输入符号名查找符号的时候,是无法查到得到一个static变量或函数。
发明内容
本发明提供了一种嵌入式系统及其获取符号表的方法,解决了当前需要得到所有bin文件内的符号的地址的需求的问题。
为了解决上述问题,本发明提供了一种嵌入式系统获取符号表的方法,包括:
所述嵌入式系统进行编译时在存储器中预留空间,生成obj文件并根据该obj文件获得所有符号的数量m,根据所述数量m在所述预留空间中生成包含长度为m的空的数组的c文件;其中,m为大于0的整数;
所述嵌入式系统编译所述c文件,并和所述obj文件链接生成bin文件;
所述嵌入式系统分析所述bin文件,根据所述数组在存储器中存放位置,生成包含所有符号查找表信息的新的bin文件。
进一步地,上述方法还可包括,所述嵌入式系统进行编译时在存储器中预留空间,生成obj文件并根据该obj文件获得所有符号的数量m,根据所述数量m在所述预留空间中生成包含长度为m的空的数组的c文件,是指:
所述嵌入式系统进行编译时在存储器中预留长度为N的空间,根据目标代码生成obj文件;其中,N为大于0的整数;
所述嵌入式系统根据所述obj文件获得所有符号的数量m;判断若所述数量m大于N,则将预留空间的长度N的数值调整为m,根据所述数量m,生成包含长度为m的空的数组的c文件.
进一步地,上述方法还可包括,所述嵌入式系统判断若所述数量m不大于N,则根据所述数量m,生成包含长度为m的空的数组的c文件。
进一步地,上述方法还可包括,所述嵌入式系统分析所述bin文件,根据所述数组在存储器中存放位置,生成包含所有符号查找表信息的新的bin文件,是指:
所述嵌入式系统通过binutils工具分析所述bin文件,得到所有符号的名称和地址的对应关系,生成符合所述数组在存储器中存放顺序的dfile文件;
所述嵌入式系统通过binutils工具分析所述bin文件,得到所述数组在bin文件中的偏移位置,将所述dfile文件写入所述偏移位置,生成包含所有符号查找表信息的新的bin文件。
本发明还提供了一种嵌入式系统,包括编译模块和分析控制模块,其中,
所述编译模块,用于生成obj文件并根据该obj文件获得所有符号的数量m,根据所述数量m在所述分析控制模块预留的空间中生成包含长度为m的空的数组的c文件,编译所述c文件,并和所述obj文件链接生成bin文件并发送给所述分析控制模块;
所述分析控制模块,用于编译时在存储器中预留空间;接收所述编译模块发送的所述bin文件并进行分析,根据所述数组在存储器中存放位置,生成包含所有符号查找表信息的新的bin文件。
进一步地,上述嵌入式系统还可包括,所述分析控制模块在存储器中预留空间的长度为N,其中N为大于0的整数;
所述分析控制模块,还用于判断若所述数量m大于N,则将预留空间的长度N的数值调整为m。
进一步地,上述嵌入式系统还可包括,所述编译模块是根据目标代码生成所述obj文件。
进一步地,上述嵌入式系统还可包括,所述分析控制模块分析所述bin文件,根据所述数组在存储器中存放位置,生成包含所有符号查找表信息的新的bin文件,是指:
所述分析控制模块通过binutils工具分析所述bin文件,得到所有符号的名称和地址的对应关系,生成符合所述数组在存储器中存放顺序的dfile文件;通过binutils工具分析所述bin文件,得到所述数组在bin文件中的偏移位置,将所述dfile文件写入所述偏移位置,生成包含所有符号查找表信息的新的bin文件。
与现有技术相比,应用本发明,解决了当前需要得到所有bin文件内的符号的地址的需求的问题,可以最大程度得到所有的符号,其中包括static的变量和函数。
附图说明
图1是本发明的一种嵌入式系统获取符号表的方法的流程图;
图2是本发明的一种嵌入式系统的结构示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步说明。
本发明的主要构思是:不同于Vxworks的生成c文件的二次链接,采取第一次编译时预留空间生成程序,然后解析程序得到符号表再填充回程序的方式,可以最大程度得到所有的符号,其中包括static的变量和函数.
如图1所示,本发明的一种嵌入式系统获取符号表的方法,具体分为如下步骤:
步骤110、嵌入式系统进行编译时在存储器中预留长度为N的空间,根据目标代码生成obj文件;
其中,N为大于0的整数。
步骤120、根据所述obj文件获得所有符号的数量m;
其中,m为大于0的整数。
步骤130、嵌入式系统判断若所述数量m大于N,则执行步骤135;否则,执行步骤140;
步骤135、将预留空间的长度N的数值调整为m,执行步骤140;
步骤140、根据所述数量m,生成包含长度为m的空的数组D的c文件;
步骤150、编译所述c文件,并和所述obj文件链接生成bin文件;
步骤160、通过binutils工具分析所述bin文件,得到所有符号的名称和地址的对应关系,生成符合所述数组D在存储器中存放顺序的dfile文件;
步骤170、通过binutils工具分析所述bin文件,得到所述数组D在bin文件中的偏移位置,将dfile文件写入所述偏移位置,生成包含所有符号查找表信息的新的bin文件。
上述方法主要是预留空间,确定对应表结构体的数组D在最终文件bin中的位置,不需要再改变bin,把现有所有信息提取出来,填充回原来bin中的空数组,这样bin其他符号的地址也不会因为这个填充有任何改变,填充回去的表是包含所有符号的信息的表。
如图2所示,本发明的一种嵌入式系统,包括编译模块和分析控制模块,其中,
所述编译模块,用于生成obj文件并根据该obj文件获得所有符号的数量m,根据所述数量m在所述分析控制模块预留的空间中生成包含长度为m的空的数组的c文件,编译所述c文件,并和所述obj文件链接生成bin文件并发送给所述分析控制模块;
所述编译模块是根据目标代码生成所述obj文件。
所述分析控制模块,用于编译时在存储器中预留空间;接收所述编译模块发送的所述bin文件并进行分析,根据所述数组在存储器中存放位置,生成包含所有符号查找表信息的新的bin文件。
所述分析控制模块在存储器中预留空间的长度为N,其中N为大于0的整数;
所述分析控制模块,还用于判断若所述数量m大于N,则将预留空间的长度N的数值调整为m。
所述分析控制模块分析所述bin文件,根据所述数组在存储器中存放位置,生成包含所有符号查找表信息的新的bin文件,是指:
所述分析控制模块通过binutils工具分析所述bin文件,得到所有符号的名称和地址的对应关系,生成符合所述数组在存储器中存放顺序的dfile文件;通过binutils工具分析所述bin文件,得到所述数组在bin文件中的偏移位置,将所述dfile文件写入所述偏移位置,生成包含所有符号查找表信息的新的bin文件。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内.因此,本发明的保护范围应该以权利要求的保护范围为准.

Claims (8)

1.一种嵌入式系统获取符号表的方法,其特征在于,包括:
所述嵌入式系统进行编译时在存储器中预留空间,生成obj文件并根据该obj文件获得所有符号的数量m,根据所述数量m在所述预留空间中生成包含长度为m的空的数组的c文件;其中,m为大于0的整数;
所述嵌入式系统编译所述c文件,并和所述obj文件链接生成bin文件;
所述嵌入式系统分析所述bin文件,根据所述数组在存储器中存放位置,生成包含所有符号查找表信息的新的bin文件。
2.如权利要求1所述的方法,其特征在于,
所述嵌入式系统进行编译时在存储器中预留空间,生成obj文件并根据该obj文件获得所有符号的数量m,根据所述数量m在所述预留空间中生成包含长度为m的空的数组的c文件,是指:
所述嵌入式系统进行编译时在存储器中预留长度为N的空间,根据目标代码生成obj文件;其中,N为大于0的整数;
所述嵌入式系统根据所述obj文件获得所有符号的数量m;判断若所述数量m大于N,则将预留空间的长度N的数值调整为m,根据所述数量m,生成包含长度为m的空的数组的c文件。
3.如权利要求2所述的方法,其特征在于,
所述嵌入式系统判断若所述数量m不大于N,则根据所述数量m,生成包含长度为m的空的数组的c文件。
4.如权利要求1所述的方法,其特征在于,
所述嵌入式系统分析所述bin文件,根据所述数组在存储器中存放位置,生成包含所有符号查找表信息的新的bin文件,是指:
所述嵌入式系统通过binutils工具分析所述bin文件,得到所有符号的名称和地址的对应关系,生成符合所述数组在存储器中存放顺序的dfile文件;
所述嵌入式系统通过binutils工具分析所述bin文件,得到所述数组在bin文件中的偏移位置,将所述dfile文件写入所述偏移位置,生成包含所有符号查找表信息的新的bin文件。
5.一种嵌入式系统,其特征在于,
包括编译模块和分析控制模块,其中,
所述编译模块,用于生成obj文件并根据该obj文件获得所有符号的数量m,根据所述数量m在所述分析控制模块预留的空间中生成包含长度为m的空的数组的c文件,编译所述c文件,并和所述obj文件链接生成bin文件并发送给所述分析控制模块;
所述分析控制模块,用于编译时在存储器中预留空间;接收所述编译模块发送的所述bin文件并进行分析,根据所述数组在存储器中存放位置,生成包含所有符号查找表信息的新的bin文件。
6.如权利要求5所述的嵌入式系统,其特征在于,
所述分析控制模块在存储器中预留空间的长度为N,其中N为大于0的整数;
所述分析控制模块,还用于判断若所述数量m大于N,则将预留空间的长度N的数值调整为m。
7.如权利要求5所述的嵌入式系统,其特征在于,
所述编译模块是根据目标代码生成所述obj文件。
8.如权利要求5所述的嵌入式系统,其特征在于,
所述分析控制模块分析所述bin文件,根据所述数组在存储器中存放位置,生成包含所有符号查找表信息的新的bin文件,是指:
所述分析控制模块通过binutils工具分析所述bin文件,得到所有符号的名称和地址的对应关系,生成符合所述数组在存储器中存放顺序的dfile文件;通过binutils工具分析所述bin文件,得到所述数组在bin文件中的偏移位置,将所述dfile文件写入所述偏移位置,生成包含所有符号查找表信息的新的bin文件。
CN200910246729A 2009-11-26 2009-11-26 一种嵌入式系统及其获取符号表的方法 Pending CN101706735A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910246729A CN101706735A (zh) 2009-11-26 2009-11-26 一种嵌入式系统及其获取符号表的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910246729A CN101706735A (zh) 2009-11-26 2009-11-26 一种嵌入式系统及其获取符号表的方法

Publications (1)

Publication Number Publication Date
CN101706735A true CN101706735A (zh) 2010-05-12

Family

ID=42376961

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910246729A Pending CN101706735A (zh) 2009-11-26 2009-11-26 一种嵌入式系统及其获取符号表的方法

Country Status (1)

Country Link
CN (1) CN101706735A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104142846A (zh) * 2014-08-06 2014-11-12 汉柏科技有限公司 一种程序脚本编译方法和装置
CN105700861A (zh) * 2014-11-27 2016-06-22 迈普通信技术股份有限公司 一种嵌入式程序运行符号表的生成方法及装置
CN103677851B (zh) * 2013-12-27 2016-07-27 瑞斯康达科技发展股份有限公司 一种生成嵌入式程序运行符号表的方法和装置
CN107193604A (zh) * 2017-05-25 2017-09-22 深圳震有科技股份有限公司 嵌入式系统加载符号表的方法、存储介质及终端
CN111025127A (zh) * 2019-12-05 2020-04-17 上海御渡半导体科技有限公司 一种Pattern静态编译链接的方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103677851B (zh) * 2013-12-27 2016-07-27 瑞斯康达科技发展股份有限公司 一种生成嵌入式程序运行符号表的方法和装置
CN104142846A (zh) * 2014-08-06 2014-11-12 汉柏科技有限公司 一种程序脚本编译方法和装置
CN105700861A (zh) * 2014-11-27 2016-06-22 迈普通信技术股份有限公司 一种嵌入式程序运行符号表的生成方法及装置
CN107193604A (zh) * 2017-05-25 2017-09-22 深圳震有科技股份有限公司 嵌入式系统加载符号表的方法、存储介质及终端
CN111025127A (zh) * 2019-12-05 2020-04-17 上海御渡半导体科技有限公司 一种Pattern静态编译链接的方法
CN111025127B (zh) * 2019-12-05 2022-09-23 上海御渡半导体科技有限公司 一种Pattern静态编译链接的方法

Similar Documents

Publication Publication Date Title
CN101706735A (zh) 一种嵌入式系统及其获取符号表的方法
CN104156314B (zh) 一种应用于测试系统的代码重用方法
CN107918666A (zh) 一种区块链上的数据同步方法和系统
CN101840373B (zh) 数据操作方法及装置
CN102722432A (zh) 追踪内存访问的方法和装置
CN102541521A (zh) 基于结构化查询语言的操作指令自动生成装置及方法
CN108415708A (zh) 应用程序安装包大小的处理方法、装置、设备和存储介质
CN109491884A (zh) 代码性能检测方法、装置、计算机设备和介质
CN110489630A (zh) 资源数据的处理方法、装置、计算机设备和存储介质
CN104270424A (zh) 一种数据库同步方法、服务器及系统
CN106100919A (zh) 一种fc总线测试系统及fc总线测试方法
CN103902677A (zh) 一种跨平台的数据库访问方法
CN109254964A (zh) 地址标准化方法、装置、计算机设备和存储介质
CN110109658A (zh) 一种基于形式化模型的ros代码生成器及代码生成方法
CN103235757B (zh) 基于自动化造数对输入域测试对象进行测试的装置和方法
CN102867023B (zh) 一种栅格数据的存储、读取方法及装置
Bogdanov et al. Energy transition for Japan: Pathways towards a 100% renewable energy system in 2050
CN103902449A (zh) 一种用于生成搜索引擎相关性排序测试用例的方法与设备
CN110334141A (zh) 数据转换的方法、装置、计算机设备和存储介质
CN101295245B (zh) 一种基于模型信息的智能提取方法
CN102842088A (zh) 智能商业选址系统
CN101216769A (zh) 层次化系统描述语言SmartC到C代码的自动转换方法
CN102662807A (zh) 一种Java卡栈性能测试应用程序及其框架的制作方法
CN103049313A (zh) 用于浏览器的标签关闭装置和方法
CN103294053A (zh) 一种汽车k线诊断系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned

Effective date of abandoning: 20100512

C20 Patent right or utility model deemed to be abandoned or is abandoned