新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > uclinux啟動(dòng)過(guò)程詳細(xì)分析

uclinux啟動(dòng)過(guò)程詳細(xì)分析

作者: 時(shí)間:2018-08-31 來(lái)源:網(wǎng)絡(luò) 收藏

本文引用地址:http://2s4d.com/article/201808/388126.htm

serial_xx: setup_console @ 115

串口設(shè)置值為115200,此為波特率輸出信息。對(duì)串口設(shè)置的信息做一個(gè)打印的動(dòng)作,在調(diào)試時(shí)會(huì)非常有用。

Calibrating delay loop…… 82.94 BogoMIPS Calibrate:校準(zhǔn), 進(jìn)入時(shí)延校準(zhǔn)循環(huán)。檢查CPU的MIPS(每秒百萬(wàn)條指令),Bogo是Bogus(偽)的意思。這里是對(duì)CPU進(jìn)行一個(gè)實(shí)時(shí)測(cè)試,來(lái)得到一個(gè)大體的MIPS數(shù)值。

上面這個(gè)輸出,在所有的linux系統(tǒng)啟動(dòng)中都會(huì)打印出來(lái)。

進(jìn)入內(nèi)存初始化:mem_init(void), [arch/i386/mm/init.c]

Memory: 80MB = 80MB totalMemory: 76592KB available (1724K code, 2565K data, 72K init)

當(dāng)前內(nèi)存使用情況,將列出總的內(nèi)存大小, 及分配給內(nèi)核的內(nèi)存大小:包括代碼部分,數(shù)據(jù)部分,初始化部分,總共剛好4M。請(qǐng)留意此處的內(nèi)核的內(nèi)存大小的各個(gè)值。

進(jìn)入虛擬文件系統(tǒng)VFS初始化:vfs_caches_init()

Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)

Inode cache hash table entries: 8192 (order: 4, 65536 bytes)

Mount cache hash table entries: 512 (order: 0, 4096 bytes)

Buffer cache hash table entries: 4096 (order: 2, 16384 bytes)

Page-cache hash table entries: 32768 (order: 5, 131072 bytes)

在內(nèi)存中建立各個(gè)緩沖hash表,為kernel對(duì)文件系統(tǒng)的訪(fǎng)問(wèn)做準(zhǔn)備。

VFS(virtual filesystem switch)虛擬文件切換目錄樹(shù)有用到類(lèi)似這樣的結(jié)構(gòu)表。

上面的輸出信息,在一般的linux啟動(dòng)過(guò)程中都會(huì)看到。

POSIX conformance testing by UNIFIX

conformance:順應(yīng), 一致。即POSIX適應(yīng)性檢測(cè)。UNIFIX是一家德國(guó)的技術(shù)公司,Linux 原本要基于 POSIX.1 的, 但是POSIX 不是免費(fèi)的, 而且 POSIX.1 證書(shū)相當(dāng)昂貴。 這使得 Linux 基于 POSIX 開(kāi)發(fā)相當(dāng)困難。 Unifix公司(Braunschweig, 德國(guó)) 開(kāi)發(fā)了一個(gè)獲得了 FIPS 151-2 證書(shū)的 Linux 系統(tǒng)。 這種技術(shù)用于 Unifix 的發(fā)行版 Unifix Linux 2.0 和 Lasermoon的 Linux-FT。

在2.6的內(nèi)核中就將上面的這句輸出給拿掉了。

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

第二節(jié):用戶(hù)模式( user_mode )開(kāi)始,start_kernel結(jié)束

圖 3:用戶(hù)模式初始化

PCI: bus0: Fast back to back transfers disabled

PCI: Configured XX as a PCI slave with 128MB PCI memory

PCI: Each Region size is 16384KB

PCI: Reserved memory from 0x10080000 to 0x15080000 for DMA and mapped to 0x12000000

設(shè)備的初始化 init()——》do_basic_init()——》pci_init(),初始化PCI,檢測(cè)系統(tǒng)的PCI設(shè)備。

Linux NET4.0 for Linux 2.4Based upon Swansea University Computer Society NET3.039

英國(guó)威爾士,斯旺西大學(xué)的NET3.039, TCP/IP 協(xié)議棧。

此信息,在linux啟動(dòng)過(guò)程中都會(huì)出現(xiàn)。

Initializing RT netlink socket

對(duì)Socket的初始化, socket_init(),Netlink 一種路由器管理協(xié)議(linux-2.4.22/net/core/Rtnetlink.c,Routing netlink socket interface: protocol independent part。 其中RT是route路由的意思。這句輸出是在create產(chǎn)生rtnetlink的socket套接字時(shí)的一個(gè)調(diào)試輸出。)

此信息,在linux啟動(dòng)過(guò)程中都會(huì)出現(xiàn)。

Starting kswapd

