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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > uclinux內(nèi)核配置與裁減

          uclinux內(nèi)核配置與裁減

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

          uclinux表示micro-control linux.即“微控制器領(lǐng)域中的Linux系統(tǒng)”,是Lineo公司的主打產(chǎn)品,同時也是開放源碼的嵌入式Linux的典范之作。uCLinux主要是針對目標處理器沒有存儲管理單元MMU(Memory Management Unit)的嵌入式系統(tǒng)而設(shè)計的。它已經(jīng)被成功地移植到了很多平臺上。由于沒有MMU,其多任務(wù)的實現(xiàn)需要一定技巧。

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

          是嵌入式Linux領(lǐng)域非常重要的分支,已成功應(yīng)用于路由器、機頂盒、PDA等領(lǐng)域,與標準Linux在內(nèi)存管理方面有著本質(zhì)的區(qū)別。

          Uclinux的配置和裁減也是利用的華恒科技提供的源碼包(用于hhbf531學習板)。我們使用的開發(fā)板信息如下:

          CPU:BF533

          FLASH:S29AL004D-512KB

          SDRAM:HY57V281620-16MB

          這里我不敢說“uclinux的移植”,而只是以“配置與裁減”代之,是因為我覺得自己的工作真的談不上什么移植?,F(xiàn)成的源碼包,所有的底層驅(qū)動都已經(jīng)完成,我們所要做的只是選擇自己需要的驅(qū)動、配置一下內(nèi)核、做一些裁減工作而已。每每聽到其他人提到“最近又完成了TImes;TImes;TImes;平臺的linux移植”,我都會有點擔心:國內(nèi)有多少工程師能真正從最初始的工作開始,完成一個平臺的系統(tǒng)移植——應(yīng)該很少吧。

          下面,我分以下步驟簡單介紹一下我的配置過程。

          一,配置并在RAM中運行內(nèi)核(不帶根文件系統(tǒng)):

          由于我們的flash空間有限,在沒有裁減之前,就算不帶根文件系統(tǒng),也無法燒寫到flash內(nèi)保存;所以先嘗試下載到RAM中運行。另外,我們目前的開發(fā)板上沒有網(wǎng)絡(luò)功能,只能通過串口下載,所以在這里配置內(nèi)核的過程中,做一些簡單裁減,以便節(jié)約下載時間。

          解壓源碼包后,進入uclinux目錄:

          #cd -dist

          設(shè)定交叉工具鏈:

          #PATH=”/usr/local/bin/gcc-bfin-3.4-uclinux/bin/:$PATH”

          進入配置:

          #make menuconfig

          運行后,進入“MainMenu”配置頁,可以在此選擇Vender/Product和Kernel/Library/Defaults等內(nèi)容。根據(jù)我們使用的平臺,我們選擇:Vender-AnalogDevices,Product-HHBF533(或者HHBF531),Libc-uClibc;如果要配置內(nèi)核和應(yīng)用程序還要分別選中“Customize Kernel SetTIngs”、“Customize Vender/User Settings”。退出保存后,將依次進入配置內(nèi)核和配置應(yīng)用程序頁。

          如果想單獨配置內(nèi)核,可以進入目錄linux-2.6.x/內(nèi)運行“make menuconfig”。配置應(yīng)用程序在這個源碼包里好像沒有單獨的config選項。這些關(guān)于內(nèi)核源碼包結(jié)構(gòu)的基本知識,需要大家提前了解。

          下面,我們來配置內(nèi)核。

          配置一個可以在我們的SDRAM中運行的內(nèi)核很簡單,因為底層工作都已經(jīng)完成。我們只需要配置一下處理器相關(guān)內(nèi)容即可。處理器選項位于頁的“Blackfin Processer Options”。進入該配置頁,進行如下配置:

          CPU - BF533

          System type - BF533-HHBF

          Board Customizations - 根據(jù)你的開發(fā)板時鐘、SDRAM信息配置,其他不用修改。

          Clock Settings - 取消“Re-programClocks while Kernel boots”,默認為u-boot的時鐘配置。

          其他選項不用修改,各項配置功能介紹見文檔《附.Linux 2.6.19.x內(nèi)核編譯配置選項簡介》。

          以上配置正確后,下載到你的開發(fā)板上,應(yīng)該就可以運行了。但通過串口下載速度太慢,我們先去掉一些不需要的驅(qū)動。由于我們沒有網(wǎng)絡(luò)功能,所以把網(wǎng)絡(luò)及其驅(qū)動全部取消,可以裁減150KB左右的空間;我們也不需要音視頻功能,所以把音視頻驅(qū)動也取消,又可以減小很大空間。如此配置后,我們可以嘗試下載到SDRAM中運行了。

          現(xiàn)在,我們還不想裁減根文件系統(tǒng),所以,我們想得到一個不帶根文件系統(tǒng)的壓縮內(nèi)核鏡像。由于華恒提供的源碼包,編譯后不能得到壓縮的不帶根文件系統(tǒng)的鏡像,所以我們要通過修改Makefile得到我們需要的編譯結(jié)果。

          需要修改的Makefile位于-dist目錄下,打開該Makefile,在“.PHONY:linux”項的”ln –f $(LINUXDIR)/vmlinux $(LINUXDIR)/linux;”語句后,添加以下內(nèi)容。


          這樣在uClinux-dist目錄下執(zhí)行“make linux”就可以生成壓縮的不帶根文件系統(tǒng)的內(nèi)核鏡像了,該鏡像文件為uImage.bin,位于linux-2.6.x目錄內(nèi)?,F(xiàn)在,可以將得到的內(nèi)核下載到SDRAM中運行了。因為是壓縮內(nèi)核,所以運行時要使用u-boot的bootm命令。至于u-boot命令的使用方法,自行學習。

          Makefile也是編譯內(nèi)核的基礎(chǔ)知識,需要大家逐步掌握。

          這樣,該步的工作就可以告一段落了。

          下載到SDRAM中,如果解壓后無法運行,先檢查一下上述配置操作是否有誤。如果確定無誤,就需要分析內(nèi)核的執(zhí)行過程,仔細分析問題了。接下來簡單介紹一下內(nèi)核執(zhí)行流程。

          二,內(nèi)核執(zhí)行流程:

          承接上篇《u-boot引導uclinux過程分析》,介紹內(nèi)核啟動流程。

          A,內(nèi)核vmlinux入口

          u-boot執(zhí)行“(*appl)(cmdline);”語句后,控制權(quán)就移交給linux內(nèi)核,appl變量指向的地址就是linux內(nèi)核的首地址。

          Linux內(nèi)核執(zhí)行的第一個文件是/linux-2.6.x/arch/blackfin/mach-bf533/head.S。經(jīng)過一系列的初始化,跳轉(zhuǎn)到start_kernel()函數(shù),即進入linux系統(tǒng)初始化階段。

          B, Linux系統(tǒng)初始化

          Start_kernel()函數(shù)位于文件/linux-2.6.x/init/main.c中,是linux內(nèi)核通用的初始化函數(shù)。無論對于什么體系結(jié)構(gòu)的linux,都要執(zhí)行這個函數(shù)。


          Start_kernel()函數(shù)負責初始化內(nèi)核各子系統(tǒng),最后調(diào)用rest_init(),啟動一個叫作init的內(nèi)核線程,繼續(xù)初始化。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 內(nèi)核配置 uClinux

          評論


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