日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Android系统移植与调试之-------Amlogic方案编译步骤

發(fā)布時間:2025/3/15 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android系统移植与调试之-------Amlogic方案编译步骤 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.?拷貝AmlogicSourceCode

切換目錄到??/home/roco/work/amlogic/SourceCode/mx0831-0525下將mx0831-0525.tgz拷貝到??/home/pyou/?目錄下,解壓,生成mx0831-0525目錄。此目錄就是將來的工作目錄。??tar.bz2?命令:?tar?-jxvf??*.tar.bz2

2.?配置環(huán)境變量

2.1?準備工作

切換目錄到?/home/roco/work/amlogic/Document中,拷貝amlogic-tool.zip到?/home/pyou下解壓生成?amlogic-tool目錄

該目錄下有以下3個壓縮文件

1. arm-2010q1-188-arm-none-eabi-i686-pc-linux-gnu.tar.bz2

2. arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu1.tar.bz2

3. gnutools-arc2.3-p0-ubuntu-9.04-2010-5-10.tar.bz2

由于前面兩個解壓的目錄相同,所以新建一個目錄188,并將arm-2010q1-188-arm-none-eabi-i686-pc-linux-gnu.tar.bz2移到188目錄下,解壓生成目錄/amlogic-tool/188/arm-2010q

切換目錄到/amlogic-tool,分別解壓gnutools-arc2.3-p0-ubuntu-9.04-2010-5-10.tar.bz2文件和arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu1.tar.bz2?文件,生成目錄/amlogic-tool/arm-2010q1和目錄/amlogic-tool/opt


2.2?修改.bashrc?文件添加環(huán)境變量

切換目錄到?/home/pyou目錄下,使用ll命令查文件列表,然后使用vim命令修改.bashrc?文件,在該文件最后添加環(huán)境變量。如下所示:

PATH="$PATH:/home/pyou/amlogic-tool/188/arm-2010q1/bin:/home/pyou/amlogic-tool/arm-2010q1/bin:/home/pyou/amlogic-tool/opt/gnutools/arc2.3-p0/elf32-4.2.1/bin:/home/pyou/amlogic-tool/opt/gnutools/arc2.3-p0/uclibc-4.2.1/bin"



3.?編譯u-boot

切換目錄到~/mx0831-0525/uboot目錄下

使用make?help?|grep?roco?查看項目配置,查看命令列表,然后再命令列表中查找到make?m6_roco_1212_config命令并使用該命令進行編譯,編譯完后再使用make命令進行編譯,在~/mx0831-0525/uboot/build目錄下會生成u-boot.bin文件

1.?make?m6_roco_1212_config

2.?Make

3.?cp?build/u-boot.bin??../device/other/TBDG1073


4.?編譯項目

切換目錄至~/mx0831-0525

4.1?使用source?build/envsetup.sh命令

這個命令是用來將envsetup.sh里的所有用到的命令加載到環(huán)境變量里去,我們來分析下它。

envsetup.sh里的主要命令如下:

function?help()?#?顯示幫助信息
function?get_abs_build_var()#?獲取絕對變量
function?get_build_var()#?獲取絕對變量
function?check_product()#?檢查product
function?check_variant()#?檢查變量
function?setpaths()               ?#?設置文件路徑
function?printconfig()#?打印配置
function?set_stuff_for_environment()      ??#?設置環(huán)境變量
function?set_sequence_number()        ????#?設置序號
function?settitle()               ?#?設置標題
function?choosetype()              ?#?設置type
function?chooseproduct()            ??#?設置product
function?choosevariant()            ??#?設置variant
function?tapas()                ??#?功能同choosecombo
function?choosecombo()             ??#?設置編譯參數(shù)
function?add_lunch_combo()           ??#?添加lunch項目
function?print_lunch_menu()           ?#?打印lunch列表
function?lunch()#?配置lunch
function?m()#?make?from?top
function?findmakefile()             ?#?查找makefile
function?mm()                  ?#?make?from?current?directory
function?mmm()                 ??#?make?the?supplied?directories
function?croot()#?回到根目錄
function?cproj()
function?pid()
function?systemstack()
function?gdbclient()
function?jgrep()#?查找java文件
function?cgrep()                ??#?查找c/cpp文件
function?resgrep()
function?tracedmdump()
function?runhat()
function?getbugreports()
function?startviewserver()
function?stopviewserver()
function?isviewserverstarted()
function?smoketest()
function?runtest()
function?godir?()?#?跳到指定目錄?405

