新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > uclinux啟動過程詳細分析

        uclinux啟動過程詳細分析

        作者: 時間:2018-08-31 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201808/388126.htm

        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.27

        eth0: RealTek RTL8139 at 0x60112000, 00:10:0d:42:a0:03, IRQ 14

        eth0: Identified 8139 chip type ‘RTL-8100B/8139D’

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

        從 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 0x0040

        number of CFI chips: 1

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

        AMD與富士通合資設立的Flash供貨 商Spansion。AMD因獲利不佳,已經退出Flash市場,后續由Spansion合資公司經營。主要生產NOR類型的flash,特點是容量小,速度快。Spansion商標的flash,在我們開發中會經??吹健R院蟠蠹铱吹絊pansion的芯片,就能了解到它和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左右,所以能放得下;

        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, 4Kbytes

        IP路由代碼的輸出信息。

        ip_rt_init [ linux-2.4.22/net/ipv4Route.c ],設置 IP module,路由緩沖hash表

        TCP: Hash tables configured (established 8192 bind 8192)

        TCP協議初始化輸出信息。tcp_init [ linux-2.4.22/net/ipv4/Tcp.c ],

        NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.

        UNIX網絡協議信息。

        af_unix_init[ linux-2.4.22/net/unix/Af_unix.c ], 多種連接的一種(IPv4, UNIX domain sockets, IPv6和IrDA)。 SMP 對稱多處理器—Symmetrical Multi Processing,這里主要是指UNIX的一些網絡協議。

        上面的關于網絡的輸出信息是在linux啟動信息中都會出現的。

        cramfs: wrong magic

        加載各種文件系統。

        會出現“cramfs: wrong magic”,別擔心這沒有什么害處,這個是kernel的書寫bug,在2.6中有修改之,它是一個警告信息,用來檢查cramfs的superblock超級塊的。superblock也是VFS要用到的數據結構。

        代碼linux-2.4.22/fs/cramfs/Inode.c:

        2.4

        cramfs_read_super(。。。)

        /* Do sanity checks on the superblock */

        if (super.magic != CRAMFS_MAGIC) {

        /* check at 512 byte offset */

        memcpy(super, cramfs_read(sb, 512, sizeof(super)), sizeof(super));

        if (super.magic != CRAMFS_MAGIC) {

        printk(KERN_ERR “cramfs: wrong magic/n”);

        goto out;

        }

        }

        2.6

        if (super.magic != CRAMFS_MAGIC) {

        if (!silent)

        printk(KERN_ERR “cramfs: wrong magic/n”);

        goto out;

        }

        超級塊是文件系統的“頭部”。它包含文件 系統的狀態、尺寸和空閑磁盤塊等信息。如果損壞了一個文件系統的超級塊(例如不小心直接將數據寫到了文件系統的超級塊分區中),那么系統可能會完全不識別該文件系統,這樣也就不能安裝它了,即使采用e2fsck 命令也不能處理這個問題。



        關鍵詞: uClinux cpu 控制器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 绥中县| 德清县| 岐山县| 错那县| 衡南县| 尉犁县| 孝感市| 米泉市| 镶黄旗| 永新县| 潜江市| 洛阳市| 溆浦县| 许昌县| 鸡东县| 三明市| 黑山县| 保定市| 福泉市| 德江县| 寿宁县| 阳曲县| 祥云县| 涡阳县| 游戏| 新蔡县| 白城市| 龙里县| 清丰县| 定襄县| 武宣县| 阳原县| 滨州市| 遂宁市| 藁城市| 广灵县| 宝清县| 常熟市| 舒城县| 义乌市| 密山市|