當前位置:首頁 » 編程軟體 » android編譯uboot

android編譯uboot

發布時間: 2023-03-15 03:32:44

Ⅰ 如何製作安卓平板系統鏡像

對Android系統的所有模塊進行編譯之後,對編譯出來的模塊文件進行打包。
打包結果就是是獲得一系列的鏡像文件,例如system.img、boot.img、ramdisk.img、userdata.img和recovery.img等。
些鏡像文件最終可以燒錄到手機上運行。
Android編譯系統在初始化的過程中,會通過根目錄下的Makefile腳本載入build/core/main.mk腳本,接著build/core/main.mk腳本又會載入build/core/Makefile腳本,而Android系統鏡像文件就是由build/core/Makefile腳本負責打包生成的。
system.img鏡像文件描述的是設備上的system分區,即/system目錄,它是在build/core/Makefile文件中生成的
build/core/main.mk文件定義了boot.img鏡像文件的依賴規則,我們可以通過執行make bootimage命令來執行。其中,bootimage是一個偽目標,它依賴於INSTALLED_BOOTIMAGE_TARGET。
build/core/main.mk文件定義了ramdisk.img鏡像文件的依賴規則,我們可以通過執行make ramdisk命令來執行。其中,ramdisk是一個偽目標,它依賴於INSTALLED_RAMDISK_TARGET。
userdata.img鏡像描述的是Android系統的data分區,即/data目錄,裡麵包含了用戶安裝的APP以及數據等等。
recovery.img是設備進入recovery模式時所載入的鏡像。recovery模式就是用來更新系統的,我們可以認為我們的設備具有兩個系統。一個是正常的系統,它由boot.img、system.img、ramdisk.img和userdata.img等組成,另外一個就是recovery系統,由recovery.img組成。平時我們進入的都是正常的系統,只有當我們需要更新這個正常的系統時,才會進入到recovery系統。因此,我們可以將recovery系統理解為在linux Kernel之上運行的一個小小的用戶空間運行時。這個用戶空間運行時可以訪問我們平時經常使用的那個系統的文件,從而實現對它的更新。

Ⅱ 整體編譯Android系統,大家用了多少時間

我自己實際編譯ICS4.0.4源碼情況:acer台式機,3.2Ghz cpu,4核,8GB/1600hz內存,整體編譯(含u-boot、kernel、boot.img和system.img)需要1小時10分鍾。編譯時,使用make -j8(因為硬體cpu是4線程的,故使用2倍線程數)。之後的增量編譯,一般需要5~10分鍾即可。

Ⅲ 什麼是android嵌入式開發

android嵌入式開發
移動是IT發展未來 !嵌入式底層就是移動的發展未來 !如何在這個風雲際會的時代,讓自己積極的參與其中,作為程序員 ,嵌入式是無可避免的選擇 !Android嵌入式底層課程繼續以Sundy獨有的分享方式 ,
基本信息
中文名稱
android嵌入式開發
發布時間
2012年

時 長
300小時+
語 種
中文

目錄
1簡介

2基本信息

3目錄

折疊編輯本段簡介
移動是IT發展未來 !嵌入式底層就是移動的發展未來 !如何在這個風雲際會的時代,讓自己積極的參與其中,作為程序員 ,嵌入式是無可避免的選擇 !Android嵌入式底層課程繼續以Sundy獨有的分享方式 ,深入淺出,不僅僅講解技術,更多的關注大家的職業生涯和發展,關注企業規模化工作中的模式。
折疊編輯本段基本信息
名稱:android嵌入式底層開發
時長:300小時+
語種:中文
發布時間:2012年
作者:sundy(張凌華)
折疊編輯本段目錄
折疊第一階段
Linux基礎及操作系統框架概述
Linux常用命令及vi
Linux系統設置
C語言重點難點講解
Linux Shell編程
折疊第二階段
GNU開發環境基礎
GNU Makefile
Linux嵌入式系統開發環境搭建
Linux應用系統開發基礎
Linux文件I/O編程
Linux進程式控制制
Linux進程間通訊
Linux多線程編程
Linux網路編程
折疊第三階段
嵌入式系統及微處理器概述
嵌入式電路圖基礎
ARM處理器系統結構
ARM匯流排方式及存儲器結構層次
ARM指令集及定址方式,Thumb指令
ARM開發環境ADS應用
ARM匯編及混合編程
Bootloader介紹及Uboot結構講解
Uboot全方位(移植,修改,編譯,生成,燒寫)
ARM硬體介面開發
裸板驅動開發
折疊第四階段
嵌入式Linux系統開發及移植
Linux內核原理概要
Linux內核配置與裁減
Linux內核編程
Linux驅動開發基礎
Linux驅動開發深入
折疊第五階段
Android系統驅動開發差異化
Android特定驅動開發
Android系統移植概述
Android RIL開發基礎
Webkit在Android上的移植
課程總結:未來是移動的未來
折疊項目
:Android從底層驅動一直到上層的修改,移植 ,通過編寫一個上層的Application來操作底層硬體;:
車載通訊多媒體系統(網路通信協議應用,包括藍牙,NFC,FM)遵循Delphi組織歐洲車載Android標准規范;
物聯網家居控制模塊兒(家庭視頻採集及傳輸模塊,實現遠程監控);
Android電磁原理手機無線充電改裝(以Sundy的Galaxy Nexus為例,改裝手機無線充電功能並且擴展外設-包括底座及手機);