?#?add_lunch_combo函數(shù)被多次調(diào)用,就是它來添加Android編譯選項
?#?Clear?this?variable.??It?will?be?built?up?again?when?the?vendorsetup.sh
?406?#?files?are?included?at?the?end?of?this?file.
?#?清空LUNCH_MENU_CHOICES變量,用來存在編譯選項
?407?unset?LUNCH_MENU_CHOICES
?408?function?add_lunch_combo()???
?409?{
?410?????local?new_combo=$1?????????#?獲得add_lunch_combo被調(diào)用時的參數(shù)
?411?????local?c
?????#?依次遍歷LUNCH_MENU_CHOICES里的值,其實該函數(shù)第一次調(diào)用時,該值為空
?412?????for?c?in?${LUNCH_MENU_CHOICES[@]}?;?do?
?413?????????if?[?"$new_combo"?=?"$c"?]?;?then????#?如果參數(shù)里的值已經(jīng)存在于LUNCH_MENU_CHOICES變量里,則返回
?414?????????????return
?415?????????fi
?416?????done
?????#?如果參數(shù)的值不存在,則添加到LUNCH_MENU_CHOICES變量里
?417?????LUNCH_MENU_CHOICES=(${LUNCH_MENU_CHOICES[@]}?$new_combo)
?418?}


#?這是系統(tǒng)自動增加了一個默認的編譯項?generic-eng
?420?#?add?the?default?one?here
?421?add_lunch_combo?generic-eng????#?調(diào)用上面的add_lunch_combo函數(shù),將generic-eng作為參數(shù)傳遞過去
?422?
?423?#?if?we're?on?linux,?add?the?simulator.??There?is?a?special?case
?424?#?in?lunch?to?deal?with?the?simulator
?425?if?[?"$(uname)"?=?"Linux"?]?;?then
?426?????add_lunch_combo?simulator
?427?fi

#?下面的代碼很重要,它要從vendor目錄下查找vendorsetup.sh文件,如果查到了,就加載它
1037?#?Execute?the?contents?of?any?vendorsetup.sh?files?we?can?find.
1038?for?f?in?`/bin/ls?vendor/*/vendorsetup.sh?vendor/*/build/vendorsetup.sh?2>?/dev/null`
1039?do
1040?????echo?"including?$f"
1041????.?$f???????#?執(zhí)行找到的腳本,其實里面就是廠商自己定義的編譯選項
1042?done
1043?unset?f

envsetup.sh其主要作用如下:

  1.?加載了編譯時使用到的函數(shù)命令,如:helplunchmmmmmm
  2.?添加了兩個編譯選項:generic-engsimulator,這兩個選項是系統(tǒng)默認選項
  3.?查找vendor/<-廠商目錄>/vendor/<廠商目錄>/build/目錄下的vendorsetup.sh,如果存在的話,加載執(zhí)行它,添加廠商自己定義產(chǎn)品的編譯選項
?其實,上述第3條是向編譯系統(tǒng)添加了廠商自己定義產(chǎn)品的編譯選項,里面的代碼就是:add_lunch_combo?xxx-xxx。

