实验四.uclinux内核调试试验

上传人:kms****20 文档编号:40278394 上传时间:2018-05-25 格式:DOC 页数:4 大小:46KB
返回 下载 相关 举报
实验四.uclinux内核调试试验_第1页
第1页 / 共4页
实验四.uclinux内核调试试验_第2页
第2页 / 共4页
实验四.uclinux内核调试试验_第3页
第3页 / 共4页
实验四.uclinux内核调试试验_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验四.uclinux内核调试试验》由会员分享,可在线阅读,更多相关《实验四.uclinux内核调试试验(4页珍藏版)》请在金锄头文库上搜索。

1、Uclinux 内核调试试验 一、uClinux 内核启动过程 Bootloader 完成系统初始化工作后,将运行控制权交给 uClinux 内核。根据内核是否压缩以 及内核是否在本地执行,uClinux 通常有以下两种可选的启动方式: 1、 Flash 本地运行方式:内核的未经压缩的可执行映像固化在 Flash,系统启动时内核在 Flash 中开始逐句执行。 2、压缩内核加载方式:内核的压缩映像固化在 Flash 上,系统启动时由附加在压缩映像前 的解压复制程序读取压缩映像,在内存中解压后执行,这种方式相对复杂,但是运行速度 更快(RAM 的存取速率要比 Flash 高) 。 本节我们介绍内

2、核的 Flash 本地运行方式,压缩内核的启动方式在下节中介绍。 本地运行时内核的启动包括特定体系结构设置和 uClinux 系统初始化两步,内核启动的入 口文件是 head-armv.s。 (1)、 特定体系结构设置 本过程由汇编文件 head-armv.s 完成。 Head-armv.s 文件位于 linux-2.4.x/arch/armnommu/kernel/目录下,是 Boot Loader 将控制权交 给内核后执行的第一个程序。下面是 head-armv.s 的基本运行过程: 1) 配置系统寄存器; 2) 初始化 ROM、RAM 以及总线控制寄存器等; 3) 设置堆栈指针,将 bs

3、s 段清零; 4) 修改 pc 指针,跳转到 linux-2.4.x/init/main.c 中的 start_kernel 函数,开始 uClinux 系统 的初始化。 (2)、 uClinux 系统初始化 程序跳转到 start_kernel 函数执行,在这里完成处理器结构的初始化、中断的初始化、进程 相关的初始化以及内存初始化等重要工作。 二、压缩内核的启动过程 压缩内核启动时由附加在压缩内核映像前的解压复制程序将内核的压缩映像解压后复制到 RAM 中,然后跳转到内核的真正入口 head-armv.s 开始执行。压缩内核的启动是在上节所 述的内核的正常启动过程前增加了一个解压复制过程。

4、1、解压复制 本过程由 head.s 完成。 head.s 文件位于 linux-2.4.x/arch/armnommu/boot/compressed/目录,压缩内核启动时是 Boot Loader 跳转后执行的第一个内核程序。下面是 head.s 的基本运行过程: 1) 配置系统寄存器; 2) 初始化 ROM、RAM 以及总线控制寄存器等; 3) 对 Flash 和 SDRAM 进行地址映射,将内核的映像文件从 Flash 拷贝到 SDRAM; 4) 设置堆栈指针,将 bss 段清零,将来执行 c 语言程序时要用到; 58 5) 调用 Misc.c 中的解压缩内核函数 decompress

5、_kernel() ,对拷贝到 SDRAM 的内核映 像文件进行解压缩; 6) 执行调用内核函数 call_kernel,跳转到解压后 uClinux 内核入口。 2、特定体系结构设置 3、uClinux 系统初始化 三、 Embest IDE 调试内核 uClinux 内核启动进入 start_kernel()函数,在执行完其中的 console_init()函数之前, 串行口终端不会输出任何信息,因此在该函数之前内核的调试,必须使用仿真器,如果不具备开发条件,可以采用辅助的调试手段,如通过点亮 LED 来指示程序运行到那一步。 串口打印信息调试内核 uClinux 内核执行完 consol