Ⅳ Yocto編譯傑發或MTK的linux或android時的幾個問題

編譯問題1(audiomanager_7.0.bb的do_configure報錯):

錯誤:CMake Error at Plugins/PluginCommandInterfaceCAPI/cmake/CommonAPI.cmake:352 (message):

|   Failed to generate files from FIDL:

手動執行一下:

$ commonapi-generator-linux-x86 -ll verbose -sk Default -d . /data/linux/hz_rs28_bm/sources/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/audiomanager/7.0-r1/audiomanager-7.0/Plugins/PluginCommandInterfaceCAPI/fidl/CommandInterface.fidl

-bash: /data/linux/hz_rs28_bm/sources/src/build/tools/commonapi_tool/commonapi-generator/commonapi-generator-linux-x86: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

解決(需要安裝32位的glibc庫和32位java jre環境):

$ sudo yum install glibc.i686

$ sudo yum install java-1.8.0-openjdk.i686

$ sudo ln -s /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.i386/jre/bin/java /bin/java

$ java -version    (保證是32位的java)

編譯問題2(perl_5.20.0.bb的do_package報錯):

錯誤:ERROR: obj failed with exit code 256 (cmd was 『arm-poky-linux-gnueabi-obj』 –only-keep-debug

… generate_uudmap: File format not recognized

解決(tar在1.29版本之後需要exclude在路徑的前面):

sources/meta/poky/bitbake/lib/bb/fetch2/bzr.py

tar_flags = 「–exclude 『.bzr』 –exclude 『.bzrtags'」

修改成:

tar_flags = 「–exclude=』.bzr』 –exclude=』.bzrtags'」

sources/meta/poky/bitbake/lib/bb/fetch2/cvs.py

tar_flags = 「–exclude 『CVS'」

修改成:

tar_flags = 「–exclude=』CVS'」

sources/meta/poky/bitbake/lib/bb/fetch2/repo.py

tar_flags = 「–exclude 『.repo』 –exclude 『.git'」

修改成:

tar_flags = 「–exclude=』.repo』 –exclude=』.git'」

sources/meta/poky/bitbake/lib/bb/fetch2/svn.py

tar_flags = 「–exclude 『.svn'」

修改成:

tar_flags = 「–exclude=』.svn'」

sources/meta/poky/meta/recipes-devtools/quilt/quilt-0.63.inc

       tar -cf – bin/ –exclude \*.in | ( cd ${D}${PTEST_PATH} && tar -xf – )

       tar -cf – compat/ –exclude \*.in | ( cd ${D}${PTEST_PATH} && tar -xf – )

       tar -cf – quilt/ –exclude \*.in | ( cd ${D}${PTEST_PATH} && tar -xf – )

       tar -cf – test/ –exclude mail.test –exclude delete.test | ( cd ${D}${PTEST_PATH} && tar -xf – )

修改成:

        tar -c –exclude=\*.in bin/ | ( cd ${D}${PTEST_PATH} && tar -xf – )

        tar -c –exclude=\*.in compat/ | ( cd ${D}${PTEST_PATH} && tar -xf – )

        tar -c –exclude=\*.in quilt/ | ( cd ${D}${PTEST_PATH} && tar -xf – )

        tar -c –exclude=mail.test –exclude=delete.test test/ | ( cd ${D}${PTEST_PATH} && tar -xf – && chmod 777 test)

sources/meta/poky/meta/recipes-extended/sed/sed-4.2.2/sed-add-ptest.patch

+       cd $(BUILDDIR); tar -cf – $(TESTDIR) –exclude *.o | ( cd $(DESTDIR) && tar -xf – )

修改成:

+       cd $(BUILDDIR); tar -c –exclude=*.o $(TESTDIR) | ( cd $(DESTDIR) && tar -xf – )

sources/meta/poky/meta/recipes-support/attr/acl.inc

tar -cf – test/ –exclude nfs | ( cd ${D}${PTEST_PATH} && tar -xf – )

修改成:

tar -c –exclude=nfs test/ | ( cd ${D}${PTEST_PATH} && tar -xf – )

sources/meta/poky/meta/recipes-support/attr/attr.inc

tar -cf – test/ –exclude ext | ( cd ${D}${PTEST_PATH} && tar -xf – )

修改成:

tar -c –exclude=ext test/ | ( cd ${D}${PTEST_PATH} && tar -xf – )

sources/meta/poky/meta/recipes-devtools/perl/perl-ptest.inc

       tar -cf – * –exclude \*.o –exclude libperl.so –exclude Makefile –exclude makefile –exclude hostperl \

               –exclude miniperl –exclude generate_uudmap –exclude patches | ( cd ${D}${PTEST_PATH} && tar -xf – )

修改成:

        tar -c –exclude=\*.o –exclude=libperl.so –exclude=Makefile –exclude=makefile –exclude=hostperl \

                –exclude=miniperl –exclude=generate_uudmap –exclude=patches * | ( cd ${D}${PTEST_PATH} && tar -x )

編譯問題3(libunwind_1.1.bb的do_compile報錯):

錯誤:make[1]: latex2man: Command not found

解決:

$ sudo yum install texlive-tetex

$ sudo rpm -ivh ~/latex2man-1.18-2.noarch.rpm

編譯問題3(qt5-app_1.0.bb的do_compile報錯):

錯誤(有一批類似的錯誤):ld: cannot find -lgtest

解決:

$ vi atc_linux/application/btate/btate.pro

equals(MY_BUILD_SYSTEM, atc) {

    LIBS += -L $(DA_LIBDIR)/lib -lgtest -lpthread -lbluetoothclient -lglobalbus -lappobj -lapputils

} else {

    LIBS += -L$(DA_TOP)/application/lib -L$(DA_TOP)/../../sources/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/atc-binarys/1.0-r0/image/usr/lib -lgtest -lpthread -lbluetoothclient -l

globalbus -lappobj -lapputils

}

$ vi atc_linux/application/gps/gps_bin.pro

equals(MY_BUILD_SYSTEM, atc) {

    LIBS += -L $(DA_LIBDIR)/lib  -lapputils  -lglobalbus -lappobj -lgps

} else {

    LIBS += -L$(DA_TOP)/application/lib -L$(DA_TOP)/../../sources/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/gpsd/3.10-r0/gpsd-3.10/ -lapputils  -lglobalbus -lappobj -lgps

}

$ vi atc_linux/application/dvr/dvr_bin.pro

equals(MY_BUILD_SYSTEM, atc) {

        LIBS    += -L${DA_TOP}/lib/lib/ -ldvr -ludev -lsurface_atc -lglobalbus -lappobj -lapputils -lstorage_atc -lgps

} else {

        LIBS    += -L${DA_TOP}/application/lib -L$(DA_TOP)/../../sources/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/gpsd/3.10-r0/gpsd-3.10/ -ldvr -ludev -lsurface_atc -lglobalbus –

lappobj -lapputils -lstorage_atc -lgps

}

$ vi atc_linux/application/dvr/dvr_bin.pro

INCLUDEPATH +=  ${DA_TOP}/kernel/kernel-3.18/drivers/ \

                ../common/  \

                ../utils/   \

                ../appobj/include/          \

                ../globalbus/include/       \

                ../appcommon/include/       \

                ../storage_atc/             \

                ../dvr/gps/             \

                ../gps/include/         \

                ../gps/includeex/       \

編譯問題4(makall報錯):

報錯:./makall: line 169: mkisofs: command not found

解決:$ sudo yum install mkisofs

編譯問題5(修改ac83xx_systemd_defconfig再編譯時報錯):

報錯:Applying patch remove-selinux-android.patch

patching file system/extras/ext4_utils/make_ext4fs.c

Hunk #1 FAILED at 62.

1 out of 1 hunk FAILED — rejects in file system/extras/ext4_utils/make_ext4fs.c

解決:

$ vi sources/meta/meta-atc/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb

在裡面做個假的do_patch(),bitbake會優先使用本bb文件的do_patch()函數。

do_patch(){

}

編譯問題6(修改ac83xx_systemd_defconfig再編譯時報錯):

報錯:sources/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/qtbase/5.5.0+gitAUTOINC+c619d2daac-r0/git/src/corelib/tools/qregexp.cpp:3947:1: internal compiler error: in add_stores, at var-tracking.c:6000

解決:

$ cd sources/meta/poky/meta/recipes-devtools/gcc/gcc-4.9/

$ wget  http://openlinux.windriver.com/overc/sources/core2_64/gcc-4.9.2-r0.1/0062-gcc-var-tracking.c-backport-from-gcc-trunk-r212178.patch

$ vi sources/meta/poky/meta/recipes-devtools/gcc/gcc-4.9.inc

    file://0058-gcc-r212171.patch \

    file://0059-gcc-PR-rtl-optimization-63348.patch \

    file://target-gcc-includedir.patch \

    file://0062-gcc-var-tracking.c-backport-from-gcc-trunk-r212178.patch \

其實就是這個文件:

$ cat 0062-gcc-var-tracking.c-backport-from-gcc-trunk-r212178.patch

From Mon Sep 17 00:00:00 2001

From: =?UTF-8?q?Stefan=20M=C3=BCller-Klieser?= <[email protected]>

Date: Tue, 7 Apr 2015 16:15:11 +0200

Subject: [PATCH] gcc/var-tracking.c: backport from gcc trunk r212178

MIME-Version: 1.0

Content-Type: text/plain; charset=UTF-8

Content-Transfer-Encoding: 8bit

resolves a bug seen on cortexa8 building qt5 libraries.

2014-06-30  Joseph Myers  <[email protected]>

    * var-tracking.c (add_stores): Return instead of asserting if old

    and new values for conditional store are the same.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212178 138bc75d-0d04-0410-961f-82ee72b054a4

Signed-off-by: Stefan Müller-Klieser <[email protected]>

---

gcc/var-tracking.c | 3 ++-

1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c

index 65d8285..7c38910 100644

--- a/gcc/var-tracking.c

+++ b/gcc/var-tracking.c

@@ -5997,7 +5997,8 @@ add_stores (rtx loc, const_rtx expr, void *cuip)

    {

      cselib_val *oval = cselib_lookup (oloc, GET_MODE (oloc), 0, VOIDmode);

-      gcc_assert (oval != v);

+      if (oval == v)

+        return;

      gcc_assert (REG_P (oloc) || MEM_P (oloc));

      if (oval && !cselib_preserved_value_p (oval))

--

1.9.1

編譯問題7(修改ac83xx_systemd_defconfig再編譯時報錯):

報錯:libevdev/1.2.2-r0/libevdev-1.2.2/test/test-main.c:24:19: fatal error: check.h: No such file or directory

解決:

$ vi meta/poky/meta/recipes-support/libevdev/libevdev_1.2.2.bb

LIC_FILES_CHKSUM = 「file://COPYING;md5= \

                    file://libevdev/libevdev.h;endline=21;md5=″

DEPENDS += 「libcheck」

SRC_URI = 「 http://www.freedesktop.org/software/libevdev/ ${BP}.tar.xz」

編譯問題8(修改ac83xx_systemd_defconfig再編譯時報錯):

報錯:python報錯: 『do_rootfs』, lineno: 17, function

Exception: CalledProcessError: Command 『[『』, 『-ks』, …

解決: 沒有實際問題,重新編譯一次即可,可能是機器太忙導致超時,或者某個命令執行不成功。

編譯問題9(preuboot編譯工具問題):

報錯:make: armv7a-mediatek451_001_vfp-linux-gnueabi-gcc: Command not found

解決:

$ vi atc_linux/bootloader/preuboot/Makefile

#CROSS_COMPILE  :=armv7a-mediatek451_001_vfp-linux-gnueabi-

CROSS_COMPILE  :=arm-poky-linux-gnueabi-

$ vi ../../atc_linux/bootloader/preuboot/driver/mmc/include/linux/list.h

#ifndef NULL

    #define NULL 0

#endif

安卓系統fidsk工具 重新分區

三星手機uboot 下更改NAND的分區 fdisk

一、NAND分區大小:

機器用的是8G的INAND,三星平台一般把它分為四個區:

(1)、fat分區,作為sd卡用;

(2)、系統分區,相當為電腦c 盤,用來安裝android系統;

(3)、userdata分區;

(4)、cache分區。

二、分區更改操作過程

1,更改uboot中代碼/common/cmd_mmc_fdisk.c

在這個文件中我們可以看到對四個分區大小的定義:

熱點內容
存款機的安全密碼是什麼 發布:2025-07-20 09:53:03 瀏覽:30
手機如何清理空文件夾 發布:2025-07-20 09:40:35 瀏覽:70
什麼軟體可以編譯文件 發布:2025-07-20 09:35:17 瀏覽:961
可編程式控制制器的定義 發布:2025-07-20 09:28:10 瀏覽:390
陌陌會員訪問不留痕跡 發布:2025-07-20 09:28:08 瀏覽:308
x27熱點密碼是多少 發布:2025-07-20 09:03:19 瀏覽:577
c語言編碼生日快樂 發布:2025-07-20 08:56:56 瀏覽:390
伺服器北京雲空間 發布:2025-07-20 08:55:29 瀏覽:261
秦皇島少兒編程 發布:2025-07-20 08:55:19 瀏覽:63
android獲取imsi 發布:2025-07-20 08:42:24 瀏覽:774