在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 學(xué)習(xí)嵌入式Linux系統(tǒng)的筆記和體會(huì)(1)

            學(xué)習(xí)嵌入式Linux系統(tǒng)的筆記和體會(huì)(1)

            ——
            作者: 時(shí)間:2007-02-28 來源:天極網(wǎng) 收藏
            一個(gè)典型的桌面Linux系統(tǒng)包括3個(gè)主要的軟件層---linux內(nèi)核、C庫和應(yīng)用程序代碼。

              內(nèi)核是唯一可以完全控制硬件的層,內(nèi)核驅(qū)動(dòng)程序代表應(yīng)用程序與硬件之間進(jìn)行會(huì)話。內(nèi)核之上是C庫,負(fù)責(zé)把POSIX API轉(zhuǎn)換為內(nèi)核可以識(shí)別的形式,然后調(diào)用內(nèi)核,從應(yīng)用程序向內(nèi)核傳遞參數(shù)。應(yīng)用程序依靠驅(qū)動(dòng)內(nèi)核來完成特定的任務(wù)。

              在設(shè)計(jì)嵌入式應(yīng)用的時(shí)候,可以不按照這種層次,應(yīng)用程序越過C庫直接和內(nèi)核會(huì)話,或者把應(yīng)用和內(nèi)核捆綁在一起,甚至可以把應(yīng)用寫為內(nèi)核的一個(gè)線程,在內(nèi)核中運(yùn)行,雖然這樣在移植上帶來了困難,但考慮嵌入式系統(tǒng)對(duì)尺寸要求小的特點(diǎn),是完全可行的。不過我們使用三層軟件結(jié)構(gòu)的模式來學(xué)習(xí)嵌入式linux將會(huì)是我們認(rèn)識(shí)更清晰,簡單可行并使應(yīng)用具有彈性。

              快速入門

              最簡單的建立嵌入式Linux應(yīng)用的方法就是從我們使用的桌面Linux入手,安裝一個(gè)喜愛的版本,把我們的某個(gè)應(yīng)用作為初始化的一部分,框架就算完成了。

              當(dāng)然,嵌入式linux應(yīng)用遠(yuǎn)比我們的桌面版本功能簡單專一,它也許就是一個(gè)用于足彩的終端機(jī),或是一個(gè)數(shù)碼音頻播放器,這些系統(tǒng)除了使用嵌入式CPU外,僅僅再需要一個(gè)串口,網(wǎng)口等少量的輸入輸出接口就可以完成它們特定的應(yīng)用了。

            在軟件上,它可以按照三層的概念由內(nèi)核裝載器,定制的內(nèi)核和較少的為特定任務(wù)設(shè)計(jì)的靜態(tài)連接的應(yīng)用程序組成。之所以使用靜態(tài)連接的應(yīng)用程序,是因?yàn)樯倭康撵o態(tài)連接程序所要的存儲(chǔ)空間,比同樣數(shù)量的動(dòng)態(tài)連接的程序所占的空間小,這個(gè)平衡點(diǎn)需要我們?cè)趯?shí)際開發(fā)中去獲取。也許你正在設(shè)計(jì)的是個(gè)PDA,它的應(yīng)用程序較多,那么你很可能就要使用動(dòng)態(tài)連接程序來減少存儲(chǔ)空間。在你的/bin或者/sbin目錄下,用廠列表看看bash,ifconfig,vi...,也許只用幾十K,當(dāng)你運(yùn)行 ldd /bin/bash 時(shí),你會(huì)看到它們都和好幾個(gè)庫文件相連。好了,這樣看來,我們得把PC想像成一個(gè)嵌入式硬件平臺(tái),再重新制作一個(gè)特定功能的嵌入式linux。

              基礎(chǔ)知識(shí)

              再進(jìn)行實(shí)際操作之前,先來搞清楚幾個(gè)基礎(chǔ)知識(shí)。

              內(nèi)核裝載器Loader,它的作用是把內(nèi)核從外部存儲(chǔ)器,移動(dòng)到內(nèi)存中。它只作這個(gè)事情,一旦完成了調(diào)入內(nèi)核的工作,Loader就跳轉(zhuǎn)到內(nèi)核位置開始執(zhí)行。不同架構(gòu)有不同的 Loader,在x86結(jié)構(gòu)的PC上,通常使用的loader有LILO,GRUB,syslinux,syslinux在嵌入式linux中也同樣工作。其他非x86架構(gòu)的應(yīng)用中,你必須使用專門的loader,或者自己編寫loader來裝入內(nèi)核。也有不使用loader的情況,系統(tǒng)加電以后,內(nèi)核直接從燒錄有映象的Flash上開始執(zhí)行。

              內(nèi)核,一旦內(nèi)核開始執(zhí)行,它將通過驅(qū)動(dòng)程序初始化所有硬件,這可以從我們的pc機(jī)監(jiān)視器的輸出看出來,每個(gè)驅(qū)動(dòng)程序都打印一些有關(guān)它的信息。初始化完成后,計(jì)算機(jī)就準(zhǔn)備運(yùn)行嵌入式應(yīng)用。也許一個(gè),也許是多個(gè)應(yīng)用程序組成了嵌入式應(yīng)用,但通常首先調(diào)用的是init(通過loader 向核心傳入init=/program 可以定制首先運(yùn)行的程序)。桌面linux中,init會(huì)讀取/etc/inittab文件,來決定執(zhí)行級(jí)別和哪些腳本和命令。嵌入式應(yīng)用中,可以根據(jù)實(shí)際的情況決定是否使用標(biāo)準(zhǔn)的init執(zhí)行方式,也許這個(gè)init是個(gè)靜態(tài)程序,它能夠完成我們的嵌入應(yīng)用的特定任務(wù),那完全不用考慮inittab了。

              initrd文件系統(tǒng),initrd以一種把內(nèi)核從存儲(chǔ)介質(zhì)裝入到內(nèi)存的相同的機(jī)制來裝入一個(gè)小型文件系統(tǒng)。這個(gè)文件系統(tǒng)最好是以壓縮的方式存儲(chǔ)在介質(zhì)上的,解壓縮到RAM盤上。通過使用initrd,包含有核心驅(qū)動(dòng)和啟動(dòng)腳本的小文件系統(tǒng),就可以直接從介質(zhì)上和內(nèi)核一起啟動(dòng)起來,內(nèi)核屆壓縮這個(gè)文件系統(tǒng),并執(zhí)行這個(gè)文件系統(tǒng)上叫做/linuxrc的腳本文件,這個(gè)腳本通常會(huì)把啟動(dòng)過程中所需要的驅(qū)動(dòng)程序裝入。腳本退出以后,initrd文件系統(tǒng)也卸下了,啟動(dòng)過程進(jìn)入真正初始化過程。對(duì)于嵌入式來講,可以將需要的應(yīng)用軟件都運(yùn)行在這個(gè)initrd文件系統(tǒng)上,只要/linxrc文件不結(jié)束,內(nèi)核啟動(dòng)過程的其他部分就不會(huì)繼續(xù)。

              做個(gè)試驗(yàn):
            cp /boot/initrd-2.4.20.img /tmp
            cd /tmp
            mv initrd-2.4.2-.img initrd.img.gz
            gunzip initrd.img.gz
            mount -o loop initrd.img /mnt
            cd /mnt
            ls
            cat linuxrc 可以看到里面執(zhí)行了加載了兩個(gè)模塊的操作,你在啟動(dòng)linxu的時(shí)候會(huì)看見屏幕打印信息。

             



            評(píng)論


            相關(guān)推薦

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

            關(guān)閉