Вы можете создавать сборки для устройств Nexus и Pixel, используя сборки Android Open Source Project (AOSP) и соответствующие двоичные файлы для конкретного оборудования. Доступные сборки Android и целевые устройства см. в разделе Теги исходного кода и сборки .
Вы также можете создавать сборки для эталонных плат DragonBoard 845c , HiKey 960 , Khadas VIM3 и Qualcomm Robotics Board RB5 Android, которые предназначены для того, чтобы помочь поставщикам немобильных компонентов разрабатывать и портировать драйверы для выпусков Android. Использование эталонной платы может упростить обновление, сократить время выхода на рынок новых устройств Android, снизить стоимость устройств, позволяя ODM/OEM выбирать из более широкого спектра совместимых компонентов, а также увеличить скорость инноваций среди поставщиков компонентов.
Google поддерживает эталонные платы DragonBoard 845c , HiKey 960 , Khadas VIM3 и Qualcomm Robotics Board RB5 Android. AOSP предоставляет исходный код ядра и поддержку плат для этих плат, поэтому разработчики могут легко создавать и отлаживать драйверы периферийных устройств, разрабатывать ядро и выполнять другие задачи с меньшими затратами OEM.
DragonBoard 845c
Доска DragonBoard 845c является частью платформы RB3 и доступна на сайте 96boards.org .
Рисунок 1. Доска DragonBoard 845c
Компиляция пользовательского пространства
Используйте следующие команды для загрузки и сборки Android на DragonBoard 845c.
Загрузите исходное дерево Android:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
Загрузите текущий пакет поставщика:
./device/linaro/dragonboard/fetch-vendor-package.sh
Сборка АОСП:
. ./build/envsetup.sh
lunch db845c-userdebug
make -j24
Установка локальных образов
Загрузите db845c в режим быстрой загрузки.
Запустите следующую команду:
./device/linaro/dragonboard/installer/db845c/flash-all-aosp.sh
При необходимости вы можете выполнить восстановление платы QDL, запустив следующий скрипт после загрузки db845c в режиме прошивки USB (см. DragonBoard Recovery ):
./device/linaro/dragonboard/installer/db845c/recovery.sh
Сборка ядра
Чтобы собрать артефакты ядра DragonBoard db845c Android Generic Kernel Image (GKI):
Запустите следующие команды, чтобы клонировать исходный код ядра и готовые наборы инструментов Android, а также создать скрипты.
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
Удалите все объекты в
${AOSP_TOPDIR}device/linaro/dragonboard-kernel/android-mainline/
, затем скопируйте артефакты сборки изout/android-mainline/dist/
в${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
затем перестройте пользовательское пространство с помощью:make TARGET_KERNEL_USE=mainline -j24
и прошить устройство получившимся boot.img и super.img (см. Компиляция пользовательского пространства ).
Протестируйте ядро GKI:
Посмотреть последнюю сборку kernel_aarch64 .
В артефактах скачать Image.
Сжать изображение
gzip Image
Скопируйте его в
${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
.Пересоберите AOSP и прошейте устройство новым boot.img (см. Компиляция пользовательского пространства ).
Платы HiKey 960
Плата HiKey 960 доступна на Amazon и Lenovator .
Рисунок 2. Плата HiKey 960 от Lenovator
Компиляция пользовательского пространства
Используйте следующие команды для загрузки и сборки Android на плате HiKey 960.
Загрузите исходное дерево Android
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
Загрузите текущий пакет поставщика
./device/linaro/hikey/fetch-vendor-package.sh
Строить
. ./build/envsetup.sh
lunch hikey960-userdebug
make -j24
Установка локальных образов
Выберите режим быстрой загрузки, включив переключатель 3 (подробности см. в руководстве по началу работы с HiKey 960 ).
Включите плату.
Локальные флеш-изображения:
./device/linaro/hikey/installer/hikey960/flash-all.sh
Выключите переключатель 3 и снова включите питание платы.
Сборка ядра
Чтобы собрать артефакты ядра HiKey960 Android GKI:
Выполните следующие команды:
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
Удалите все объекты в
${AOSP_TOPDIR}device/linaro/hikey-kernel/hikey960/5.4/
затем скопируйте артефакты сборки из сборки ядра вout/android12-5.4/dist/
в${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/
Объединить 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
Создание пользовательского пространства Android
lunch hikey960-userdebug
make TARGET_KERNEL_USE=5.4 HIKEY_USES_GKI=true -j24
и прошить устройство новым ядром (см. Компиляция пользовательского пространства )
Тестирование ядра Generic Kernel Image (GKI)
Посмотреть последнюю сборку kernel_aarch64 .
В артефактах загрузите файл
Image
и скопируйте его в${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/
.Сжать изображение и соединить 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
- Соберите и прошейте устройство с новым ядром (см. Компиляция пользовательского пространства ).
Установка серийного номера
Чтобы установить случайный серийный номер, запустите:
fastboot getvar nve:SN@16\_DIGIT\_NUMBER
Загрузчик экспортирует сгенерированный серийный номер в ядро, используя androidboot.serialno=
. Этот параметр передается через командную строку ядра в Android 11 и ниже и через bootconfig в Android 12 с версией ядра 5.10 или выше.
Настройка разрешения монитора
Отредактируйте параметр device/linaro/hikey/hikey960/BoardConfig.mk
BOARD_KERNEL_CMDLINE
и настройте параметры video
. Например, для 24-дюймового монитора используется значение video=HDMI-A-1:1280x800@60
.
Платы VIM3 и VIM3L
Платы Vim3 и VIM3L от Khadas доступны на веб-сайте Khadas.
Рисунок 3. Плата VIM3 от Khadas
Компиляция пользовательского пространства
Используйте следующие команды для загрузки и сборки Android на плате VIM3.
Загрузите исходное дерево Android:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
Строить:
. ./build/envsetup.sh
lunch yukawa-userdebug
make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3=true -j24
По умолчанию Android построен с ядром 5.10. Чтобы использовать готовые сборки ядра 5.4:
make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3=true TARGET_KERNEL_USE=5.4 -j24
Для VIM3L используйте:
make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3L=true -j24
Установка исходных образов
Переведите плату в режим USB-обновления, следуя инструкциям по перепрошивке VIM3 .
Прошить начальные образы в ОЗУ:
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
- Если у вас возникнут проблемы с разрешениями, обратитесь к разделу правил udev, чтобы добавить соответствующие правила USB.
- Если
tools/update
не работают, вместо этого используйте инструмент pyamlboot для прошивки платы.
После того, как U-Boot загрузится и запустит fastboot, выполните следующие команды:
fastboot oem format
fastboot flash bootloader u-boot_kvim3_noab.bin
fastboot erase bootenv
fastboot reboot bootloader
Отключите и подключите кабель питания.
Плата должна загрузиться в только что прошитый U-boot и перейти в режим fastboot.
Мигающие изображения
Войдите в режим быстрой загрузки (см. инструкции в предыдущем разделе).
Прошить все образы Android:
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
Сборка ядра
Чтобы собрать артефакты ядра для VIM3 или VIM3L:
Загрузите дополнительные наборы инструментов:
git clone https://android.googlesource.com/platform/prebuilts/gas/linux-x86 ${AOSP_TOPDIR}/prebuilts/gas/linux-x86
Клонируйте исходный код ядра:
# 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
Экспорт переменных сборки:
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
Соберите ядро:
cd hikey-linaro
make meson_defconfig
make DTC_FLAGS="-@" -j24
Сожмите ядро и скопируйте build_artifacts в
${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
Пересоберите пользовательское пространство Android (см. Компиляция пользовательского пространства ) и прошейте новое ядро (см. Прошивка изображений ).
Плата Qualcomm Robotics Board RB5
Доска для робототехники RB5 доступна на сайте 96boards.org .
Рисунок 4. Плата робототехники RB5
Компиляция пользовательского пространства
Используйте следующие команды для загрузки и сборки Android на RB5.
Загрузите исходное дерево Android:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
Загрузите текущий пакет поставщика:
./device/linaro/dragonboard/fetch-vendor-package.sh
Сборка АОСП:
. ./build/envsetup.sh
lunch rb5-userdebug
make -j24
Установка локальных образов
Загрузите RB5 в режим fastboot.
Запустите следующую команду:
./device/linaro/dragonboard/installer/rb5/flash-all-aosp.sh
При необходимости вы можете выполнить восстановление платы QDL, запустив следующий скрипт после загрузки RB5 в режиме прошивки USB (см. Восстановление RB5 ):
./device/linaro/dragonboard/installer/rb5/recovery.sh
Сборка ядра
Чтобы собрать артефакты ядра RB5 Android Generic Kernel Image (GKI):
Запустите следующие команды, чтобы клонировать исходный код ядра и предварительно собранные наборы инструментов Android и скрипты сборки:
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
Удалите все объекты в
${AOSP_TOPDIR}device/linaro/dragonboard-kernel/android-mainline/
, затем скопируйте артефакты сборки изout/android-mainline/dist/
в${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
, а затем перестроить пользовательское пространство с помощью:make TARGET_KERNEL_USE=mainline -j24
и прошить устройство получившимся boot.img и super.img (см. Компиляция пользовательского пространства ).
Протестируйте ядро GKI:
- Посмотреть последнюю сборку kernel_aarch64 .
- В артефактах скачать Image.
Сжать изображение
gzip Image
Скопируйте его в
${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
.Пересоберите AOSP и прошейте устройство новым boot.img (см. Компиляция пользовательского пространства ).