<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          uclinux啟動過程詳細(xì)分析

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

          本文引用地址:http://www.ex-cimer.com/article/201808/388126.htm

          linux-2.4.22/drivers/char/Pty.c, 在devfs_mk_dir (NULL, “pts”, NULL);時(shí)會輸出上面的信息。

          loop: loaded (max 8 devices)

          加載返還塊設(shè)備驅(qū)動,最多支持8個(gè)設(shè)備。

          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’

          網(wǎng)卡驅(qū)動,基地址為:0x60112000, MAC地址:00:10:0d:42:a0:03, 中斷號:14

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

          SCSI subsystem driver Revision: 1.00

          USB設(shè)備信息,USB會被當(dāng)做SCSI來處理。

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

          軟中斷信息輸出。Tasklet是在2.4中才出現(xiàn),它是為了更好地利用多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與富士通合資設(shè)立的Flash供貨 商Spansion。AMD因獲利不佳,已經(jīng)退出Flash市場,后續(xù)由Spansion合資公司經(jīng)營。主要生產(chǎn)NOR類型的flash,特點(diǎn)是容量小,速度快。Spansion商標(biāo)的flash,在我們開發(fā)中會經(jīng)??吹?。以后大家看到Spansion的芯片,就能了解到它和AMD還有富士通的來龍去脈 了。

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

          Using buffer write method

          使用flash寫緩沖方式。

          flash 提供了寫B(tài)UFFER的命令來加快對flash上塊的操作。對Flash擦除和寫數(shù)據(jù)是很慢的。如果用寫B(tài)UFFER的命令會快一點(diǎn)。據(jù)手冊上說,會快 20倍。Buffer Size :5 bytes的buffer緩沖不是每個(gè)塊都有,是整個(gè)flash只有一個(gè)5 bytes的buffer,用寫B(tài)UFFER命令對所有的塊進(jìn)行寫操作,都要用同一個(gè)buffer,寫B(tài)uffer是主要檢查buffer是否 available,其實(shí)buffer起緩沖作用,來提高工作效率。

          比如某flash有128個(gè)128K字節(jié)塊。允許用戶對任意塊進(jìn)行字節(jié)編程和寫緩沖器字節(jié)編程操作,每字節(jié)編程時(shí)間為210μs;若采用寫緩沖器字節(jié)編程方式,32字節(jié)編程共需218μs,每字 節(jié)編程時(shí)間僅為6.8μs。芯片的塊擦除時(shí)間為1s,允許在編程或塊擦除操作的同時(shí)進(jìn)行懸掛中斷去進(jìn)行讀操作,待讀操作完成后,寫入懸掛恢復(fù)命令,再繼續(xù)編程或塊擦除。

          Creating 3 MTD partitions on “XX mapped flash”:

          0x00000000-0x00020000 : “BootLoader”

          0x00020000-0x00040000 : “Config”

          0x00040000-0x01000000 : “Romfs”

          此處為重要信息部分,需要特別留意。在內(nèi)存中映射過的flash,創(chuàng)建三個(gè)MTD分區(qū):

          flash上的內(nèi)容將被映射到內(nèi)存中的對應(yīng)地址

          前128K為BootLoader——》0x00000000-0x00020000接著的128K為系統(tǒng)配置信息Config存放的位置——》0x00020000-0x00040000再后面的 16M - 2X128K 為romfs的存放處。——》0x00040000-0x01000000上面的內(nèi)容,大家可以根據(jù)前面的換算公式得到。

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

          B》 在此處就知道了配置信息config是放在第2分區(qū)中的;

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

          NET4: Linux TCP/IP 1.0 for NET4.0

          調(diào)用inet_init [ linux-2.4.22/net/ipv4/Af_inet.c ]時(shí)的輸出信息, 在啟動過程中被socket.c調(diào)用到。

          IP Protocols: ICMP, UDP, TCP, IGMP

          列出可以支持的IP協(xié)議,此處為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 ],設(shè)置 IP module,路由緩沖hash表

          TCP: Hash tables configured (established 8192 bind 8192)

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

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

          UNIX網(wǎng)絡(luò)協(xié)議信息。

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

          上面的關(guān)于網(wǎng)絡(luò)的輸出信息是在linux啟動信息中都會出現(xiàn)的。

          cramfs: wrong magic

          加載各種文件系統(tǒng)。

          會出現(xiàn)“cramfs: wrong magic”,別擔(dān)心這沒有什么害處,這個(gè)是kernel的書寫bug,在2.6中有修改之,它是一個(gè)警告信息,用來檢查cramfs的superblock超級塊的。superblock也是VFS要用到的數(shù)據(jù)結(jié)構(gòu)。

          代碼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;

          }

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



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

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();