根據(jù)上面的內(nèi)容,可以推測出,如果要想定義自己的產(chǎn)品編譯項,簡單的辦法是直接在envsetup.sh最后,添加上add_lunch_combo?myProduct-eng,當然這么做,不太符合上面代碼最后的本意,我們還是老實的在vendor目錄下創(chuàng)建自己公司名字,然后在公司目錄下創(chuàng)建一個新的vendorsetup.sh,在里面添加上自己的產(chǎn)品編譯項

?

#mkdir?vendor/farsight/

#touch?vendor/farsight/vendorsetup.sh

#echo?"add_lunch_combo?fs100-eng"?>?vendor/farsight/vendorsetup.sh

?

這樣,當我們在執(zhí)行source?build/envsetup.sh命令的時候,可以在shell上看到下面的信息:

?

including?vendor/farsight/vendorsetup.sh

4.2?使用lunch命令


按數(shù)字17,因為該項目是17對應的項目TBG1073-user?

lunch命令是envsetup.sh里定義的一個命令,用來讓用戶選擇編譯項,來定義Product和編譯過程中用到的全局變量。

我們一直沒有說明前面的fs100-eng是什么意思,現(xiàn)在來說明下,fs100是我定義的產(chǎn)品的名字,eng是產(chǎn)品的編譯類型,除了eng外,還有user,?userdebug,分別表示:

eng:?工程機,

user:最終用戶機

userdebug:調(diào)試測試機

tests:測試機?

由此可見,除了enguser外,另外兩個一般不能交給最終用戶的,記得m8出來的時候,先放出了一部分eng工程機,然后出來了user機之后,可以用工程機換。

?

那么這四個類型是干什么用的呢?其實,在main.mk里有說明,在Android的源碼里,每一個目標(也可以看成工程)目錄都有一個Android.mkmakefile,每個目標的Android.mk中有一個類型聲明:LOCAL_MODULE_TAGS,這個TAGS就是用來指定,當前的目標編譯完了屬于哪個分類里。

?

????PS:Android.mkLinux里的makefile不太一樣,它是Android編譯系統(tǒng)自己定義的一個makefile來方便編譯成:c,c++的動態(tài)、靜態(tài)庫或可執(zhí)行程序,或java庫或android的程序,



4.3?使用make?custom1?命令

清除make?clean

打補丁make?custom1

打完補丁后記得執(zhí)行以下命令

find?.?-name?*.xml.orig?|?xargs?rm?

find?.?-name?*.xml.reg?|?xargs?rm

????????find?.?-name?*.xml.rej?|?xargs?rm

4.4?使用make?otapackage?–j8?命令

執(zhí)行完該命令后會在out/target/product/TBDG1073/目錄下生成一些zip升級壓縮包,如:out/target/product/TBDG1073/TBDG1073-ota-20130708.v016.zip??

生成的目標平臺的相關的文件在out/target/product/board_name/中(board_name要與目標平臺相匹配)。

目錄或文件

描述

gxxref-ota-eng.[linux?user?name].zip

升級包

obj/

存放中間文件的目錄

recovery/

recovery的rootfs目錄,和ramdisk.img相對應

res-package.img

uboot使用的一些資源(充電圖片等)

root/

正常啟動的rootfs目錄,和ramdisk-recovery.img相對應

symbols/

存放符號表的目錄

system/

存放大多數(shù)目標文件的目錄

u-boot.bin

uboot,就是自己項目目錄下的uboot文件

boot.img

正常啟動的鏡像,

由header+kernel(uImage)+ramdisk.img構成

recovery.img

recovery模式啟動的鏡像,

由header+kernel(uImage)+ramdisk-recovery.img構成



==================================================================================================

? 作者:歐陽鵬 ?歡迎轉載,與人分享是進步的源泉!

? 轉載請保留原文地址:http://blog.csdn.net/ouyang_peng

==================================================================================================





轉載于:https://www.cnblogs.com/ouyangpeng/p/8538349.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的Android系统移植与调试之-------Amlogic方案编译步骤的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。