<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ì)分析

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

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

          4.系統(tǒng)執(zhí)行rc腳本。

          hostname Samsung

          /bin/expand /etc/ramfs.img /dev/ram0

          /bin/expand /etc/ramfs2048.img /dev/ram1

          mount -t proc proc /proc

          mount -t ext2 /dev/ram0 /var

          mount -t ext2 /dev/ram1 /ramdisk

          chmod 777 /ramdisk

          mkdir /var/config

          mkdir /var/tmp

          mkdir /var/log

          mkdir /var/run

          mkdir /var/lock

          ifconfig lo 127.0.0.1

          route add -net 127.0.0.0 netmask 255.255.255.0 lo

          dhcpcd

          cat /etc/motd

          rc程序執(zhí)行完畢后,系統(tǒng)環(huán)境已經(jīng)設(shè)置好了,下面就該用戶登錄系統(tǒng)了。

          5.運(yùn)行Sash command shell

          uclinux啟動的詳細(xì)過程有著諸多的信息可以給我們巨大的啟發(fā),我們在這里討論的就是要對這些信息做一個具體細(xì)致的分析,通過我們的討論,大家會對uclinux啟動過程中出現(xiàn)的、以前感覺熟悉的、但卻又似是而非的東西有一個確切的了解,并且能了解到這些輸出信息的來龍去脈。

          uclinux的啟動過程,它是一幅縮影圖,對它有了一個詳細(xì)的了解后,有助于指導(dǎo)我們更加深入地了解uclinux的核心。

          大家對uclinux的啟動應(yīng)該都比較熟悉,作為一名嵌入系統(tǒng)開發(fā)者,你一定遇到過下面的情景:在某論壇上看到一篇帖子,上面貼著uclinux開發(fā)板啟動時的一堆信息,然后大家在帖子里討論著這個啟動過程中出現(xiàn)的問題,隨機(jī)舉例如下:

          Linux version 2.4.20-uc1 (root@Local) (gcc version 2.95.3

          20010315 (release)(ColdFire patches - 20010318 from http://f

          ( XIP and shared lib patches from http://www.snapgear.com/)) #20 三 6月 1

          8 00:58:31 CST 2003

          Processor: Samsung S3C4510B revision 6

          Architecture: SNDS100

          On node 0 totalpages: 4096

          zone(0): 0 pages.

          zone(1): 4096 pages.

          zone(2): 0 pages.

          Kernel command line: root=/dev/rom0

          Calibrating delay loop.。. 49.76 BogoMIPS

          Memory: 16MB = 16MB total

          Memory: 14348KB available (1615K code, 156K data, 40K init)

          Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)

          Inode cache hash table entries: 1024 (order: 1,

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

          Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)

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

          POSIX conformance testing by UNIFIX

          Linux NET4.0 for Linux 2.4

          Based upon Swansea University Computer Society NET3.039

          Initializing RT netlink socket

          Starting kswapd

          Samsung S3C4510 Serial driver version 0.9 (2001-12-27) with no serial options en

          abled

          ttyS00 at 0x3ffd000 (irq = 5) is a S3C4510B

          ttyS01 at 0x3ffe000 (irq = 7) is a S3C451

          Blkmem copyright 1998,1999 D. Jeff Dionne

          Blkmem copyright 1998 Kenneth Albanowski

          Blkmem 1 disk images:

          0: BE558-1A5D57 [VIRTUAL BE558-1A5D57] (RO)

          RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize

          Samsung S3C4510 Ethernet driver version 0.1 (2002-02-20) 《mac@os.nctu.edu.tw》

          eth0: 00:40:95:36:35:34

          NET4: Linux TCP/IP 1.0 for NET4.0

          IP Protocols: ICMP, UDP, TCP

          IP: routing cache hash table of 512 buckets, 4Kbytes

          TCP: Hash tables configured (established 1024 bind 1024)

          VFS: Mounted root (romfs

          Freeing init memory: 40K

          上面的這些輸出信息,也可能包括你自己正在做的uclinux開發(fā)板的輸出信息,其中的每一行,每一個字的含義,你是否深究過,或者說大部分的含義你能確切地知道的?本人想在這里結(jié)合本人在實(shí)踐中一些體會來和廣大uclinux的開發(fā)者一起讀懂這些信息。

          我們在這里將以一個真實(shí)的uclinux系統(tǒng)的啟動過程為例,來分析這些輸出信息。啟動信息的原始內(nèi)容將用標(biāo)記標(biāo)出,以區(qū)別與注釋。

          uclinux的啟動主要分為兩個階段:

          ① 第一部分bootloader啟動階段

          ② ② 第二部分linux 內(nèi)核初始化和啟動階段

          第一節(jié):start_kernel

          第二節(jié):用戶模式( user_mode )開始,start_kernel結(jié)束

          第三節(jié):加載linux內(nèi)核完畢,轉(zhuǎn)入_idle進(jìn)程

          第一部分 : bootloader啟動

          圖 1:uclinux啟動狀態(tài)轉(zhuǎn)移示意圖

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

          Boot loader v0.12NOTE: this boot loader is designed to boot kernels made with the2.4.xx releasesbootloader for XVBuilt at Nov 20 2005 10:12:35

          Bootloader頭信息,版本,編譯時間等,這個因不同的bootloader的設(shè)計(jì)而有所不同,由此你能看出bootloader的版本信息,有很多使用的是通用的bootloader,如u-boot,redboot等。

          Loaded to 0x90060000

          將bootloader加載到內(nèi)存ram中的0x90060000處,即將bootloader加載到內(nèi)存的高端地址處。

          Linux內(nèi)核將被bootloader加載到0x90090000處。

          Found boot configuration

          查找到了啟動boot的配置信息。

          Booted from parallel flash

          從flash中啟動代碼,此處的flash為并行閃存。

          注意:任何flash器件的寫入操作只能在空或已擦除的單元內(nèi)進(jìn)行,所以大多數(shù)情況下,在進(jìn)行寫入操作之前必須先執(zhí)行擦除。NAND器件執(zhí)行擦除操作是十分簡單的,而NOR則要求在進(jìn)行擦除前先要將目標(biāo)塊內(nèi)所有的位都寫為0。

          從上面的信息,我們可以對flash類型特點(diǎn)有個比較明確的了解。



          關(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); })();