1 / 18

8.3 μClinux 内核调试实验

1. 2. 3. 4. 5. 8.3 μClinux 内核调试实验. 实验目的. 实验设备. 实验内容. 实验原理. 实验操作步骤. 一、实验目的. 了解和掌握 μClinux 的内核调试方法。. 二、实验设备. 硬件: Embest S3CEV40 实验平台, Embest 仿真器, PC 机 软件: Embest IDE 2003 , Windows 98/2000/NT/XP 下的 cygwin 开发环境. 三、实验内容. 使用 Embest IDE 软件进行内核调试,并将内核在运行过程中的调试信息打印到终端。. 四、实验原理.

carsyn
Download Presentation

8.3 μClinux 内核调试实验

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 1 2 3 4 5 8.3 μClinux 内核调试实验 实验目的 实验设备 实验内容 实验原理 实验操作步骤

  2. 一、实验目的 • 了解和掌握μClinux的内核调试方法。

  3. 二、实验设备 • 硬件:Embest S3CEV40实验平台, Embest仿真器,PC机 • 软件:Embest IDE 2003, Windows 98/2000/NT/XP下的cygwin开发环境

  4. 三、实验内容 • 使用Embest IDE软件进行内核调试,并将内核在运行过程中的调试信息打印到终端。

  5. 四、实验原理 • μClinux内核启动过程 Flash本地运行方式:内核的未经压缩的可执行映像固化在Flash,系统启动时内核从Flash中开始逐句执行。 压缩内核加载方式:内核的压缩映像固化在Flash上,系统启动时由附加在压缩映像前的解压复制程序读取压缩映像,在内存中解压后执行,这种方式相对复杂,但是运行速度更快(RAM的存取速率要比Flash高)。

  6. 四、实验原理 • Flash本地运行方式: • 内核的启动包括特定体系结构设置和μClinux系统初始化两步 • 内核启动的入口文件是head-armv.s。 • head-armv.s实现特定体系结构设置 • start_kernel实现 μClinux系统初始化

  7. 四、实验原理 • head-armv.s的基本运行过程: • 配置系统寄存器; • 初始化ROM、RAM以及总线控制寄存器等; • 设置堆栈指针,将bss段清零; • 修改pc指针,跳转到linux-2.4.x/init/main.c中的start_kernel函数,开始μClinux系统的初始化。

  8. 四、实验原理 • 配置内核在RAM中执行 • 生成内核映像文件 • 设置Embest IDE • 调试内核 • Embest IDE调试内核 进行内核调试时,通常使用未经压缩在RAM中执行的内核映像

  9. 四、实验原理 • 1、在内核定制Customize Kernel Settings中,系统类型System Type中选择内核执行方式Kernel executes from为RAM。 • 2、在链接脚本文件linux-2.4.x/arch/armnommu/vmlinux.lds中设置内核运行起始地址为0x8000。 • 配置内核在RAM中执行

  10. 四、实验原理 • 设置 Embest IDE • 在调试设置中,设置调试信息文件为 linux-2.4.x/linux,下载文件为image.ram,下载地址为0x8000。

  11. 四、实验原理 • 依次执行Debug菜单中的Remote Connect和Download命令,反汇编窗口将显示μClinux内核的汇编执行代码,此时可以通过IDE使用断点设置、单步执行、变量监视、寄存器查看修改等方法对μClinux内核进行调试。 • 调试内核

  12. 四、实验原理 • start_kernel()函数,在执行完其中的console_init()函数之前,串行口终端不会输出任何信息,因此可以通过串行口终端输出console_init()函数后执行信息。 • 串口打印信息调试内核

  13. 四、实验原理 • 第一部分的信息调用函数printk()输出,该函数在linux-2.4.x/kernel/printk.c中。 • 第二部分信息是在文件系统装载以后,执行/etc/rc文件里的系统命令的打印结果,这些打印信息是由user/sash/文件夹下的sash.c文件中包含的printf("Command: %s\n",buf)命令产生。 • 超级终端显示的启动信息分两部分

  14. 五、实验操作步骤 • 1、准备实验环境,使用Embest S3CEV40目标板附带的串口线连接目标板上的UART0和PC机的串口,使用Embest S3CEV40目标板附带的网线连接目标板上的ETHERNET和PC机的网口。 • 2、在PC机上运行Windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。

  15. 五、实验操作步骤 • 3、在cygwin下修改内核,如在start_kernel函数里的mem_init函数前加入一句“printk(“This is mem_init............................./n”);”。编译出μClinux内核,进入μClinux目录下的linux-2.4.x目录,对elf格式的linux文件执行以下命令,生成可执行文件image.ram: arm-elf-objcopy -O binary -R .note -R .comment -S linux image.ram

  16. 五、实验操作步骤 • 对linux文件执行以下命令,生成μClinux内核的反编译文件: arm-elf-objdump –S linux | tee linux.dump

  17. 五、实验操作步骤 • 4、Embest仿真器连接目标板Embest S3CEV40,使用Embest IDE通过Embest仿真器与目标板建立联系。 • 将image.ram放到D盘根目录(或其他目录)下,因为μClinux内核从RAM地址0x8000处开始执行,所以Embest仿真器下载的起始地址定为0x8000。

  18. 五、实验操作步骤 • 将image.ram文件下载到目标板RAM中。在Embest IDE的Toggle Output框里输入以下下载命令: download d:\image.ram 0x8000 5、Embest IDE的Disassembly框里出现的码就是μClinux内核的汇编执行代码。 6、用Embest IDE在0x8000地址处运行内核。

More Related