在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設計應用 > uclinux內核配置與裁減

            uclinux內核配置與裁減

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

            本文引用地址:http://www.biyoush.com/article/201808/388125.htm


            起始內核線程init的任務依然是初始化,只不過是一種更高層次的初始化。


            函數(shù)do_basic_setup()是init進程中最重要的函數(shù),與嵌入式系統(tǒng)關系最緊密的是其中的do_initcalls()函數(shù),該函數(shù)與設備驅動程序加載有關。

            函數(shù)prepare_namespace()函數(shù)主要目的是準備好系統(tǒng)的命名空間,其中最重要的函數(shù)是mount_root(),其功能是掛載根文件系統(tǒng)。

            四個run_init_process()函數(shù)查找init進程程序并嘗試執(zhí)行。如果沒有找到一個可以執(zhí)行的init程序,則報告錯誤“Noinit found”。

            C,初始化設備驅動

            參考B中的do_basic_setup()函數(shù)。

            D,掛接根文件系統(tǒng)

            參考B中的prepare_namespace()函數(shù)。

            E, 啟動用戶空間init進程

            當內核掛載了根文件系統(tǒng)后,內核的啟動工作就全部結束了,但系統(tǒng)還不能正常啟動起來,因為還需要通過根文件系統(tǒng)上的init程序來完成一下最后的設置工作。這個init程序一般在/sbin、/etc或/bin目錄下。

            三,裁減內核(不帶根文件系統(tǒng))并燒寫到flash中:

            該步承接上步的工作。由于上步已經(jīng)做了一定的裁減,該步只需要在此基礎上進一步裁減即可。該步工作相對叫簡單,只需要將不需要的驅動選項取消即可,當然要注意保證內核的依賴關系。

            我們的flash容量為512KB,u-boot占有64KB空間,剩下的只有448KB。另外,根文件系統(tǒng)大約還需要100KB空間,所以內核大小要控制在350KB以內。我們先嘗試將不需要的驅動和選項全部取消,讓內核運行起來。

            在“二,配置并在RAM中運行內核(不帶根文件系統(tǒng))”的基礎上,我們進一步刪除的驅動包括:

            l 取消“Loadble module support”支持

            l 取消“Block layer”支持

            l 取消“Bus options”所有支持

            l 取消“Power management options”支持

            l 取消“CPU Frequency scaling”支持

            l 取消“Profiling Support”支持

            l 取消“Security options”支持

            l 取消“Cryptographic options”支持

            l 取消除了串口和MTD以外的所有硬件驅動支持

            l 取消內部RTC驅動

            l 取消對ELF格式文件支持

            取消以上選項后,內核可以控制在350KB以內了。所以,不需進一步修改Makefile來裁減內核了。這樣就可以下載并燒寫到flash內保存了。

            四,配置應用程序和裁減根文件系統(tǒng):

            根文件系統(tǒng)掛載到內核有兩種基本方式:獨立于內核存放通過MTD分區(qū)識別并掛載和鏈接到內核數(shù)據(jù)段通過ramdisk掛載(兩種方式都是我自己概括的,可能描述上有些不盡合理,僅供參考)。不論那種方式,都需要MTD驅動支持,所以內核要支持MTD并配置正確,保持華恒源碼包原MTD配置即可。

            HHBF5XX 的Linux BSP 使用ext2 格式的ramdisk 作為根文件系統(tǒng),直接鏈接到內核數(shù)據(jù)段,所以這里介紹這種方式。另一種方式這里不作介紹,其相關資料更豐富。

            與根文件系統(tǒng)(ramfs)相關的鏈接內容如下,位于文件/linux-2.6.x/arch/Blackfin/Kernel/vmlinux.lds.S中。


            內核通過__initramfs_start和__initramfs_end找到根文件系統(tǒng)的img,這兩個變量在文件/linux-2.6.x/init/Initramfs.c中被引用。

            介紹完根文件系統(tǒng)的掛載方式,我們來介紹如何配置和裁減應用程序。

            由于flash容量限制,而且我們也并不需要很多應用程序的支持,所以我們可以只保留最簡單的init、sh、ls、cd等應用程序,其他應用全部裁減掉。注意必須保證要有init和sh,否則內核無法運行或沒有shell界面。另外,為了進一步裁減體積,我們利用busybox制作根文件系統(tǒng),busybox的介紹文檔網(wǎng)上非常多,這里不再介紹。

            按照以上分析,我們來配置應用程序和busybox。

            按照“一,配置并在RAM中運行內核(不帶根文件系統(tǒng))”中介紹的方法進入應用程序配置頁。只需選中Busybox內的BusyboxSVN,其余選項全部取消,完全用busybox代替。

            然后,我們來配置busybox。進入busybox目錄,運行配置命令:

            #cd user/busybox-svn

            #make menuconfig

            除了按照我們上面介紹的,保留最基本的應用程序之外,其他全部取消;還有一點需要特別注意。就是在“Build options”選擇中選中編譯成靜態(tài)庫,而不要編譯成共享庫,這樣在根文件系統(tǒng)掛載時省去很多麻煩,雖然最后得到的內核體積會稍微增大一下。共享庫的應用可以在內核運行成功后,進一步學習。

            這樣配置得到的根文件系統(tǒng)已經(jīng)裁減了很大體積,但下載到SDRAM中運行時會發(fā)現(xiàn)根文件系統(tǒng)占有的內存空間仍然很大,始終保持12.5MB空間。這是因為,根文件系統(tǒng)的運行空間是在生成鏡像時指定的。要裁減占有的內存空間,可以如下修改。

            #vi vender/HHTech/BF533-HHBF/Makefile

            修改第14行的“BLOCKS = 12800”為較小的值,比如說4096等,必須是256的整數(shù)倍,否則內核運行時根文件系統(tǒng)報錯。這樣修改后,根文件系統(tǒng)占有的flash和SDRAM空間都會相應減小。

            通過以上裁減后,帶有根文件系統(tǒng)的內核鏡像完全可以控制在448KB以內,下載保存到flash后運行,你就可以看到可愛的“”歡迎界面了。



            關鍵詞: 內核配置 uClinux

            評論


            相關推薦

            技術專區(qū)

            關閉