啟動(dòng)交換守護(hù)進(jìn)程kswapd,進(jìn)程IO操作例程kpiod。

kswapd 可以配合kpiod運(yùn)行。進(jìn)程有時(shí)候無(wú)事可做,當(dāng)它運(yùn)行時(shí)也不一定需要把其所有的代碼和數(shù)據(jù)都放在內(nèi)存中。這就意味著我們可以通過(guò)把運(yùn)行中程序不用的內(nèi)容切換到交換分區(qū)來(lái)更好的是利用內(nèi)存。大約每隔1秒,kswapd醒來(lái)并檢查內(nèi)存情況。如果在硬盤(pán)的東西要讀入內(nèi)存,或者內(nèi)存可用空間不足,kpiod就會(huì) 被調(diào)用來(lái)做移入/移出操作。kswapd負(fù)責(zé)檢查,kpiod負(fù)責(zé)移動(dòng)。

Journalled Block Device driver loaded

加載日志塊設(shè)備驅(qū)動(dòng)。

日志塊設(shè)備是用來(lái)對(duì)文件系統(tǒng)進(jìn)行日志記錄的一個(gè)塊設(shè)備。日志文件系統(tǒng)是在傳統(tǒng)文件系統(tǒng)的基礎(chǔ)上,加入文件系統(tǒng)更改的日志記錄。

它 的設(shè)計(jì)思想是:跟蹤記錄文件系統(tǒng)的變化,并將變化內(nèi)容記錄入日志。日志文件系統(tǒng)在磁盤(pán)分區(qū)中保存有日志記錄,寫(xiě)操作首先是對(duì)記錄文件進(jìn)行操作,若整個(gè)寫(xiě)操作由于某種原因(如系統(tǒng)掉電)而中斷,系統(tǒng)重啟時(shí),會(huì)根據(jù)日志記錄來(lái)恢復(fù)中斷前的寫(xiě)操作。在日志文件系統(tǒng)中,所有的文件系統(tǒng)的變化都被記錄到日志,每隔一定時(shí)間,文件系統(tǒng)會(huì)將更新后的元數(shù)據(jù)及文件內(nèi)容寫(xiě)入磁盤(pán)。在對(duì)元數(shù)據(jù)做任何改變以前,文件系統(tǒng)驅(qū)動(dòng)程序會(huì)向日志中寫(xiě)入一個(gè)條目,這個(gè)條目描述了它將要做些 什么,然后它修改元數(shù)據(jù)。

devfs: v1.12c (20020818) Richard Gooch (rgooch@atnf.csiro.au)devfs: boot_options: 0x1

Devfs模塊的輸出信息。設(shè)備文件系統(tǒng)devfs,版本1.12c

pty: 256 Unix98 ptys configured

Pty模塊的輸出信息,與控制臺(tái)操作有關(guān)的設(shè)置。

將通過(guò) devpts 文件系統(tǒng)使用 Unix98 PTYs,(Pseudo-ttys (telnet etc) device是偽ttys設(shè)備的縮寫(xiě)。

① TTY(/dev/tty)是TeleTYpe的一個(gè)老縮寫(xiě),為用戶(hù)輸入提供不同控制臺(tái)的設(shè)備驅(qū)動(dòng)程序。它的名字來(lái)源于實(shí)際掛接到UNIX系統(tǒng)的、被稱(chēng)為電傳打字機(jī)(teletype)的終端。在Linux下,這些文件提供對(duì)虛擬控制臺(tái)的支持,可以通過(guò)按到鍵來(lái)訪(fǎng)問(wèn)這些虛擬控制臺(tái)。這些虛擬控制臺(tái)提供獨(dú)立的、同時(shí)進(jìn)行的本地登錄對(duì)話(huà)過(guò)程② ttys(/dev/ttys)是計(jì)算機(jī)終端的串行接口。/dev/ttyS0對(duì)應(yīng)MS-DOS下的 COM1。

使 用 make dev腳本MAKEDEV來(lái)建立pty文件。這樣系統(tǒng)內(nèi)核就支持Unix98風(fēng)格的pty了。在進(jìn)行Telnet登錄時(shí)將要用到/dev/pty設(shè)備。 pty是偽終端設(shè)備,在遠(yuǎn)程登錄等需要以終端方式進(jìn)行連接,但又并非真實(shí)終端的應(yīng)用程序中必須使用這種設(shè)備,如telnet或xterm等程序。 Linux 2.2以后增添了UNIX98風(fēng)格的Pty設(shè)備,它使用一個(gè)新的文件系統(tǒng)(devpts針對(duì)偽終端的文件系統(tǒng))和一個(gè)克隆的設(shè)備cloning device來(lái)實(shí)現(xiàn)其功能。



關(guān)鍵詞: uClinux cpu 控制器

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