首先需要明确的是,内核镜像在被解压之后执行,是执行哪段代码,这是个重要的问题,平时在编译生成应用程序或内核模块时,我们无需考虑链接的具体细节,如代码和数据放在哪里、代码执行入口在哪等等,但在编译生成内核镜像时就不能不考虑这些了,对于arm架构,下面是它的编译内核时的arm交叉链接器命令:arm-linux-ld -EL -p --no-undefined -X --build-id -ovmlinux -T arch/arm/kernel/vmlinux.lds。
常常在没有源文件,又需要改动程序的情况下需要反汇编,或者又叫代码逆向工程,这是一门专业性非常强的技术,反出来的汇编需要百分百的准确,出现一个字节的错误那么反出来的汇编文件就毫无意义,反汇编之后的汇编文件工程师还必须能够看的懂,这就需要工程师对该系列的单片机非常的精通,并且对汇编语言,逆向思维,电子技术等都有非常扎实的功力。
上篇回顾:一文Linux内核调试方法(一)KGDBkgdb提供了一种使用 gdb调试 Linux 内核的机制。使用KGDB可以象调试普通的应用程序那样,在内核中进行设置断点、检查变量值、单步跟踪程序运行等操作。
由于android开发的需要与systrace的普及,现在大家在进行性能与功耗分析时候,经常会用到systrace跟pefetto. 而systrace就是基于内核的event tracing来实现的。
首先,“嵌入式”这是个概念,准确的定义没有,各个书上都有各自的定义。但是主要思想是一样的,就是相比较PC机这种通用系统来说,嵌入式系统是个专用系统,结构精简,在硬件和软件上都只保留需要的部分,而将不需要的部分裁去。