您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术嵌入式linux启动信息完全注释 正文
嵌入式linux启动信息完全注释

嵌入式linux启动信息完全注释

点击数:7528 次   录入时间:03-04 11:45:20   整理:http://www.55dianzi.com   嵌入式系统-技术

 

注意:rootfs并不是一个具体的文件系统类型,如jffs。它只是一个理论上的概念。在具体的嵌入系统实例中,可以将某种具体的文件系统设置为根文件系统rootfs,如我们可以设置romfs为根文件系统,也可以设置jffs为根文件系统。

 

这里的ROMFS只读文件系统只是一种具体的文件系统类型,也是在嵌入系统中经常使用到的类型。

 

看完了上面的内容,以后你对出现的类似“kernel Panic:VFS:Unable to mount root fs on 0:00”的含义应该已经了解了。其中“VFS:”就是虚拟文件系统管理器操作时的输出信息了。

File linux.bin.gz found

linux kernel内核文件名,它是在只读文件系统romfs上的一个组成部分。

UnzipPINg image from 0x4639DE60 to 0x90090000, size = 1316021

将romfs中的linux kernel解压缩到0x90090000,之后会从这个内存地址启动内核。romfs为压缩格式文件,使用压缩的只读文件系统,是为了保持制作出来的整个系统所占用的flash空间减小。这个内核的大小为1.3M左右,这也是目前大多数嵌入系统所使用的方法。

Inptr = 0x00000014(20)

Inflating....

释放,解压中。。。(变大,充气, 膨胀)

Outcnt = 0x0030e7c8(3205064)

Final Inptr = 0x001414ad(1316013)

Original CRC = 0xcbd73adb

Computed CRC = 0xcbd73adb

做释放后的CRC检查

Boot kernel at 0x90090000 with ROMFS at 0x46040000

kernel已经被从romfs中释放到内存地址0x90090000处,可以跳转到此处启动kernel了,这里是指定的kernel的起始地址

Press 'enter' to boot

系统等待启动,后面将看到linux kernel的启动过程了。

 

第二部分 : linux内核初始化以及启动

第一节:start_kernel

Linux的源代码可以从 www.kernel.org 得到,或者你可以查看linux代码交叉引用网站: http://lxr.linux.no/ 进行在线的代码查看,这是一个很好的工具网站。

在start_kernel中将调用到大量的init函数,来完成内核的各种初始化。如:

page_address_init();

sched_init();

page_alloc_init();

init_IRQ();

SOFtirq_init();

console_init();

calibrate_delay();

vfs_caches_init(num_physpages);

rest_init();

具体内容可以参考[http://lxr.linux.no/source/init/main.c]

Linux version 2.4.22-uc0 (root@local) (gcc version 2.95.3 20010315 (release)) #33 .?1.. 20 12:09:106

上面的代码输出信息,是跟踪linux代码分析后得到的,进入init目录下的main.c的start_kernel启动函数.

嵌入式linux使用的是linux内核版本为2.4.22

linux source code代码中start_kernel中输出的linux_banner信息。这个信息是每个linux kernel都会打印一下的信息,如果你没有把这句去掉的话。

 

Found bootloader memory map at 0x10000fc0.

bootloader经过内存映射后的地址为:0x10000fc0, 按上面的地址换算方法,1后面有7个0,那么虚拟地址256M左右处。

Processor: ARM pt110 revision 0

pT110是ARM微处理器arm核的一种,另一种为pT100。此处为显示ARM的类型。

On node 0 totalpages: 20480

zone(0): 20480 pages.

zone(0): Set minimum memory threshold to 12288KB

Warning: wrong zone alignment (0x90080000, 0x0000000c, 0x00001000)

zone(1): 0 pages.

zone(2): 0 pages.

预留内存大小,在节点0上总共20页, zone(0) 设置最小内存为12MB, zone(1)和zone(2)为0页。警告:对齐不正确

Kernel command line: root=/dev/mtdblock3

Kernel 启动命令设为:/dev/mtdblock3(在后面的说明中会看到mtdblock3是指的flash上的romfs分区。),用来指定根文件系统所在的位置,kernel会将块设备mtdblock3当作文件系统来处理。

也就是说,内核会根据上面的kernel命令行,知道只读文件系统romfs将是根文件系统rootfs。

start_kernel(void)中输出的上面的这句信息。

这行命令是在linux内核启动过程中都会输出的一句。

Console: colour dummy device 80x30

代码中console_init()的输出信息, 显示控制台属性:一般使用VGA text console,标准是80 X 25行列的文本控制台,这里是对属性进行了设置。

serial_xx: setup_console @ 115

串口设置值为115200,此为波特率输出信息。对串口设置的信息做一个打印的动作,在调试时会非常有用。

Calibrating delay loop... 82.94 BogoMIPS

Calibrate:校准, 进入时延校准循环。检查CPU的MIPS(每秒百万条指令),Bogo是Bogus(伪)的意思。这里是对CPU进行一个实时测试,来得到一个大体的MIPS数值

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页


本文关键字:嵌入式  信息  Linux  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术