1. 程式人生 > >【Tiny4412--3】Kernel的配置、編譯和移植

【Tiny4412--3】Kernel的配置、編譯和移植

閱讀說明

該系列文章,基於的平臺均為Tiny4412SDK 1312;4G EMMC; 1G DDR3

帶@lamar:       字首的表示終端裡面的命令  帶@tiny4412: 字首的表示開發板終端裡的命令

前言

此處略

準備

linux原始碼包,本文使用的是:linux-3.5-20140822.tgz dnw工具,詳細配置請移步:dnw配置 交叉編譯環境,詳情請移步:編譯環境搭建 ubuntu 12.04

開始

==>>1. 配置和編譯

1)解壓

@lamar:tar zxvf linux-3.5-20140822.tgz @lamar:cd linux-3.5 12

2)在該目錄下我們可以看到已經存在了一些config項,具體的配置過程友善已經幫我們搞好了,這個後期會寫一個專門的編譯配置流程和原理,現在我們就暫時用現成的吧;拷貝4412的config到kernel的預設.config

@lamar:cp tiny4412_linux_defconfig .config @lamar:make -j 12

具體操作如下:    最後,編譯成功後,會有如下的提示(zImage編譯後存放的路徑): 

注意:

我這個版本,友善提供的預設config項,好像有問題;編譯出來之後kernel解壓不出來,卡在解壓的log上,後面發現是少了一個配置項,重新配置,重新編譯就好了。具體操作如下:

@lamar:make menuconfig 1

.a:選擇System Type    .b:去掉Support Trust….這個選項    配置完之後,直接起編譯就行了。

==>>2. 用dnw進行移植

1)dnw的詳細操作步驟參考博文:dnw配置  2)1中已經詳細的描述了,燒寫和啟動過程;但是你會發現每次boot只能引導一次kernel,第二次起來的時候boot就找不到kernel了;我們每次都得重新燒kernel和設定bootm,這也太麻煩了!  [email protected]~不過這裡我們可以先把kernel拷貝到sd卡上,然後簡單的通過設定bootm環境變數,讓boot自動的去載入kernel;在boot介面下,我們可以執行如下操作:

.a:對sd卡進行分割槽(注意分割槽的格式),然後,把zImage拷貝到對應的分割槽裡(一般選擇sd卡的第一個分割槽,且分割槽格式為fat32);該部分內容在busybox檔案系統的構建中會詳細的描述:基於busybox的簡單根檔案系統構建

.b:設定好bootm的環境變數

/*載入mmc裝置上的第一塊分割槽的zImage,並引導核心*/ @tiny4412:set bootcmd "fatload mmc 0:1 0x40008000 zImage;bootm 0x40008000" @tiny4412:save @tiny4412:res 1234

此時,應該就可以看到,boot自動的載入核心,解壓……..