S3C2410启动信息注释(user_mode部分)『转』
uclinux的启动主要分为两个阶段: 第一部分bootloader启动阶段 第二部分linux 内核初始化和启动阶段 第一节:start_kernel 第二节:用户模式( user_mode )开始,start_kernel结束 第三节:加载linux内核完毕,转入cpu_idle进程 对Socket的初始化,socket_init(),Netlink 一种路由器管理协议(linux-2.4.22\net\core\Rtnetlink.c,Routing netlink socket interface: protocol independent part。 其中RT是route路由的意思。这句输出是在create产生rtnetlink的socket套接字时的一个调试输出。) kswapd可以配合kpiod运行。进 程有时候无事可做,当它运行时也不一定需要把其所有的代码和数据都放在内存中。这就意味着我们可以通过把运行中程序不用的内容切换到交换分区来更好的是利 用内存。大约每隔1秒,kswapd醒来并检查内存情况。如果在硬盘的东西要读入内存,或者内存可用空间不足,kpiod就会被调用来做移入/移出操作。 kswapd负责检查,kpiod负责移动。 使 用 make dev脚本MAKEDEV来建立pty文件。这样系统内核就支持Unix98风格的pty了。在进行Telnet登录时将要用到/dev/pty设备。 pty是伪终端设备,在远程登录等需要以终端方式进行连接,但又并非真实终端的应用程序中必须使用这种设备,如telnet或xterm等程序。 Linux 2.2以后增添了UNIX98风格的Pty设备,它使用一个新的文件系统(devpts针对伪终端的文件系统)和一个克隆的设备cloning device来实现其功能。 flash提供了写BUFFER的命令来加快对flash上块的操作。对Flash擦除和写数据是很慢的。如果用写BUFFER的命令会快一点。据 手册上说,会快20倍。Buffer Size :5 bytes的buffer缓冲不是每个块都有,是整个flash只有一个5 bytes的buffer,用写BUFFER命令对所有的块进行写操作,都要用同一个buffer,写Buffer是主要检查buffer是否 available,其实buffer起缓冲作用,来提高工作效率。 比如某flash有128个128K字节 块。允许用户对任意块进行字节编程和写缓冲器字节编程操作,每字节编程时间为210μs;若采用写缓冲器字节编程方式,32字节编程共需218μs,每字 节编程时间仅为6.8μs。芯片的块擦除时间为1s,允许在编程或块擦除操作的同时进行悬挂中断去进行读操作,待读操作完成后,写入悬挂恢复命令,再继续 编程或块擦除。 a) Blkmem 驱动 Blkmem 驱动是专门为uclinux 开发的一种块设备驱动,它是uclinux系统中最为古老和通用的块设备驱动。它原理相对简单但是配置比较复杂,需要根据你即的Flash的分区使用情况 来修改代码。当然修改的结果是它可以对一些NOR型的Flash进行读写操作。不过目前支持的Flash类型不够多。如果新加入对一种Flash的支持需 要作的工作量比较大。 Linux的MTD驱动是标准Linux的Flash驱动。它支持大量的设备, 有足够的功能来定义Flash的分区,进行地址映射等等。使用MTD你可以在一个系统中使用不同类型的Flash。它可以将不同的Flash组合成一个线 性的地址让你来使用。在标准的Linux 2.4内核中MTD有一系列的选项,你可以根据个人系统的需要来选择,定制。 再次强调一下 一个概念。VFS 是一种软件机制,也可称它为 Linux 的文件系统管理者,它是用来管理实际文件系统的挂载点,目的是为了能支持多种文件系统。kernel会先在内存中建立一颗 VFS 目录树,是内存中的一个数据对象,然后在其下挂载rootfs文件系统,还可以挂载其他类型的文件系统到某个子目录上。 devfs 提供了访问内核设备的命名空间。它并不是建立或更改设备节点,devfs只是为你的特别文件系统进行维护。一般我们可以手工mknod创件设备节点。 /dev目录最初是空的,里面特定的文件是在系统启动时、或是加载模组后驱动程序载入时建立的。当模组和驱动程序卸载时,文件就消失了。 我们制作image文件之后,我们还要考虑怎样才能在系统运行的时候,把这个 image 文件 mount 上来,成为一个可用的文件系统。由于这个 image 文件不是一个通常意义上的 block 设备,我们必须采用 loopback 设备来完成这一任务,如:
Based upon Swansea University Computer Society NET3.039Initializing RT netlink socket
BlueZ Core ver 2.4 Copyright (C) 2000,2001 Qualcomm Inc
Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
CPU clock = 202.800000 Mhz, HCLK = 101.400000 Mhz, PCLK = 50.700000 Mhz
Initializing S3C2410 buffer pool for DMA workaround
初始化内存池
devfs: boot_options: 0x1
Devfs模块的输出信息。设备文件系统devfs,版本1.12c
Samsung S3C2410X (i2c) algorithm module version 2.6.1 (20010830)
iic_s3c2410_init: Samsung S3C2410X iic adapter module version 2.6.1 (20010830)
i2c-dev.o: Registered 'Samsung S3C2410X IIC adapter' as minor 0
s3c2410_init: Initialized IIC on S3C2410X, 386kHz clock
iic_s3c2410_init: initialized iic-bus at 0xf4000000.
I2C
tts/%d0 at I/O 0x50000000 (irq = 52) is a S3C2410
tts/%d1 at I/O 0x50004000 (irq = 55) is a S3C2410
tts/%d2 at I/O 0x50008000 (irq = 58) is a S3C2410
Console: switching to colour frame buffer device 80x60
Installed S3C2410 frame buffer
framebuffer
pty: 256 Unix98 ptys configuredlinux-2.4.22\drivers\char\Pty.c
, 在devfs_mk_dir (NULL, "pts", NULL);
时会输出上面的信息。
s3c2410-ts initialized
s3c2410-adc initialized
S3C2410 Real Time Clock Driver v0.1
S3C2410键盘、 、ad转换器、实时时钟初始化
block: 128 slots per queue, batch=32
Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xxne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
Last modified Nov 1, 2000 by Paul Gortmaker
ide块设备驱动
eth0: NE2000 found at 0xd1000200, using IRQ 2.
PPP generic driver version 2.4.1
网卡驱动,基地址为:0xd1000200,中断号:2
SCSI subsystem driver Revision: 1.00
request_module[scsi_hostadapter]: Root fs not mounted
USB设备信息,USB会被当做SCSI来处理。
UDA1341 audio driver initialized
声卡驱动
NAND device: Manufacture ID: 0xec, Chip ID: 0x76 (Samsung K9D1208V0M)
Find a MTD partition from BONFS -> nandflash0 (bon4)
Creating 1 MTD partitions on "Samsung K9D1208V0M":
0x00430000-0x03f30000 : "nandflash0 (bon4)"
devfs_mk_dir(bon): using old entry in dir: c03650a0 ""
bon0: 00000000-00020000 (00020000) 00000000
bon1: 00020000-00030000 (00010000) 00000000
bon2: 00030000-00130000 (00100000) 00000000
bon3: 00130000-00430000 (00300000) 00000000
bon4: 00430000-03f30000 (03b00000) 00000001
bon5: 03f30000-03ffc000 (000cc000) 00000000
NAND device前128K为BootLoader--->0x00000000-0x00020000
接着的128K为系统配置信息Config存放的位置--->0x00020000-0x00040000
再后面的 16M - 2X128K 为romfs的存放处.--->0x00040000-0x01000000
上面的内容,大家可以根据前面的换算公式得到。
b) MTD 驱动
c) RAM disk 驱动
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
usb-ohci.c: USB OHCI at membase 0xe9000000, IRQ 26
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
port #1 suspened!
port #0 alived!
hub.c: 1 port detected
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
USB Mass Storage support registered.
USB信息
NET4: Linux TCP/IP 1.0 for NET4.0
调用inet_init [ linux-2.4.22\net\ipv4\Af_inet.c ]时的输出信息, 在启动过程中被socket.c调用到。
IP Protocols: ICMP, UDP, TCP, IGMP
列出可以支持的IP协议,此处为kernel源代码inet_add_protocol(p);的输出。在linux启动过程中,都会看到这句的输出。
IP: routing cache hash table of 512 buckets, 4Kbytesip_rt_init [ linux-2.4.22\net\ipv4\Route.c ]
,设置 IP module,路由缓冲hash表
TCP协议初始化输出信息。tcp_init [ linux-2.4.22\net\ipv4\Tcp.c ]
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.af_unix_init[ linux-2.4.22\net\unix\Af_unix.c ]
, 多种连接的一种(IPv4, UNIX domain sockets, IPv6和IrDA). SMP 对称多处理器—Symmetrical Multi Processing,这里主要是指UNIX的一些网络协议。
NetWinder Floating Point Emulator V0.95 (c) 1998-1999 Rebel.com
VFS: Mounted root (cramfs filesystem).
Mounted devfs on /dev/dev
是我们经常会用到的一个目录。在2.4的kernel中才有使用到。每次启动时内核会自动挂载devfs。
Freeing init memory: 68K
释放1号用户进程init所占用的内存。
yaffs: dev is 7937 name is "1f:01"
mount: Mounting ramfs on /root failed: No such file or directory
VFS
mount -o loop -t cramfs /usr.img /usr
BusyBox v1.00 (2005.01.20-11:59+0000) Built-in shell (ash)
BusyBox
Enter 'help' for a list of built-in commands.
help
runing /etc/profile ok
[/mnt/yaffs]
OK
0 意見:
发表评论