前言:
在接下來的時間裏將更新一個專欄:嵌入式系統設計。在這個專欄裏將會介紹基於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卡燒寫方式。
Android4.0.3 鏡像的編譯(包含uboot的編譯和linux內核的編譯)
無論什麼文件系統都需要和 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 文件系統的腳本。
有用的話各位老鐵來個三連擊!!!
有用的話各位老鐵來個三連擊!!!
有用的話各位老鐵來個三連擊!!!