自己動手打造嵌入式Linux軟硬體開發環境

2021-04-06 14:37:02 字數 4680 閱讀 2412

linux和uclinux

2023年8月,芬蘭的乙個學生在comp.os.minix新聞組貼上了以下這段話:

你好所有使用minix的人-我正在為386(486)at做乙個免費的作業系統(只是為了愛好,不會象gnu那樣很大很專業. 

這名學生就是linus torvalds, 而他所說的'愛好'就變成我們今天知道的linux。

由於linux的源**公布在網際網路上,可以免費得到,因此從一開始就吸引了世界各地的unix 行家為linux 編寫了

大量的驅動程式和應用軟體,在短短幾年時間裡,linux 就發展成為乙個相當完善的作業系統,而且linux支援的硬體

平台是所有作業系統中最多的,目前linux支援硬體平台:intel的ia64、compaq的alpha、sun的sparc/sparc64、sgi

的mips、ibm的s396、arm、powerpc等。linux更大的影響在於它正逐漸地應用於嵌入式裝置,uclinux正是在這種氛圍

下產生的。uclinux就是micro-control-linux,它也是乙個開放原始碼的專案,uclinux的源**和開發工具可以免費從

uclinux是專為那些沒有mmu(記憶體管理單元)的嵌入式處理器開發的,和主流的linux相比,uclinux有以下的特點

:1.簡化了核心載入方式,uclinux的核心可以在flash上直接執行:就是把uclinux的核心的可執行映象燒寫

上,系統啟動時讀取壓縮檔案在記憶體裡解壓,然後開始執行。

2.採用了romfs檔案系統作為root檔案系統:這種檔案系統相對於一般的ext2檔案系統要求更少的空間,首先核心

支援romfs檔案系統比支援ext2檔案系統需要更少的**,其次romfs檔案系統相對簡單,建立檔案系統superblock需要

更少的儲存空間。romfs檔案系統不支援動態擦寫,對於系統需要動態儲存的資料採用ram盤的方法處理,ram盤採

用ext2檔案系統。

3.使用了flat可執行檔案格式:elf格式有很大的檔案頭,flat檔案對檔案頭和一些段資訊做了簡化。

4.重寫了應用程式庫: uclibc對libc做了精簡,uclinux對使用者程式採用靜態連線的形式。

uclinux的開發環境

www.uclinux.org為uclinux提供了gnu的交叉編譯器,包括以下元件:gcc交叉編譯器,即在宿主機上開發編譯目

標上可執行的二進位制檔案;binutils輔助工具,包括objdump、as、ld等;gdb偵錯程式。以在arm7上開發uclinux為例:

1.獲得uclinux-dist的原始碼www.uclinux.org上定期為新推出的linux核心推出相應的原始碼包,最新的版本為

kernel-2.4.21,可以從

個uclinux-dist-20030522.tar.gz的檔案,把它儲存到/home目錄下,然後執行:tar zxvf 

uclinux-dist-20030522.tar.gz,當tar程式執行完畢後,在/home目錄下會有乙個/home/uclinux-dist的新目錄,這

個目錄就是uclinux的原始碼根目錄,裡面有進行uclinux開發的所有的源**。

2.獲得arm開發工www.uclinux.org提供uclinux原始碼的同時還提供相應的交叉編譯工具。要在開發主機上

為arm7目標系統編譯uclinux,還需要從

器:arm-elf-tools-20030314.sh。得到這個檔案以後,執行以下命令:sh arm-elf-tools-20030314.sh,這個命令

會在開發主機上自動建立乙個uclinux-arm的交叉編譯環境。鍵入arm-elf-gcc, 如果能看到下面的輸出資訊:

表示uclinux-arm的交叉編譯環境已經建立起來了。

現在開發主機裡已經有了uclinux的源**和編譯這些源**的工具,也可以用make menuconfig, make等命令來

編譯uclinux和使用者程式,為arm目標板編譯了乙個核心映像檔案,接下來要做得是需要一塊arm7的開發板來執行這個映

像檔案(關於如何編譯uclinux和使用者程式請www.uclinux.org上得相關文件)。

構建arm7-uclinux開發板

uclinux只需要極少的硬體資源就可執行起來,以arm7tdmi為例,只需要以下硬體:

1.cpu – samsung s3c4510b

2.sdram 8m以上

3.乙個簡易的串列埠

4.2m flash

5.乙個乙太網介面(可選)

目前各嵌入式微處理器的廠商在推出每款處理器的同時都會提供乙個demo板,供使用者來測試微處理器的性

能。samsung公司對s3c4510b處理器提供了一款snds100的demo板。demo板的原理圖可以從samsung公司的**上免費下

載,對這個原理圖作一些修改,只保留上面列出的5個部分,去掉其他多餘的部分。修改以後的原理圖就是乙個能夠執行

uclinux的arm7目標板原理圖,然後根據這個原理圖去加工幾張pcb板,焊上相應的元件,一塊能執行uclinux的arm7開

發板就做成了(這款開發板相應得原理圖、pcb圖可以從

慢著,雖然這塊開發板已經焊接完成,但目前它只是一堆電子零件的簡單組合,要在它上面跑uclinux,還需要相

應的軟體來管理這些硬體。

前面提到uclinux可以從flash中直接執行,就是說可以將uclinux的映像檔案直接燒寫到flash中,然後上

電,uclinux會從flash中啟動嗎?是的,確實如此。現在要做的就是如何將uclinux的核心映像燒寫到flash中。用寫入

器將uclinux核心映像寫入到flash中,然後將flash焊接到pcb板上或插到開發板的flash的插座上可以嗎?當然可以,

案。用jtag,s3c4510b上整合了乙個jtag,通過jtag我們可以控制s3c4510b上所有管腳,這樣可以通過向jtag介面輸

入相應的指令和資料,用軟體的方法在s3c4510b的資料、位址和控制匯流排上產生出flash器件的讀寫操作時

到flash中的程式可執行檔案和源**請參閱

終於將uclinux的映像檔案燒寫到flash中了,用一根串列埠電纜將arm7開發板和開發主機的com1口連線起來,從網上

tip –l /dev/ttys0 –s 19200

等螢幕上顯示 connected.以後,將arm7開發板的電源接通。如果夠幸運的話,你應該看到下面的資訊:

http://www.snapgear.com/) ) 一 5月19 23:44:11 cst 2003

uclinux在arm7目標板上已經執行起來了,鍵入熟悉的ls命令,看有什麼輸出。

通過jtag介面燒寫uclinux映像檔案到flash中速度太慢,除錯uclinux核心非常不方便,有沒有其他的方法?有,

uclinux除了可以從flash中直接執行外,還可以載入到記憶體中執行。我們來為arm7開發板寫一

用(bootloader for arm7的源**可以從

通過jtag介面燒寫uclinux映像檔案到flash中,這樣又可以直接從flash中執行除錯好的uclinux了。

uclinux下使用者程式的開發和除錯

現在arm7開發板可以執行uclinux了,如何開發uclinux下的應用程式呢?和在普通計算機上開發linux程式一樣,

首先編寫應用程式的源**,只不過編譯的時候不能用gcc編譯,需要用arm-elf-gcc編譯。編譯以後的可執行檔案必須

,可以修改uclinux系統中/etc/rc檔案的內容來來實現。如果要用gdb來除錯使用者程式,可以www.uclinux.org上

的相關文件。

關於作者

http://www.dailzh.net , 誠邀你的加盟。

自己動手編寫嵌入式Bootloader之(3)

因為在 cs8900a的驅動程式中需要用到延時,因此有必要對s3c2440的計時器進行使能和初始化,並編寫延時程式。s3c2440a共有5個定時器,編號為timer0 timer4。其中timer0 timer3都有輸出引腳,可以通過定時器來控制引腳電平週期性的變化,這稱為脈衝寬度調製 pwm pu...

嵌入式 linux 編譯

第二次換了編譯環境編譯時又提示 make 3 drivers video console vgacon.o 錯誤 1 在網上搜尋結果 根據資訊的大概意思是關於vga的支援問題,在這裡我直接把關於vga的配置選項去掉不選,即 在執行 make menuconfig 配置時 不選vga 驅動。devic...

linux嵌入式開發

我的環境 主機 ubuntu 64位 開發板 mini2440 6 makefile檔案修改 在 opt friendlyarm mini2440 linux 2.6.29下執行 sudo vi.makefile 搜尋arm linux得到乙個結果 cross compile?arm linux 然...