欢迎来到天天文库
浏览记录
ID:14129520
大小:46.00 KB
页数:4页
时间:2018-07-26
《实验四.uclinux内核调试试验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Uclinux内核调试试验一、uClinux内核启动过程Bootloader完成系统初始化工作后,将运行控制权交给uClinux内核。根据内核是否压缩以及内核是否在本地执行,uClinux通常有以下两种可选的启动方式:1、Flash本地运行方式:内核的未经压缩的可执行映像固化在Flash,系统启动时内核在Flash中开始逐句执行。2、压缩内核加载方式:内核的压缩映像固化在Flash上,系统启动时由附加在压缩映像前的解压复制程序读取压缩映像,在内存中解压后执行,这种方式相对复杂,但是运行速度更快(RAM的存取速率要比Flash高)。本节我们介绍内核的Fl
2、ash本地运行方式,压缩内核的启动方式在下节中介绍。本地运行时内核的启动包括特定体系结构设置和uClinux系统初始化两步,内核启动的入口文件是head-armv.s。(1)、特定体系结构设置本过程由汇编文件head-armv.s完成。Head-armv.s文件位于linux-2.4.x/arch/armnommu/kernel/目录下,是BootLoader将控制权交给内核后执行的第一个程序。下面是head-armv.s的基本运行过程:1)配置系统寄存器;2)初始化ROM、RAM以及总线控制寄存器等;3)设置堆栈指针,将bss段清零;4)修改pc指针
3、,跳转到linux-2.4.x/init/main.c中的start_kernel函数,开始uClinux系统的初始化。(2)、uClinux系统初始化程序跳转到start_kernel函数执行,在这里完成处理器结构的初始化、中断的初始化、进程相关的初始化以及内存初始化等重要工作。二、压缩内核的启动过程压缩内核启动时由附加在压缩内核映像前的解压复制程序将内核的压缩映像解压后复制到RAM中,然后跳转到内核的真正入口head-armv.s开始执行。压缩内核的启动是在上节所述的内核的正常启动过程前增加了一个解压复制过程。1、解压复制本过程由head.s完成。
4、head.s文件位于linux-2.4.x/arch/armnommu/boot/compressed/目录,压缩内核启动时是BootLoader跳转后执行的第一个内核程序。下面是head.s的基本运行过程:1)配置系统寄存器;2)初始化ROM、RAM以及总线控制寄存器等;3)对Flash和SDRAM进行地址映射,将内核的映像文件从Flash拷贝到SDRAM;4)设置堆栈指针,将bss段清零,将来执行c语言程序时要用到;585)调用Misc.c中的解压缩内核函数decompress_kernel(),对拷贝到SDRAM的内核映像文件进行解压缩;6)执行
5、调用内核函数call_kernel,跳转到解压后uClinux内核入口。2、特定体系结构设置3、uClinux系统初始化三、EmbestIDE调试内核uClinux内核启动进入start_kernel()函数,在执行完其中的console_init()函数之前,串行口终端不会输出任何信息,因此在该函数之前内核的调试,必须使用仿真器,如果不具备开发条件,可以采用辅助的调试手段,如通过点亮LED来指示程序运行到那一步。串口打印信息调试内核uClinux内核执行完console_init()函数后,可以通过串行口终端输出信息。首先使用串口线连接EmbestS
6、3CEV40目标板附的UART0和PC机的串口COM1;然后运行windows附带的超级终端串口通信程序,设置波特率115200、1位停止位、无校验位、无硬件流控制。目标板通电运行后,在超级终端程序窗口将显示uClinux启动信息,启动信息分两部分,第一部分的信息调用函数printk()输出,该函数在linux-2.4.x/kernel/printk.c中。输出信息如下:Linuxversion2.4.17-uc1(root@yangling)(gccversion2.95.320010315(release)(ColdFirepatches-2001
7、0318fromhttp://fiddes.net/coldfire/)(uClinuxXIPandsharedlibpatchesfromhttp://www.snapgear.com/))#167五1月1617:04:55CST2004Kernelcommandline:root=/dev/rom0Processor:SamsungS3C44B0revision1Architecture:S3CEV40Onnode0totalpages:4096zone(0):0pages.zone(1):4096pages.zone(2):0pages.Kern
8、elcommandline:root=/dev/rom0Calibratingdelayloo
此文档下载收益归作者所有