论文部分内容阅读
生活中嵌入式系统的应用无处不在,从通信、消费电子产品到汽车电子、智能机器、工业控制和卫星导航,其使用数量已经大大超过了通用计算机,嵌入式设备以其低功耗、可靠性高、面向特定应用和可按需灵活定制等优点而获得广泛应用。嵌入式多核技术的出现进一步增强了嵌入式系统的处理能力,但也随之带来针对多核系统进行程序开发的困难。目前,多核调试器主要基于硬件实现。传统的交叉调试器不仅体积庞大,而且不能控制程序的调度,程序的调度运行都由操作系统来完成,不能支持多核调试。硬件多核调试器不仅价格高而且不具有通用性,嵌入式设备上的运行的操作系统却具有比较普遍的通用性,所以开发软件多核调试工具成为了人们关注的焦点。本文首先深入研究了arm-linux系统的调试支持机制、交叉调试器的实现原理,参考并总结了硬件多核调试技术的特点。在此基础上,进一步改进交叉调试器的设计,实现了具有基本调试功能的多核交叉调试器。该调试器实现了传统的基本调试功能,如设置断点、单步运行、读写变量等,并增加了部分多核调试功能,主要有:实时获取运行进程的内核id、可选择运行程序的内核、对指定核发送调试命令、控制各个内核的执行状态和实时获取每个核上当前运行程序的上下文。通过上述功能,能让程序开发者更深入的了解程序在目标机的运行状态,更好的定位程序中的各种错误和异常。为此,本文选择全志A33 ARM-Cortex-A7目标板,在基于arm-linux系统下设计了该调试器,该调试工具在设计上相对传统交叉调试器进行了一些改进,比如将断点信息保存在宿主机端等,并对整体架构进行了重新设计,使整个系统变的更加精简。文中详细分析并实现了调试器的各个功能模块,如:符号解析、异常处理等,使调试器的实现原理一目了然,通过设置进程或线程的cpu亲和性、核间中断和绑定指定进程或线程到特定内核运行等方式实现了使指定核执行调试命令的功能,能实时查看指定核的状态,能够比较全面的了解整个系统的运行情况。接着对调试代理进行改进,使得多宿主机远程共享目标机调试成为可能。最后,经过测试,新设计的软件多核交叉调试工具比较好的支持了远程多核交叉调试的需求,充分的利用了多核cpu的处理能力,提高了多核程序的开发效率。