Tiny4412上編譯燒錄android折騰筆記


1. 基礎環境說明

  • 開發板型號:FriendlyARM Tiny4412SDK-1312-S702
  • 編譯機linux環境:Ubuntu 14.04.5 下載地址
  • Android源碼版本:android-5.0.2-fs-20170116.tar.gz 下載地址
  • kernel源碼版本:linux-3.0.86-20170221.tgz 下載地址
  • uboot源碼版本:uboot_tiny4412_0929.tar.gz 下載地址

2. 配置步驟

以下配置步驟假設你對linux系統的基本知識已經有所了解,並已經擁有了ubuntu系統的root權限。不要盲目復制命令執行,你需要知道每條命令做了什么,根據自己的實際情況來操作。

2.1 安裝交叉編譯環境

  • 用到的文件:附贈的光盤中的arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz壓縮包

  • 配置方法:

    1. 首先在命令行進入壓縮包所在目錄並使用tar命令解壓,假設壓縮包所在目錄為/mnt/Disk-A/,則執行

      cd /mnt/Disk-A
      tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz –C /
      
    2. 配置系統環境變量。如果正常解壓,此時交叉編譯器已經被解壓到了/opt/FriendlyARM/toolschain/4.5.1這個目錄,需要設置環境變量以方便使用。

      假設你使用的shell是bash,使用你常用的編輯器(如vim,gedit)打開~/.bashrc,如果沒有這個文件,則新建。例如:

      vim ~/.bashrc
      

      然后將以下語句加入該文件的最后一行。

    export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin
    

    之后保存退出。

    1. 注銷用戶並重新登錄,此時在命令行執行arm-linux-gcc –v,如果能正常輸出版本信息,則說明交叉編譯器已經安裝成功,否則檢查前兩步是否出現了問題。

2.2 配置Android編譯環境

  1. 安裝java環境

    • 根據你要編譯的android版本選擇適合的JDK版本

    The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer

    Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg

    Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6

    Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5

    • 以我們本次用到的Android 5.0.2 和 Ubuntu14.04為例,我們需要安裝OpenJDK 7,這個包在ubuntu的軟件源里有了,所以我們只需要執行

      sudo apt-get install openjdk-7-jdk
      
    • 在命令行執行javajavac來檢查是否已經成功安裝了java環境。

  2. 安裝編譯必須的軟件包

  • 接下來需要在ubuntu上安裝編譯Android所需要的軟件包。

  • 如果你是ubuntu14.04的版本,在命令行執行以下命令安裝:

    sudo apt-get install git-core gnupg flex bison gperf build-essential \
      zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
      lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
      libgl1-mesa-dev libxml2-utils xsltproc unzip
    
  • 如果你是ubuntu12.04的版本,則執行以下命令:

    sudo apt-get install git gnupg flex bison gperf build-essential \
      zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
      libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
      libgl1-mesa-dev g++-multilib mingw32 tofrodos \
      python-markdown libxml2-utils xsltproc zlib1g-dev:i386
      
    sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
    
  • 推薦使用ubuntu14.04版本進行編譯工作,避免因為版本不同出現問題。

2.3 解壓源碼

2.3.1 解壓kernel源碼

將kernel源碼壓縮包解壓到一個用於編譯的文件夾中,假設我們的壓縮包放在/tmp/compile/kernel中,將其解壓到當前目錄只需要執行以下命令:

cd /tmp/compile/kernel
tar xvzf linux-3.0.86-20170221.tgz

之后就能在當前目錄下看到解壓好的linux-3.0.86文件夾。

2.3.2 解壓Android源碼

與解壓kernel類似,同樣進入壓縮包所在目錄將源碼包解壓。(解壓后大概14GB,要保證磁盤空間足夠)

例如:

cd /tmp/compile/android
tar xvzf android-5.0.2-fs-20170116.tar.gz

執行后就能得到解壓后的android源碼文件夾。

2.3.2 解壓uboot源碼

與前二者類似,都是使用tar命令解壓.tar.gz壓縮包。

例如:

cd /tmp/compile/uboot
tar xvzf uboot_tiny4412_0929.tar.gz

以上的三組命令並非必需,在圖形界面里解壓也並沒有什么影響。

2.4 編譯源碼

2.4.1 編譯kernel
  1. 首先進入源碼所在的目錄,例如:

    cd /tmp/compile/kernel/linux-3.0.86
    
  2. 接下來將源碼中tiny4412的內核配置設為默認配置

    cp tiny4412_android_defconfig .config
    
  3. 然后可以對內核的編譯選項進行自己的調整,執行

    make menuconfig
    

    會進入一個終端里的簡單界面,用於調整kernel的一些編譯選項

  4. 接下來就可以使用make命令進行編譯工作了。

    make -jN    # N代表編譯時的線程數,根據實際情況修改,可以加速編譯(如 make -j8)
    
  5. 編譯好后就可以在arch/arm/boot路徑下得到一個zImage文件,這就是編譯好的內核。

    下圖為編譯好內核時的輸出

2.4.2 編譯Android源碼
  1. 與編譯kernel類似,首先cd進入源碼所在目錄,並載入setenv腳本設置編譯時的環境:

    cd /tmp/compile/android/android-5.0.2    # 進入目錄
    . setenv   #這個點其實是個source命令,中間要有空格
    
  2. 執行make命令開始編譯。(需要很長時間)

    make -jN    # N代表編譯時的線程數,根據實際情況修改,可以加速編譯(如 make -j8)
    

    我們的8線程筆記本在編譯時的情況,CPU全部占用:

    編譯結束后的輸出:用時 1小時18分鍾56秒

  3. 這時還沒有結束,還需要執行一個腳本生成一些img文件

    ./gen-img.sh
    

    然后當前目錄就生成了system.img, ramdisk-u.img,這兩個就是我們接下來要用到的。

2.4.3 編譯uboot
uboot這里被坑了,啟動andoird后一段時間lcd滅,無反應,弄好了來填坑

2.5 燒錄系統

uboot這里被坑了,啟動andoird后一段時間lcd滅,無反應,弄好了來填坑

3. 參考資料

該配置指導所參考的資源、網站、個人博客有:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM