基于SOC芯片的GNU调试器的扩展
发布时间:2020-04-15 12:51
【摘要】: 随着我国嵌入式系统产业的不断发展,针对特定DSP芯片的应用开发在软件行业中越来越受到重视。现在嵌入式系统相关产业中,SOC(System on Chip)芯片扮演了一个非常重要的角色,SOC芯片以它的高性能,低成本,低功耗而著称,现今SOC芯片已经广泛应用于移动电话,数码相机,数字电视等相关数码产品中。大唐电信凭借着使用ZSP400核的SOC芯片COMIP取得了市场上的成功,现在大唐电信更以ZSP540核来加强其SOC芯片的DSP处理能力,使之能在3G无线领域有更广泛的用途。 为了配合公司更加快速地推广COMIP芯片,占有市场,我们需要尽快为新芯片配套可扩展的开发调试工具链。利用这套开发调试工具链,开发人员可以快速在新SOC芯片上开发相关的嵌入式应用。目前相关商业产品非常昂贵而且不利于扩展。因此,如何在新芯片的全新指令集上开发一套可扩展的,方便使用的嵌入式系统开发工具链,是我们需要解决的一个问题。 本论文正是针对上述问题,通过对GNU相关调试器代码的深入剖析、优化,并针对自主研发的SOC芯片进行调优,配合相关的工具链开发出一套功能强大,方便嵌入式系统使用的调试器。本文的重点就是如何把GDB工具链移植到我们新的SOC芯片上来,从而可以快速辅助公司进行新SOC芯片的推广。本文以大唐电信最新研发的SOC芯片COMIP为例,主要针对GNU系列工具并不支持的ZSP400/ZSP540全新的指令集进行移植和扩展,将GDB相关工具链的移植的各个部分进行了详细的论述。文中首先介绍了整个行业背景以及软件需求,分析了调试器的相关概念以及软件调试的一般原理,接着深入探讨了扩展以及移植GDB所做的一些工作,在这一部分中先介绍了GDB的代码架构,重点分析了移植相关的GDB的目标机架构的实现原理,其次讨论了移植GNU重要的相关库(BFD,OPCODES等)的步骤以及重点,并着重分析了利用这些相关库如何实现GDB需要的一些处理器相关重要功能,然后实现了整个扩展移植过程中的难点—基于全新处理器的指令集的指令级模拟器。接着论文分析了将GDB代码本身扩展到新ZSP处理器上的若干关键点,最终实现一个基于新芯片的可扩展的嵌入式系统调试器,最后对整个代码扩展移植工作进行了相关的总结。
【图文】:
第二章 GNU 调试器工作原理2.1相关基本概念2.1.1可执行文件由于 GNU 的 BFD 库支持不同的二进制格式,包括 ELF/COFF 等,本论文以 ELF文件为基础进行论述,ELF,即 executable and linkable format,相关格式定义可以在文件/usr/include/elf.h 中找到。ELF 文件格式的构成需要从 linking view(链接视图) 和 execution view (执行视图) 理解,分为多个 section (节) 以及多个 segment (段) 。如图 2-1 所示:
7图 2-2 readelf 分析出的信息如图 2-2 所示,这个带调试信息格式的二进制文件(ELF 文件)包括了多少个节(21 个),以及带调试信息的节有多少个(7 个),,这里还可以直观地看出每个节所在的地址,偏移以及大小等相关属性。这里.debug_abbrev,.debug_info,.debug.line,debug_frame,debug_loc,debug_pubnames,.debug_arranges 就是调试信息用的 section,GDB 会使用其中相关 section 来完成相关调试信息的整理,比如源代码以及二进制文件的对应关
【学位授予单位】:电子科技大学
【学位级别】:硕士
【学位授予年份】:2008
【分类号】:TP368.11
本文编号:2628572
【图文】:
第二章 GNU 调试器工作原理2.1相关基本概念2.1.1可执行文件由于 GNU 的 BFD 库支持不同的二进制格式,包括 ELF/COFF 等,本论文以 ELF文件为基础进行论述,ELF,即 executable and linkable format,相关格式定义可以在文件/usr/include/elf.h 中找到。ELF 文件格式的构成需要从 linking view(链接视图) 和 execution view (执行视图) 理解,分为多个 section (节) 以及多个 segment (段) 。如图 2-1 所示:
7图 2-2 readelf 分析出的信息如图 2-2 所示,这个带调试信息格式的二进制文件(ELF 文件)包括了多少个节(21 个),以及带调试信息的节有多少个(7 个),,这里还可以直观地看出每个节所在的地址,偏移以及大小等相关属性。这里.debug_abbrev,.debug_info,.debug.line,debug_frame,debug_loc,debug_pubnames,.debug_arranges 就是调试信息用的 section,GDB 会使用其中相关 section 来完成相关调试信息的整理,比如源代码以及二进制文件的对应关
【学位授予单位】:电子科技大学
【学位级别】:硕士
【学位授予年份】:2008
【分类号】:TP368.11
【参考文献】
相关期刊论文 前10条
1 高鹏,陈咏恩;AMBA总线及其应用[J];半导体技术;2002年09期
2 李乙成,周祖成,陈尚松;SoC片上总线技术的研究[J];半导体技术;2003年02期
3 张权伟;张敬安;张迎新;;在嵌入式系统开发中仿真软件的特殊应用[J];北京工商大学学报(自然科学版);2007年04期
4 李明;两种嵌入式软件仿真环境的分析与比较[J];电子产品世界;2003年13期
5 李剑 ,赵鹏程 ,汤建彬;32位ARM嵌入式处理器的调试技术[J];电子技术应用;2003年03期
6 宋凯;严丽平;甘岚;;ARM Linux在SkyEye上的移植[J];华东交通大学学报;2006年02期
7 郑浩,徐国治;ARM Linux中断处理实时性能分析[J];计算机工程与应用;2005年19期
8 钟汉如,王创生;嵌入式Linux的中断处理与实时调度的实现机制[J];计算机工程;2002年10期
9 屠征,谢康林;嵌入式实时操作系统中对时钟中断服务程序的改进[J];计算机工程;2003年06期
10 熊光泽,汪燕勤,罗蕾;32位微处理器嵌入式实时软件开发与调试技术[J];计算机应用;1995年04期
本文编号:2628572
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/2628572.html