6、e_init()函数后,可以通过串行口终端输出信息。 首先使用串口线连接 Embest S3CEV40 目标板附的 UART0 和 PC 机的串口 COM1;然后运 行 windows 附带的超级终端串口通信程序,设置波特率 115200、1 位停止位、无校验位、 无硬件流控制。 目标板通电运行后,在超级终端程序窗口将显示 uClinux 启动信息,启动信息分两部分, 第一部分的信息调用函数 printk()输出,该函数在 linux-2.4.x/kernel/printk.c 中。输出信 息如下: Linux version 2.4.17-uc1 (rootyangling) (gcc ve

7、rsion 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http:/ XIP and shared lib patches from http:/ #167 五 1 月 16 17:04:55 CST 2004 Kernel command line:root=/dev/rom0 Processor: Samsung S3C44B0 revision 1 Architecture: S3CEV40 On node 0 totalpages: 4096 zone(0): 0 pages. zone(1): 4096 pag

8、es. zone(2): 0 pages. Kernel command line: root=/dev/rom0 Calibrating delay loop. 32.87 BogoMIPS start_kernel 8:before mem_init Memory: 16MB = 16MB total Memory: 15144KB available (733K code, 191K data, 40K init) after mem_init start_kernel 9 Dentry-cache hash table entries: 2048 (order: 2, 16384 by

9、tes) Inode-cache hash table entries: 1024 (order: 1, 8192 bytes) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 4096 (order: 2, 16384 bytes) POSIX conformance testing by UNIFIX Linux NET4.0 for Li

10、nux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket Starting kswapd ttyS0 at I/O 0x1d00000 (irq = 3) is a S3C44B0 ttyS1 at I/O 0x1d04000 (irq = 2) is a S3C44B0 block: 64 slots per queue, batch=16 RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 b

11、locksize Blkmem copyright 1998,1999 D. Jeff Dionne Blkmem copyright 1998 Kenneth Albanowski Blkmem 1 disk images: 0: C0000-175FFF VIRTUAL C0000-175FFF (RO) loop: loaded (max 8 devices) S3CEV40 board Rtl8019as driver start eth0: 00:06:98:02:7e:8f NET4: Linux TCP/IP 1.0 for NET4.0 61 IP Protocols: ICM

12、P, UDP, TCP, IGMP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 1024 bind 1024) cramfs: wrong magic VFS: Mounted root (romfs filesystem) readonly. Freeing init memory: 40K 以上内核启动信息是由 start_kernel()函数调用的各个初始化函数生成的, start_kernel()函数是内核的 C 语言入口点,位于 linux-

13、2.4.x/init/main.c 文件。 用户可以根据 start_kernel 函数找到启动初始化部分的源代码,在源代码中调用 printk() 函数将所需要的调试信息通过串口打印到超级终端。 第二部分信息是在文件系统装载以后,执行/etc/rc 文件里的系统命令的打印结果,这些打 印信息是由 user/sash/文件夹下的 sash.c 文件中包含的 printf(“Command: %sn“,buf)命令产生。 执行命令功能包括设置主机名、装载 var 和 proc 文件系统、设置目标板 IP 以及打印欢迎信 息等。用户可以通过修改 vendors/Embest/S3C44B0/rc

14、文件更改执行的命令列表。 Shell invoked to run file: /etc/rc Command: hostname S3CEV40 Command: /bin/expand /etc/ramfs.img /dev/ram0 Command: /bin/expand /etc/ramfs2048.img /dev/ram1 Command: mount -t proc proc /proc Command: mount -t ext2 /dev/ram0 /var Command: mount -t ext2 /dev/ram1 /ramdisk Command: chmod 7

15、77 /ramdisk Command: mkdir /var/tmp Command: mkdir /var/log Command: mkdir /var/run Command: mkdir /var/lock Command: ifconfig lo 127.0.0.1 Command: route add -net 127.0.0.0 netmask 255.255.255.0 lo Command: ifconfig eth0 192.192.192.12 Command: route add -net 192.192.192.0 netmask 255.255.255.0 eth

16、0 Command: Command: cat /etc/motd Welcome to _ _ _ / _| |_| _ _| | | | _ _ _ _ _ _ | | | | | | | | _ | | | | / / | |_| | |_| | | | | | |_| |/ | _|_|_|_| |_|_|_/_/ | | |_| For further information check: http:/www.uclinux.org/ Command: Execution Finished, Exiting 在 cygwin 下修改内核,在 start_kernel 函数里的 mem_

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号