uclinux启动过程详细分析

时间:2018-08-31来源:网络

4.系统执行rc脚本。

hostname Samsung

/bin/expand /etc/ramfs.img /dev/ram0

/bin/expand /etc/ramfs2048.img /dev/ram1

mount -t proc proc /proc

mount -t ext2 /dev/ram0 /var

mount -t ext2 /dev/ram1 /ramdisk

chmod 777 /ramdisk

mkdir /var/config

mkdir /var/tmp

mkdir /var/log

mkdir /var/run

mkdir /var/lock

ifconfig lo 127.0.0.1

route add -net 127.0.0.0 netmask 255.255.255.0 lo

dhcpcd

cat /etc/motd

rc程序执行完毕后,系统环境已经设置好了,下面就该用户登录系统了。

5.运行Sash command shell

uclinux启动的详细过程有着诸多的信息可以给我们巨大的启发,我们在这里讨论的就是要对这些信息做一个具体细致的分析,通过我们的讨论,大家会对uclinux启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的来龙去脉。

uclinux的启动过程,它是一幅缩影图,对它有了一个详细的了解后,有助于指导我们更加深入地了解uclinux的核心。

大家对uclinux的启动应该都比较熟悉,作为一名嵌入系统开发者,你一定遇到过下面的情景:在某论坛上看到一篇帖子,上面贴着uclinux开发板启动时的一堆信息,然后大家在帖子里讨论着这个启动过程中出现的问题,随机举例如下:

Linux version 2.4.20-uc1 (root@Local) (gcc version 2.95.3

20010315 (release)(ColdFire patches - 20010318 from http://f

(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #20 三 6月 1

8 00:58:31 CST 2003

Processor: Samsung S3C4510B revision 6

Architecture: SNDS100

On node 0 totalpages: 4096

zone(0): 0 pages.

zone(1): 4096 pages.

zone(2): 0 pages.

Kernel command line: root=/dev/rom0

Calibrating delay loop.。. 49.76 BogoMIPS

Memory: 16MB = 16MB total

Memory: 14348KB available (1615K code, 156K data, 40K init)

Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)

Inode cache hash table entries: 1024 (order: 1,

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 Linux 2.4

Based upon Swansea University Computer Society NET3.039

Initializing RT netlink socket

Starting kswapd

Samsung S3C4510 Serial driver version 0.9 (2001-12-27) with no serial options en

abled

ttyS00 at 0x3ffd000 (irq = 5) is a S3C4510B

ttyS01 at 0x3ffe000 (irq = 7) is a S3C451

Blkmem copyright 1998,1999 D. Jeff Dionne

Blkmem copyright 1998 Kenneth Albanowski

Blkmem 1 disk images:

0: BE558-1A5D57 [VIRTUAL BE558-1A5D57] (RO)

RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize

Samsung S3C4510 Ethernet driver version 0.1 (2002-02-20) 《mac@os.nctu.edu.tw》

eth0: 00:40:95:36:35:34

NET4: Linux TCP/IP 1.0 for NET4.0

IP Protocols: ICMP, UDP, TCP

IP: routing cache hash table of 512 buckets, 4Kbytes

TCP: Hash tables configured (established 1024 bind 1024)

VFS: Mounted root (romfs

Freeing init memory: 40K

上面的这些输出信息,也可能包括你自己正在做的uclinux开发板的输出信息,其中的每一行,每一个字的含义,你是否深究过,或者说大部分的含义你能确切地知道的?本人想在这里结合本人在实践中一些体会来和广大uclinux的开发者一起读懂这些信息。

我们在这里将以一个真实的uclinux系统的启动过程为例,来分析这些输出信息。启动信息的原始内容将用标记标出,以区别与注释。

uclinux的启动主要分为两个阶段:

① 第一部分bootloader启动阶段

② ② 第二部分linux 内核初始化和启动阶段

第一节:start_kernel

第二节:用户模式( user_mode )开始,start_kernel结束

第三节:加载linux内核完毕,转入cpu_idle进程

第一部分 : bootloader启动

图 1:uclinux启动状态转移示意图

*****************************************************

Boot loader v0.12NOTE: this boot loader is designed to boot kernels made with the2.4.xx releasesbootloader for XVBuilt at Nov 20 2005 10:12:35

Bootloader头信息,版本,编译时间等,这个因不同的bootloader的设计而有所不同,由此你能看出bootloader的版本信息,有很多使用的是通用的bootloader,如u-boot,redboot等。

Loaded to 0x90060000

将bootloader加载到内存ram中的0x90060000处,即将bootloader加载到内存的高端地址处。

Linux内核将被bootloader加载到0x90090000处。

Found boot configuration

查找到了启动boot的配置信息。

Booted from parallel flash

从flash中启动代码,此处的flash为并行闪存。

注意:任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。

从上面的信息,我们可以对flash类型特点有个比较明确的了解。

1 2 3 4 5 6 7 8 9 10 11

关键词: uClinux cpu 控制器

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版