<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)DSP-BF533的μClinux嵌入式系統移植與開(kāi)發(fā)

基于A(yíng)DSP-BF533的μClinux嵌入式系統移植與開(kāi)發(fā)

作者: 時(shí)間:2011-09-06 來(lái)源:網(wǎng)絡(luò ) 收藏
3 利用U—Boot引導內核

本文引用地址:http://dyxdggzs.com/article/150264.htm

  U—Boot(Universal Boot Loader)是當前比較流行的遵循GPL條件的開(kāi)放源碼項目。也是是Linux常用的Boot Loader之一。其完成的功能是初始化硬件設備、改變處理器運行模式、重組中斷向量和建立內存空間映射圖,從而將的軟硬件帶到一個(gè)合適的狀態(tài)或者用戶(hù)定制的特定狀態(tài),以便為最終加載操作內核準備好正確的環(huán)境。

  U—Boot具有源碼公開(kāi)的特點(diǎn),人員可根據自身需要進(jìn)行裁減;支持多種處理器和操作系統內核;具有多種設備驅動(dòng)源碼:支持種引導方式;具有功能強大且成熟、穩定等諸多優(yōu)點(diǎn),故本文采用U—Boot引導μ內核。U—Boot嚴重依賴(lài)于底層硬件,不同的CPU或板極設備需要不同的U—Boot,不過(guò)因為本文的重點(diǎn)是μ,所以這里不再詳述U—Boot的具體實(shí)現過(guò)程。

  當系統上電后,U—Boot從地址OxO開(kāi)始執行,將存儲器映射重新配置,如圖1所示,并會(huì )執行μ的固化內核。

  

  U一Boot可以使用ADI的仿真軟件Visual DSP++通過(guò)仿真器或JTAG口下載到目標板上。

  4 μClinux內核的編譯和

  作為操作系統的核心,μClinux內核負責管理系統的進(jìn)程、內存、設備驅動(dòng)程序、文件系統和網(wǎng)絡(luò )系統,決定著(zhù)系統的各種性能。μClinux內核采用模塊化的組織結構,通過(guò)增減內核模塊的方式來(lái)增減系統的功能。

  4.1 內核配置

  雖然μClinux的內核代碼大部分獨立于處理器和其體系結構,但是最底層的代碼還是特定系統的。雖然各個(gè)系統存在相同之處,但是它們的中斷處理上下文、內存映射的維護、任務(wù)上下文和初始化過(guò)程是獨特的。這些例行程序放置在μClinux代碼樹(shù)的aroh/目錄下。這里需要根據自己的硬件平臺來(lái)配置內核代碼。配置過(guò)程如下:

  可以從官方網(wǎng)站http://blackfin.μClinux.org處下載μClinux—list的內核源代碼。運行解壓命令:將tar— xvfμClinux—dist.tar.gz解壓完畢后,就會(huì )生成/μClinux—dist目錄,加入該目錄后按如下順序編譯內核:

  (1)make menuconfig;進(jìn)入菜單方式配置指令;

  (2)選擇所使用的平臺類(lèi)型和所使用的庫

  本文設計的目標板選擇:AnalogDevices/BF533一EZ—KIT和μC—libc庫。在配置欄中,選擇Load an AlternateConfiguration File,按確認,退出配置欄;

  (3)make dep;尋找依存關(guān)系;

  (4)make clean;清除以前構造內核時(shí)生成的所有目標文件、模塊文件和一些臨時(shí)文件;

  (5)make lib_only;編譯庫文件;

  (6)make user_only;編譯用戶(hù)應用程序文件;

  (7)make tomfs;生成romfs文件系統;

  (8)make image;生成鏡像文件然后通過(guò)Jtag口輸入到目標板;

  (9)make;通過(guò)各個(gè)目錄的makefile文件進(jìn)行,會(huì )在各目錄下生成一大堆目標文件。

  在上述步驟完成后,就完成了對μClinux源碼的編譯工作。最后會(huì )在/μClinux—dist/images目錄下看到3個(gè)內核文件:linux.dxe,linux.bin和zlmage.bin。如果編譯不成功,需要根據編譯過(guò)程的提示信息找到錯誤并重新編譯,直到成功為止。

  4.2 修改配置內核代碼

  直接由源代碼編譯生成的內核映像文件一般不會(huì )啟動(dòng)成功,需要根據自己的目標板進(jìn)行配置。需要修改系統啟動(dòng)初始化文件crt0_ram.s,sysinit.c和ram.1d。

  在crt0_ram.s中需要根據自己的目標板修改基地址、存儲器大小和起始地址。在sysinit.c中需要修改片選設置,分別對FLASH和 SDRAM進(jìn)行片選設置。在ram.1d中修改內核連接加載地址。做完上面的修改,重新編譯生成linux.dxe等文件。

  4.3 μClinux內核的下載與執行

  μClinux內核有2種可選的運行方式:一種是在FLASH上直接運行;另一種是加載到內存中運行,系統啟動(dòng)時(shí)從FLASH中讀取壓縮的內核代碼(存儲器空間有限,所以一般需要壓縮內核代碼)到內存中解壓,然后開(kāi)始執行,這種方法比第一種的速度更快(RAM的存取速度比FLASH的快)。所以選取第二種方法。

  編譯好的內核文件可以由Visual DSP++裝置,通過(guò)網(wǎng)口或串口把linux.dxe下載到目標板的FLASH中,從設定的入口地址(一般為Oxl000)執行即可啟動(dòng)內核。

  啟動(dòng)μClinux就可以在超級終端看到μClinux的歡迎信息和簡(jiǎn)單的shell提示符,界面如圖3所示。

  

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>