Możesz tworzyć kompilacje dla urządzeń Nexus i Pixel, korzystając z kompilacji Android Open Source Project (AOSP) i odpowiednich plików binarnych specyficznych dla sprzętu. Aby zapoznać się z dostępnymi kompilacjami Androida i urządzeniami docelowymi, zobacz Tagi kodu źródłowego i kompilacje .
Możesz także tworzyć kompilacje dla płyt referencyjnych DragonBoard 845c , HiKey 960 , Khadas VIM3 i Qualcomm Robotics Board RB5 Android, które mają pomóc dostawcom komponentów niemobilnych w opracowaniu i przeniesieniu sterowników do wydań systemu Android. Korzystanie z płyty referencyjnej może ułatwić prace modernizacyjne, skrócić czas wprowadzania na rynek nowych urządzeń z systemem Android, obniżyć koszty urządzeń, umożliwiając producentom ODM/OEM wybór z szerszej gamy kompatybilnych komponentów oraz przyspieszyć wprowadzanie innowacji wśród dostawców komponentów.
Google obsługuje referencyjne karty DragonBoard 845c , HiKey 960 , Khadas VIM3 i Qualcomm Robotics Board RB5 Android. AOSP zapewnia obsługę źródeł jądra i płyt głównych dla tych płyt, dzięki czemu programiści mogą łatwo tworzyć i debugować sterowniki urządzeń peryferyjnych, opracowywać jądro i wykonywać inne zadania z mniejszymi obciążeniami OEM.
DragonBoard 845c
DragonBoard 845c jest częścią platformy RB3 i jest dostępny na stronie 96boards.org .
Rysunek 1. DragonBoard 845c
Kompilowanie przestrzeni użytkownika
Użyj następujących poleceń, aby pobrać i zbudować system Android na płycie DragonBoard 845c.
Pobierz drzewo źródeł Androida:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
Pobierz aktualny pakiet dostawcy:
./device/linaro/dragonboard/fetch-vendor-package.sh
Zbuduj AOSP:
. ./build/envsetup.sh
lunch db845c-userdebug
make -j24
Instalowanie obrazów lokalnych
Uruchom db845c w trybie szybkiego uruchamiania.
Uruchom następujące polecenie:
./device/linaro/dragonboard/installer/db845c/flash-all-aosp.sh
Jeśli to konieczne, możesz wykonać odzyskiwanie karty QDL, uruchamiając następujący skrypt po uruchomieniu db845c w trybie flashowania USB (zobacz DragonBoard Recovery ):
./device/linaro/dragonboard/installer/db845c/recovery.sh
Budowanie jądra
Aby zbudować artefakty jądra DragonBoard db845c Android Generic Kernel Image (GKI):
Uruchom następujące polecenia, aby sklonować źródło jądra i gotowe łańcuchy narzędzi systemu Android oraz skrypty kompilacji.
mkdir repo-common
cd repo-common
repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
repo sync -j8 -c
rm -rf out
tools/bazel run //common:db845c_dist -- --dist_dir=$DIST_DIR
Usuń wszystkie obiekty w
${AOSP_TOPDIR}device/linaro/dragonboard-kernel/android-mainline/
a następnie skopiuj artefakty kompilacji zout/android-mainline/dist/
do${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
następnie odbuduj przestrzeń użytkownika za pomocą:make TARGET_KERNEL_USE=mainline -j24
i sflashuj urządzenie z wynikowym plikiem boot.img i super.img (zobacz Kompilowanie przestrzeni użytkownika ).
Przetestuj jądro GKI:
Zobacz najnowszą kompilację kernel_aarch64 .
W artefaktach pobierz Image.
Spakuj obraz
gzip Image
Skopiuj go do
${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
.Odbuduj AOSP i sflashuj urządzenie z nowym plikiem boot.img (zobacz Kompilowanie przestrzeni użytkownika ).
Płyty HiKey 960
Płyta HiKey 960 jest dostępna w firmach Amazon i Lenovator .
Rysunek 2. Płyta HiKey 960 firmy Lenovator
Kompilowanie przestrzeni użytkownika
Użyj następujących poleceń, aby pobrać i zbudować system Android na płycie HiKey 960.
Pobierz drzewo źródeł Androida
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
Pobierz aktualny pakiet dostawcy
./device/linaro/hikey/fetch-vendor-package.sh
Budować
. ./build/envsetup.sh
lunch hikey960-userdebug
make -j24
Instalowanie obrazów lokalnych
Wybierz tryb szybkiego uruchamiania, włączając przełącznik 3 (szczegółowe informacje znajdują się w przewodniku wprowadzającym HiKey 960 ).
Zasil tablicę.
Flashuj lokalne obrazy:
./device/linaro/hikey/installer/hikey960/flash-all.sh
Wyłącz przełącznik 3 i włącz ponownie zasilanie płyty.
Budowanie jądra
Aby zbudować artefakty jądra HiKey960 Android GKI:
Uruchom następujące polecenia:
mkdir repo-common
cd repo-common
repo init -u https://android.googlesource.com/kernel/manifest -b common-android12-5.4
repo sync -j8 -c
rm -rf out
BUILD_CONFIG=common/build.config.hikey960 build/build.sh
Usuń wszystkie obiekty w
${AOSP_TOPDIR}device/linaro/hikey-kernel/hikey960/5.4/
a następnie skopiuj artefakty kompilacji z kompilacji jądra wout/android12-5.4/dist/
do${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/
Połącz DTB:
cat device/linaro/hikey-kernel/hikey960/5.4/Image.gz device/linaro/hikey-kernel/hikey960/5.4/hi3660-hikey960.dtb > device/linaro/hikey-kernel/hikey960/5.4/Image.gz-dtb
Zbuduj przestrzeń użytkownika Androida
lunch hikey960-userdebug
make TARGET_KERNEL_USE=5.4 HIKEY_USES_GKI=true -j24
i sflashuj urządzenie z nowym jądrem (zobacz Kompilowanie przestrzeni użytkownika )
Przetestuj jądro Generic Kernel Image (GKI).
Zobacz najnowszą kompilację kernel_aarch64 .
W artefaktach pobierz plik
Image
i skopiuj go do${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/
.Skompresuj obraz i połącz DTB
gzip ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/Image
cat ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/Image.gz ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/hi3660-hikey960.dtb > ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/Image.gz-dtb
- Zbuduj i sflashuj urządzenie z nowym jądrem (zobacz Kompilowanie przestrzeni użytkownika ).
Ustawianie numeru seryjnego
Aby ustawić losowy numer seryjny, uruchom:
fastboot getvar nve:SN@16\_DIGIT\_NUMBER
Bootloader eksportuje wygenerowany numer seryjny do jądra za pomocą androidboot.serialno=
. Ten parametr jest przekazywany przez wiersz poleceń jądra w systemie Android 11 i niższych oraz przez bootconfig w systemie Android 12 z jądrem w wersji 5.10 lub nowszej.
Ustawianie rozdzielczości monitora
Edytuj parametr device/linaro/hikey/hikey960/BoardConfig.mk
BOARD_KERNEL_CMDLINE
i skonfiguruj ustawienia video
. Na przykład ustawienie dla monitora 24-calowego to video=HDMI-A-1:1280x800@60
.
Płyty VIM3 i VIM3L
Płyty Vim3 i VIM3L firmy Khadas są dostępne na stronie internetowej Khadas
Rysunek 3. Płytka VIM3 firmy Khadas
Kompilowanie przestrzeni użytkownika
Użyj następujących poleceń, aby pobrać i zbudować system Android na płycie VIM3.
Pobierz drzewo źródeł Androida:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
Budować:
. ./build/envsetup.sh
lunch yukawa-userdebug
make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3=true -j24
Domyślnie Android jest zbudowany z jądrem 5.10. Aby użyć gotowych wersji jądra 5.4:
make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3=true TARGET_KERNEL_USE=5.4 -j24
W przypadku VIM3L użyj:
make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3L=true -j24
Instalowanie obrazów początkowych
Przełącz płytę w tryb aktualizacji USB, postępując zgodnie z instrukcjami flashowania VIM3 .
Flashowanie początkowych obrazów do pamięci RAM:
cd path/to/aosp/device/amlogic/yukawa/bootloader/
./tools/update write u-boot_kvim3_noab.bin 0xfffa0000 0x10000
./tools/update run 0xfffa0000
./tools/update bl2_boot u-boot_kvim3_noab.bin
- Jeśli napotkasz problemy z uprawnieniami, zapoznaj się z sekcją reguł udev, aby dodać odpowiednie reguły USB.
- Jeśli
tools/update
nie działają, zamiast tego użyj narzędzia pyamlboot, aby sflashować tablicę.
Po uruchomieniu U-Boot i uruchomieniu fastboot uruchom następujące polecenia:
fastboot oem format
fastboot flash bootloader u-boot_kvim3_noab.bin
fastboot erase bootenv
fastboot reboot bootloader
Odłącz i podłącz kabel zasilający.
Płyta powinna uruchomić się w właśnie sflashowanym U-boot i wejść w tryb fastboot.
Migające obrazy
Wejdź w tryb szybkiego uruchamiania (instrukcje znajdziesz w poprzedniej sekcji).
Flashuj wszystkie obrazy Androida:
cd out/target/product/yukawa
fastboot flash boot boot.img
fastboot flash super super.img
fastboot flash cache cache.img
fastboot flash userdata userdata.img
fastboot flash recovery recovery.img
fastboot flash dtbo dtbo-unsigned.img
fastboot reboot
Budowanie jądra
Aby zbudować artefakty jądra dla VIM3 lub VIM3L:
Pobierz dodatkowe łańcuchy narzędzi:
git clone https://android.googlesource.com/platform/prebuilts/gas/linux-x86 ${AOSP_TOPDIR}/prebuilts/gas/linux-x86
Sklonuj źródła jądra:
# for 4.19 git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-4.19
# for 5.4 git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-5.4
# for 5.10 git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-5.10
# for 5.15 git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-5.15
Eksportuj zmienne kompilacji:
export PATH=${AOSP_TOPDIR}/prebuilts/clang/host/linux-x86/clang-r445002/bin:$PATH
export PATH=${AOSP_TOPDIR}/prebuilts/gas/linux-x86:$PATH
export PATH=${AOSP_TOPDIR}/prebuilts/misc/linux-x86/lz4:$PATH
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
export LLVM=1
Zbuduj jądro:
cd hikey-linaro
make meson_defconfig
make DTC_FLAGS="-@" -j24
Skompresuj jądro i skopiuj build_artifacts do
${AOSP_TOPDIR}/device/amlogic/yukawa-kernel
:lz4c -f arch/arm64/boot/Image arch/arm64/boot/Image.lz4
KERN_VER=4.19 # for 4.19 kernel
KERN_VER=5.4 # for 5.4 kernel
KERN_VER=5.10 # for 5.10 kernel
KERN_VER=5.15 # for 5.15 kernel
for f in arch/arm64/boot/dts/amlogic/*{g12b-a311d,sm1}-khadas-vim3*.dtb; do cp -v -p $f ${AOSP_TOPDIR}/device/amlogic/yukawa-kernel/${KERN_VER}/$(basename $f) done
cp -v -p arch/arm64/boot/Image.lz4 ${AOSP_TOPDIR}/device/amlogic/yukawa-kernel/${KERN_VER}/Image.lz4
Przebuduj przestrzeń użytkownika systemu Android (zobacz Kompilowanie przestrzeni użytkownika ) i sflashuj nowe jądro (zobacz Flashowanie obrazów ).
Płyta Qualcomm Robotics RB5
Tablica Robotics Board RB5 jest dostępna na stronie 96boards.org .
Rysunek 4. Płytka robotyczna RB5
Kompilowanie przestrzeni użytkownika
Użyj następujących poleceń, aby pobrać i skompilować system Android na RB5.
Pobierz drzewo źródeł Androida:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
Pobierz aktualny pakiet dostawcy:
./device/linaro/dragonboard/fetch-vendor-package.sh
Zbuduj AOSP:
. ./build/envsetup.sh
lunch rb5-userdebug
make -j24
Instalowanie obrazów lokalnych
Uruchom RB5 w trybie szybkiego uruchamiania.
Uruchom następujące polecenie:
./device/linaro/dragonboard/installer/rb5/flash-all-aosp.sh
Jeśli to konieczne, możesz wykonać odzyskiwanie karty QDL, uruchamiając następujący skrypt po uruchomieniu RB5 w trybie flashowania USB (patrz Odzyskiwanie RB5 ):
./device/linaro/dragonboard/installer/rb5/recovery.sh
Budowanie jądra
Aby zbudować artefakty jądra RB5 Android Generic Kernel Image (GKI):
Uruchom następujące polecenia, aby sklonować źródła jądra i gotowe łańcuchy narzędzi systemu Android oraz skrypty kompilacji:
mkdir repo-common
cd repo-common
repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
repo sync -j8 -c
rm -rf out
BUILD_CONFIG=common/build.config.db845c ./build/build.sh
Usuń wszystkie obiekty w
${AOSP_TOPDIR}device/linaro/dragonboard-kernel/android-mainline/
, a następnie skopiuj artefakty kompilacji zout/android-mainline/dist/
do${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
, a następnie odbuduj przestrzeń użytkownika za pomocą:make TARGET_KERNEL_USE=mainline -j24
i sflashuj urządzenie z wynikowym plikiem boot.img i super.img (zobacz Kompilowanie przestrzeni użytkownika ).
Przetestuj jądro GKI:
- Zobacz najnowszą kompilację kernel_aarch64 .
- W artefaktach pobierz Image.
Spakuj obraz
gzip Image
Skopiuj go do
${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
.Odbuduj AOSP i sflashuj urządzenie z nowym plikiem boot.img (zobacz Kompilowanie przestrzeni użytkownika ).