嵌入式系統設計(七):Android4.0.3 鏡像的編譯(包含uboot的編譯和linux內核的編譯)

前言:
在接下來的時間裏將更新一個專欄:嵌入式系統設計。在這個專欄裏將會介紹基於iTOP-4412 Cortex A9開發板的嵌入式系統設計,從入門到實踐可以無障礙的學習。歡迎大家關注收藏學習!!!!
在這裏插入圖片描述
文章嵌入式系統設計(一):虛擬機、Ubuntu的安裝以及SSH 軟件的安裝使用:裏面詳細介紹了SSH軟件的安裝和ssh 軟件在主機和虛擬機之間傳文件。
文章嵌入式系統設計(二): 虛擬機和主機之間共享文件夾:裏面詳細介紹了部分用戶無法正常使用 ssh 軟件在主機和虛擬機之間傳文件,虛擬機和主機之間採用共享文件夾的方式傳遞文件。
文章嵌入式系統設計(三):Vim編輯器的學習:裏面詳解介紹了Vim編輯器的安裝以及對相關使用命令的介紹。
文章嵌入式系統設計(四):iTOP-4412裸機開發環境搭建(詳細介紹DNW 驅動安裝):裏面詳細介紹了iTOP-4412裸機開發環境的搭建以及詳細介紹了DNW驅動的安裝。
文章嵌入式系統設計(五):詳細介紹win8/win10下安裝 PL2303 驅動以及android_ADB驅動:裏面詳細介紹win8/win10下安裝 PL2303 驅動以及android_ADB驅動。
文章嵌入式系統設計(六): iTOP-4412 開發板鏡像的燒寫(包含OTG 接口燒寫方式和TF卡燒寫方式):裏面詳細介紹了OTG 接口燒寫方式和TF卡燒寫方式。


無論什麼文件系統都需要和 linux 內核以及 uboot 對應,所以先介紹Android4.0.3 文件系統對應的 uboot 以及 kernel 編譯,再介紹Android4.0.3 文件系統的編譯。

1 uboot 的編譯

1.1 源碼目錄

在這裏插入圖片描述

1.2 編譯器

如下圖所示,編譯器是“arm 交叉編譯器”下的“arm-2009q3.tar.bz2”,如果使用的是搭建好的環境,確保編譯器環境變量,如下圖所示。
打開環境變量配置文件命令:“vim .bashrc”,
修改完之後更新環境變量命令:“source .bashrc”。

在這裏插入圖片描述

1.3 參數配置

編譯 uboot 的腳本是源碼文件夾中的“build_uboot.sh”,在編譯的時候需要向腳本傳參數,根據核心板的不同,腳本執行參數如下表所示。

硬件分類 腳本執行參數
核心板 SCP 1G 內存 SCP_1GDDR
核心板 SCP 2G 內存 SCP_2GDDR
核心板 POP 1G 內存 POP_1GDDR
核心板 POP 2G 內存 POP_2GDDR

1.4 編譯生成 uboot 鏡像舉例

這裏以 SCP 1G 核心板爲例編譯 uboot 鏡像。
將目錄下“CodeSign4SecureBoot_POP”、“CodeSign4SecureBoot_SCP”以及“iTop4412_uboot_xxx.tar.gz”拷貝到 Ubuntu 系統下,然後將“iTop4412_uboot_xxx.tar.gz”解壓,得到“iTop4412_uboot”文件夾,如下圖所示。
在這裏插入圖片描述
進入“iTop4412_uboot”文件夾,使用編譯腳本“build_uboot.sh”編譯 uboot,這裏需要編譯的是“SCP 1G 核心板”的 uboot 鏡像,那麼編譯命令是
./build_uboot.sh SCP_1GDDR
輸入編譯命令,如下圖所示。這裏一定先確定核心板是哪種類型,然後將對應的參數傳到腳本。
在這裏插入圖片描述
如下圖所示,編譯中。
在這裏插入圖片描述
如下圖所示,腳本執行完成,在“iTop4412_uboot”文件夾下生成了
“u-boot-iTOP-4412.bin”文件。生成的文件“u-boot-iTOP-4412.bin”文件就是 SCP 1G內存核心板對應的 uboot 鏡像文件。
在這裏插入圖片描述

