Linux内核移植_rom内核移植(Download)
這兩天在友善的tiny210的實驗板上移植了linux內核,正好和大家分享,同時也算是做個記錄吧!首先介紹一下開發環境吧,這個在做移植的時候還是挺重要的。
主機linux:Fedora9 安裝在VMware虛擬機上;
開發板 :友善的tiny210,256M的FLASH;
移植linux:LINUX-3.3.5;
交叉編譯環境:arm-linux-gcc-4.4.3 這個是友善2440里帶的;
u-boot :是網上找的,待會我給出源文件。
1.燒寫啟動文件
要移植操作系統,肯定是需要啟動代碼了,也就是u-boot了。我自己沒有移植u-boot,是從網上現找的。好吧,我上傳一下,也方便大家下載。連接地址:http://download.csdn.net/detail/xie0812/6189627是在windows下壓縮的,里面包含兩文件,分別為u-boot的源文件和直接用于下載用的.bin文件。u-boot有了,現在說說怎么把.bin文件燒寫到sd上吧。首先把.bin文件拷貝到linux系統中,隨便在一個文件夾下就行。下來就是往sd里燒寫了,當然了sd是必須的嘛。這里給個插曲,把sd插到電腦后,windows下發現了,但虛擬里的linux系統發現不了,后來是通過這么解決的,點擊VMware的VM—–>Rmovables Devices——->USB Device——>Rmovable disk,當然這是在發現不了sd的情況下才這樣滴,而且可能跟虛擬機和主機上的linux系統有關,環境不一樣可能會不同。當發現了sd后,就進入你放tiny210v2–uboot.bin的文件夾。這時你通過cat /proc/partitions 命令查看你的sd卡對應的設備文件的名字,這里我的是sdb,可能會有不同。好吧,現在文件準備好了,sd也發現了,就差燒寫了。通過sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.bin of=/dev/sdb seek=1 ,這個命令把.bin燒寫到sd中,這里注意命令中的/dev/sdb一定是你sd卡在linux系統中的名字。
2.下載linux源代碼
咱們去linux官網上下載吧,這個是連接:https://www.kernel.org/ 在這里下載linux-3.3.5。
3.修改Makefile文件
下載到源代碼后,首先是解壓,解壓的命令是 tar xvzf linux-3.3.5.tar.gz 這樣就完成了解壓。現在修改一些設置,為編譯做準備。首先,修改linux下的Makfile文件,進入解壓后的linux-3.3.5,通過vi Makefile 命令打開修改文件。在文件的195行和196行處修改,沒修改以前的代碼為:
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
修改后的代碼為:
ARCH ?= arm
CROSS_COMPILE ?= /opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-
第一行的修改大家肯定是明白的嘛,因為咱們需要移植到arm上,所以是arm嘛。第二行的是你的交叉編譯器所處的位置,可能每個人的目錄會不同,看具體的情況來吧。這里簡單的插入一句題外話,通過vi Makefile時,通過命令set nu可以使Makefile文件顯示行數。
4.編譯內核
把smdk210v板子的config文件拷過來了,進行內核編譯。簡單的說一下,咱們在這里的移植是屬于板級的移植,一般來說移植操作系統分為:體系結構級的移植、soc級的移植和板級的移植。板級的移植是最簡單的,往往是在芯片制作廠商提供的樣板的基礎上做移植。當然一般來說,這就夠了。好吧,不扯了。在linux-3.3.5目錄下,通過cp arch/arm/configs/s5pv210_defconfig .config 把對smdkv210板的配置文件拷貝到linux-3.3.5目錄下,并且保存為.config文件。現在把配置文件拷貝過了,通過命令:make menuconfig 進入配置界面進行配置吧。進入后的界面為:
這就是剛進入的界面,這時選擇General setup 進入另外一個界面:
在圖中選擇可以看到的Cross-compiler tool prefix(new),然后輸入交叉編譯器的路徑,輸入后的結果為:
注意輸入最后的是arm-linux-gcc,接下來退到剛開始的界面下,選擇System Types——->這個選項
看到圖中高亮的部分了,選中這個選項,把1改成0,為什么要改了,因為開發板上是用UART0輸出信息的,如果不修改,會在啟動內核的時候,無法顯示信息。也就是在 Start kenel….之后不顯示信息的緣故。修改后的效果圖為:
接下來的工作是繼續退到剛進入的界面,選擇Boot options——–>選項,進入后的效果圖為:
同樣看到圖中高亮的部分了吧,用Enter鍵選擇它,把里面的console=ttySAC1改為console=ttySAC0,其他的不變,由于也看不到效果,就不貼圖了,這樣就完成了內核的基本配置,很簡單吧,當然這只是一個內核的雛形,其他的都沒配置,所以簡單了。現在開始編譯吧,你也等不急了吧。運行 make uImage 命令,開始內核的編譯。可惜,出現了下面的錯誤,沒事,慢慢解決嘛
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
"mkimage" command not found - U-Boot images will not be built
make[1]: *** [arch/arm/boot/uImage] Error 1
make: *** [uImage] Error 2
看上面的提示是說找不到mkimage,原因就不說了,這個問題是這樣解決的。拷貝一個mkimage文件到相應的交叉編譯器的相應的目錄下,mkimage是bootloader里tools目錄下的一個文件,我這里提供的這個文件也是友善2440帶的,給大家一個鏈接吧:
http://download.csdn.net/detail/xie0812/6191183因為我的交叉編譯器的在/opt/FriendlyARM/toolschain/4.4.3,所以應該把它拷貝到
/opt/FriendlyARM/toolschain/4.4.3/bin目錄下,同時把名字改為arm-linux-mkimage。對于這個問題,可能網上有許多解決的辦法,我都試,但不行,最是這么解決的。如果你用這種辦法不行的話,那就在網上在找找吧。看,這就順利的編譯完成了:
Image Name: Linux-3.3.5
Created: Sun Sep 1 11:14:07 2013
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1181392 Bytes = 1153.70 kB = 1.13 MB
Load Address: 0x20008000
Entry Point: 0x20008000
Image arch/arm/boot/uImage is ready
看到這個結果就證明已經編譯通過了。不過現在只是內核編譯通過,怎么樣讓它在tiny210上啟動了,這個下一篇,咱們繼續!
總結
以上是生活随笔為你收集整理的Linux内核移植_rom内核移植(Download)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在 SAP 电商云 Spartacu
- 下一篇: IC卡、ID卡及车库蓝牙卡的复制说明!(