1. gzyueqian
      18529173453
      首頁 > 新聞中心 > > 正文

      Linux內核初始化及啟動之用戶模式開始

      更新時間: 2007-06-14 11:10:56來源: 粵嵌教育瀏覽量:1360

        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

        設備的初始化 init()--->do_basic_init()--->pci_init(),初始化PCI,檢測系統的PCI設備。

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

        英國威爾士,斯旺西大學的NET3.039, TCP/IP 協議棧

        此信息,在linux啟動過程中都會出現。

        Initializing RT netlink socket
        
        對Socket的初始化,socket_init(),Netlink 一種路由器管理協議(linux-2.4.22\net\core\Rtnetlink.c,Routing netlink socket interface: protocol independent part。 其中RT是route路由的意思。這句輸出是在create產生rtnetlink的socket套接字時的一個調試輸出。)

        此信息,在linux啟動過程中都會出現。

        Starting kswapd
        
        啟動交換守護進程kswapd,進程IO操作例程kpiod

        kswapd可以配合kpiod運行。進程有時候無事可做,當它運行時也不一定需要把其所有的代碼和數據都放在內存中。這就意味著我們可以通過把運行中程序不用的內容切換到交換分區來更好的是利用內存。大約每隔1秒,kswapd醒來并檢查內存情況。如果在硬盤的東西要讀入內存,或者內存可用空間不足,kpiod就會被調用來做移入/移出操作。kswapd負責檢查,kpiod負責移動。

        Journalled Block Device driver loaded

      加載日志塊設備驅動。

        日志塊設備是用來對文件系統進行日志記錄的一個塊設備。日志文件系統是在傳統文件系統的基礎上,加入文件系統更改的日志記錄。
        它的設計思想是:跟蹤記錄文件系統的變化,并將變化內容記錄入日志。日志文件系統在磁盤分區中保存有日志記錄,寫操作首先是對記錄文件進行操作,若整個寫操作由于某種原因(如系統掉電)而中斷,系統重啟時,會根據日志記錄來恢復中斷前的寫操作。在日志文件系統中,所有的文件系統的變化都被記錄到日志,每隔一定時間,文件系統會將更新后的元數據及文件內容寫入磁盤。在對元數據做任何改變以前,文件系統驅動程序會向日志中寫入一個條目,這個條目描述了它將要做些什么,然后它修改元數據。

        devfs: v1.12c (20020818) Richard Gooch (rgooch@atnf.csiro.au)devfs: boot_options: 0x1
        
        Devfs模塊的輸出信息。

        設備文件系統devfs,版本1.12c,
        
        pty: 256 Unix98 ptys configured
       
        Pty模塊的輸出信息,與控制臺操作有關的設置。

        將通過 devpts 文件系統使用 Unix98 PTYs,(Pseudo-ttys (telnet etc) device是偽ttys設備的縮寫。

        ① TTY(/dev/tty)是TeleTYpe的一個老縮寫,為用戶輸入提供不同控制臺的設備驅動程序。它的名字來源于實際掛接到 UNIX系統的、被稱為電傳打字機(teletype)的終端。在Linux下,這些文件提供對虛擬控制臺的支持,可以通過按到鍵來訪問這些虛擬控制臺。這些虛擬控制臺提供獨立的、同時進行的本地登錄對話過程

        ② ttys(/dev/ttys)是計算機終端的串行接口。/dev/ttyS0對應MS-DOS下的 COM1。

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

        linux-2.4.22\drivers\char\Pty.c, 在devfs_mk_dir (NULL, "pts", NULL);時會輸出上面的信息。

        loop: loaded (max 8 devices)

        加載返還塊設備驅動,多支持8個設備

        8139too Fast Ethernet driver 0.9.27eth0: RealTek RTL8139 at 0x60112000, 00:10:0d:42:a0:03, IRQ 14eth0: Identified 8139 chip type 'RTL-8100B/8139D'

        網卡驅動,基地址為:0x60112000, MAC地址:00:10:0d:42:a0:03, 中斷號:14

        RTL8139 的接收路徑設計成一個環形緩沖區(一段線性的內存,映射成一個環形內存)。當設備接收到數據時,數據的內容就保存在這個環形緩沖區內并更新下個存儲數據的地址(個數據包的開始地址+個數據包的長度)。設備會一直保留緩沖區內的數據直到整個緩沖區耗盡。這樣,設備會再次重寫緩沖區內起始位置的內容,就像一個環那樣。

        從 2.2 版內核升級到 2.4 版時, RTL-8139 支持模塊已不再叫 rtl8139,而叫它 8139too,現在你再看到8139too就不會不明白它的來由了吧。

        SCSI subsystem driver Revision: 1.00

        USB設備信息,USB會被當做SCSI來處理。

      mumk_register_tasklet: (1) tasklet 0x905bf9c0 status @0x9025e974

        軟中斷信息輸出。Tasklet是在2.4中才出現,它是為了更好地利用多CPU。

        Probing XX Flash Memory

        探測 XX的閃存(Flash Memory),"NOR NAND Flash Memory Technology"

        Amd/Fujitsu Extended Query Table v1.3 at 0x0040number of CFI chips: 1
       
        AMD與富士通合資設立的Flash供貨商Spansion。AMD因獲利不佳,已經退出Flash市場,后續由Spansion合資公司經營.主要生產NOR類型的flash,特點是容量小,速度快。Spansion商標的flash,在我們開發中會經常看到。以后大家看到Spansion的芯片,就能了解到它和AMD還有富士通的來龍去脈了。

        Common flash Interface (CFI)是指一個統一的flash訪問接口,表示這種flash是這種接口類型的。

        Using buffer write method

      使用flash寫緩沖方式

        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,允許在編程或塊擦除操作的同時進行懸掛中斷去進行讀操作,待讀操作完成后,寫入懸掛恢復命令,再繼續編程或塊擦除。 Creating 3 MTD partitions on "XX mapped flash":0x00000000-0x00020000 : "BootLoader"0x00020000-0x00040000 : "Config"0x00040000-0x01000000 : "Romfs"

        此處為重要信息部分,需要特別留意。

        在內存中映射過的flash,創建三個MTD分區:

        flash上的內容將被映射到內存中的對應地址

        前128K為BootLoader--->0x00000000-0x00020000

        接著的128K為系統配置信息Config存放的位置--->0x00020000-0x00040000

        再后面的 16M - 2X128K 為romfs的存放處.--->0x00040000-0x01000000

        上面的內容,大家可以根據前面的換算公式得到。

        A> 編譯的bootloader一般大小約50K左右;

        B> 在此處就知道了配置信息config是放在第2分區中的;

        C> 制作的romfs的大小,一般為8M或10M左右,所以能放得下;

        嵌入式Linux內核的塊設備驅動:

        對于linux 的根文件系統,目前有三種塊設備的驅動可以選擇,它們分別是:

        a) Blkmem 驅動

        b) MTD 驅動

        c) RAM disk 驅動

        Blkmem 驅動是專門為嵌入式linux 開發的一種塊設備驅動,它是嵌入式linux系統中為古老和通用的塊設備驅動。它原理相對簡單但是配置比較復雜,需要根據你即的Flash的分區使用情況來修改代碼。當然修改的結果是它可以對一些NOR型的Flash進行讀寫操作。不過目前支持的Flash類型不夠多。如果新加入對一種Flash的支持需要作的工作量比較大。

        Linux的MTD驅動是標準Linux的Flash驅動。它支持大量的設備,有足夠的功能來定義Flash的分區,進行地址映射等等。使用MTD你可以在一個系統中使用不同類型的Flash。它可以將不同的Flash組合成一個線性的地址讓你來使用。

        在標準的Linux 2.4內核中MTD有一系列的選項,你可以根據個人系統的需要來選擇,定制。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 精品欧美日韩国产一区二区三区高清 | 欧美亚洲另类日韩在线网页 | 日本中文字幕乱 | 亚洲日韩欧美一区二区三四区 | 日本午夜福利视频一区二区三区 | 中文字幕日本视频高清一区 |