2 Linux 內核的編譯

2.1 源碼目錄

Linux 內核源碼uboot 和 kernel目錄下,如下圖所示。
在這裏插入圖片描述

2.2 編譯器

內核的編譯器和 uboot 的編譯器一樣。

2.3 參數配置

內核的編譯是組合式配置文件,基本的配置文件名是“config_for_android_YY_elite”,YY 表示用下表所示的參數替代。

硬件分類 配置文件
核心板 SCP 1G 或者 2G 內存 config_for_android_scp_elite
核心板 POP 1G 內存 config_for_android_pop_elite
核心板 POP 2G 內存 config_for_android_pop2G_elite

2.4 編譯生成內核鏡像舉例

這裏以 SCP 1G 核心板爲例編譯 zImage 內核鏡像,那麼配置文件爲
config_for_android_scp_elite”。
將目錄下的壓縮包“iTop4412_Kernel_3.0_xxx.tar.gz”拷貝到 Ubuntu,然後解壓,得到文件夾“iTop4412_Kernel_3.0 ”,如下圖所示。
在這裏插入圖片描述
進入文件夾“iTop4412_Kernel_3.0 ”,使用命令
cp config_for_android_scp_elite .config”覆蓋自帶的配置文件,如下圖所示。
在這裏插入圖片描述
然後使用編譯命令“make zImage”,如下圖所示。
在這裏插入圖片描述
編譯中,如下圖所示。
在這裏插入圖片描述
編譯完成,如下圖所示。
在這裏插入圖片描述
文件夾“iTop4412_Kernel_3.0 ”下的“arch”–>“arm”–>“boot”會生成鏡像文件
“zImage”,這個 zImage 鏡像可以給 SCP 1G 和 SCP 2G 的核心板使用,如下圖所示。
在這裏插入圖片描述

3 Android4.0.3 的編譯

3.1 源碼目錄

Android4.0.3 文件系統的源碼,如下圖所示。
在這裏插入圖片描述

3.2 編譯器

Android4.0.3 的編譯器是 gcc 4.4.7 版本(包括其他所有版本的 Android 編譯器都是相同的),如下圖所示,在控制檯使用命令“gcc -v”,可以查看到 gcc 的版本。
在這裏插入圖片描述

3.3 參數配置

無參數配置。所有種類核心板對應的 Android4.0.3 都使用同一套源碼,同一種編譯方法。編譯腳本是“build_android.sh”。

3.4 編譯生成 Android4.0.3 鏡像

將目錄下壓縮包“iTop4412_ICS_git_xxx.tar.gz”拷貝到 Ubuntu 系統中,解壓壓縮包,得到文件夾“iTop4412_ICS_git”。這裏需要注意的是,Android 源碼文件夾“iTop4412_ICS_git ”和內核源碼文件夾“iTop4412_Kernel_3.0”需要放到同一目錄下,如下圖所示。
在這裏插入圖片描述
進入“iTop4412_ICS_git”目錄,使用命令“./build_android.sh”運行編譯腳本,編譯Android4.0.3,如下圖所示。
在這裏插入圖片描述
開始編譯,如下圖所示。
在這裏插入圖片描述
編譯比較耗費時間,第一次編譯會花費 60 分鐘以上。
在這裏插入圖片描述
編譯完成後在文件夾“iTop4412_ICS”–>“out”–>“target”–>“product–>
“smdk4x12”中生成 Android4.0.3 鏡像文件“ranmdisk-uboot.img”和“system.img”,如下圖所示。
在這裏插入圖片描述
如果想要支持 wifi,在編譯好內核之後,還需要在內核目錄中,執行編譯模塊的命令“make modules”,再執行編譯 Android4.0.3 文件系統的腳本。

有用的話各位老鐵來個三連擊!!!
有用的話各位老鐵來個三連擊!!!
有用的話各位老鐵來個三連擊!!!

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章