Como usar placas de referência

É possível criar builds para dispositivos Nexus e Pixel usando os builds do Android Open Source Project (AOSP) e os binários relevantes específicos de hardware. Para conhecer os builds do Android e os dispositivos de destino disponíveis, consulte Tags e builds de código-fonte.

Você também pode criar builds para placas de referência Android DragonBoard 845c, HiKey 960, Khadas VIM3 e Qualcomm Robotics Board RB5, projetadas para ajudar fornecedores de componentes que não sejam de dispositivos móveis a desenvolver e adaptar drivers para versões do Android. O uso de uma placa de referência pode facilitar os esforços de upgrade, reduzir o tempo de lançamento de novos dispositivos Android, diminuir os custos de dispositivos, permitindo que ODM/OEMs escolham de uma variedade maior de componentes compatíveis, e aumentar a velocidade de inovação entre fornecedores de componentes.

O Google oferece suporte para placas de referência Android DragonBoard 845c, HiKey 960, Khadas VIM3 e Qualcomm Robotics Board RB5. O AOSP oferece suporte à placa e à origem do kernel para que os desenvolvedores possam criar e depurar com facilidade os drivers de periféricos, realizar desenvolvimento de kernel e executar fazer tarefas com menos ônus para OEMs.

DragonBoard 845c

A DragonBoard 845c faz parte da plataforma RB3 e está disponível em 96boards.org (link em inglês).

Imagem da DragonBoard

Figura 1. DragonBoard 845c

Como compilar o espaço do usuário

Use os comandos a seguir para fazer o download e criar o build do Android na DragonBoard 845c.

  1. Faça o download da árvore de origem do Android:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
  2. Faça o download do pacote de fornecedores atual:

    ./device/linaro/dragonboard/fetch-vendor-package.sh
  3. Crie o AOSP:

    . ./build/envsetup.sh
    lunch db845c-userdebug
    make -j24

Como instalar imagens locais

  1. Inicialize a db845c no modo fastboot.

  2. Execute o seguinte comando:

    ./device/linaro/dragonboard/installer/db845c/flash-all-aosp.sh

Se necessário, você pode realizar a recuperação da placa QDL executando o seguinte script após a inicialização da db845c no modo de atualização USB. Consulte Recuperação da DragonBoard (link em inglês):

./device/linaro/dragonboard/installer/db845c/recovery.sh

Como criar o kernel

Para criar os artefatos do kernel de Generic Kernel Image (GKI) do Android para a DragonBoard db845c:

  1. Execute os comandos a seguir para clonar a origem do kernel e os conjuntos de ferramentas pré-criados do Android e criar scripts.

    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
  2. Exclua todos os objetos em ${AOSP_TOPDIR}device/linaro/dragonboard-kernel/android-mainline/, copie os artefatos de build de out/android-mainline/dist/ para ${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/ e recrie o espaço do usuário com:

    make TARGET_KERNEL_USE=mainline -j24

    Depois, atualize o dispositivo com o boot.img e o super.img resultantes. Consulte Como compilar o espaço do usuário.

  3. Teste o kernel de GKI:

    1. Veja o build kernel_aarch64 mais recente.

    2. Em artifacts, faça o download da imagem.

    3. Transforme a imagem em gzip.

      gzip Image
    4. Copie para ${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/.

    5. Recrie o AOSP e atualize o dispositivo com o novo boot.img. Consulte Como compilar o espaço do usuário.

Placas HiKey 960

A placa HiKey 960 está disponível na Amazon e na Lenovator (link em inglês).

Imagem da placa HiKey 960

Figura 2. Placa HiKey 960 da Lenovator.

Como compilar o espaço do usuário

Use os seguintes comandos para fazer o download e criar o build do Android na placa HiKey 960.

  1. Faça o download da árvore de origem do Android.

    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
  2. Faça o download do pacote de fornecedores atual.

    ./device/linaro/hikey/fetch-vendor-package.sh
  3. Build

    . ./build/envsetup.sh
    lunch hikey960-userdebug
    make -j24

Como instalar imagens locais

  1. Selecione o modo fastboot ativando o interruptor 3. Para saber mais detalhes, consulte o Guia de iniciação da HiKey 960 (link em inglês).

  2. Ligue a placa.

  3. Atualize as imagens locais:

    ./device/linaro/hikey/installer/hikey960/flash-all.sh
  4. Desligue o interruptor 3 e reinicie a placa.

Como criar o kernel

Para criar os artefatos do kernel de GKI do Android para a HiKey960:

  1. Execute os seguintes comandos:

    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
  2. Exclua todos os objetos em ${AOSP_TOPDIR}device/linaro/hikey-kernel/hikey960/5.4/ e copie os artefatos de compilação do build do kernel em out/android12-5.4/dist/ para ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/

  3. Concatene o 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
  4. Crie um espaço de usuário do Android

    lunch hikey960-userdebug
    make TARGET_KERNEL_USE=5.4 HIKEY_USES_GKI=true -j24

    Depois, atualize o dispositivo com o novo kernel. Consulte Como compilar o espaço do usuário.

  5. Testar o kernel de Generic Kernel Image (GKI)

    • Veja o build kernel_aarch64 mais recente.

    • Em artifacts, faça o download do arquivo Image e o copie para ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/.

    • Compacte a imagem e concatene o 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

Como definir o número de série

Para definir um número de série aleatório, execute:

  fastboot getvar nve:SN@16\_DIGIT\_NUMBER

O carregador de inicialização exporta o número de série gerado para o kernel usando androidboot.serialno=. Esse parâmetro é transmitido pela linha de comando do kernel no Android 11 e em versões anteriores e pelo bootconfig no Android 12 com a versão 5.10 ou mais recente do kernel.

Como definir a resolução do monitor

Edite o parâmetro device/linaro/hikey/hikey960/BoardConfig.mk de BOARD_KERNEL_CMDLINE e defina a configuração de video. Por exemplo, a configuração de um monitor de 24 polegadas é video=HDMI-A-1:1280x800@60.

Placas VIM3 e VIM3L

As placas Vim3 e VIM3L da Khadas estão disponíveis no site da Khadas.

Imagem da placa VIM3

Figura 3. Placa VIM3 da Khadas

Como compilar o espaço do usuário

Use os comandos a seguir para fazer o download e criar o Android na placa VIM3.

  1. Faça o download da árvore de origem do Android:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
  2. Crie:

    . ./build/envsetup.sh
    lunch yukawa-userdebug
    make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3=true -j24

    Por padrão, o Android é criado com o kernel 5.10. Para usar os pré-builds kernel 5.4:

    make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3=true TARGET_KERNEL_USE=5.4 -j24

    Para VIM3L, use:

    make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3L=true -j24

Como instalar imagens iniciais

  1. Coloque a placa no modo de upgrade USB seguindo as instruções de atualização do VIM3.

  2. Atualize as imagens iniciais para 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
    • Se você encontrar problemas de permissão, consulte a seção de regras udev para adicionar as regras USB adequadas.
    • Se tools/update não funcionar, use a ferramenta pyamlboot (link em inglês) para atualizar a placa.
  3. Depois de inicializar o U-Boot e executar o fastboot, execute os seguintes comandos:

    fastboot oem format
    fastboot flash bootloader u-boot_kvim3_noab.bin
    fastboot erase bootenv
    fastboot reboot bootloader
  4. Desconecte e conecte o cabo de alimentação.

A placa precisa inicializar no U-boot recém-atualizado e entrar no modo fastboot.

Realizar atualização flash das imagens

  1. Entre no modo fastboot. Consulte a seção anterior para ver as instruções.

  2. Atualizar todas as imagens do 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

Como criar o kernel

Para criar os artefatos do kernel para VIM3 ou VIM3L:

  1. Faça o download de outros conjuntos de ferramentas:

    git clone https://android.googlesource.com/platform/prebuilts/gas/linux-x86 ${AOSP_TOPDIR}/prebuilts/gas/linux-x86
  2. Clone a origem do kernel:

    # 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
  3. Exporte variantes de build:

    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
  4. Crie o kernel:

    cd hikey-linaro
    make meson_defconfig
    make DTC_FLAGS="-@" -j24
  5. Compacte o kernel e copie build_artifacts para ${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
  6. Recrie o espaço do usuário do Android, seguindo as instruções em Como compilar o espaço do usuário, e atualize o novo kernel, seguindo as instruções em Realizar atualização flash das imagens.

Placa RB5 Robotics da Qualcomm

A placa RB5 Robotics está disponível em 96boards.org (link em inglês).

placa_rb5

Figura 4. Placa RB5 Robotics.

Como compilar o espaço do usuário

Use os seguintes comandos para fazer o download e criar o build do Android na RB5.

  1. Faça o download da árvore de origem do Android:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
  2. Faça o download do pacote de fornecedores atual:

    ./device/linaro/dragonboard/fetch-vendor-package.sh
  3. Crie o AOSP:

    . ./build/envsetup.sh
    lunch rb5-userdebug
    make -j24

Como instalar imagens locais

  1. Inicialize a RB5 no modo fastboot.

  2. Execute o seguinte comando:

    ./device/linaro/dragonboard/installer/rb5/flash-all-aosp.sh

Se necessário, você pode realizar a recuperação da placa QDL executando o seguinte script após a inicialização da RB5 no modo de atualização USB. Consulte Recuperação da RB5 (link em inglês):

   ./device/linaro/dragonboard/installer/rb5/recovery.sh

Como criar o kernel

Para criar os artefatos kernel de imagem genérica do kernel (GKI, na sigla em inglês) do Android para RB5, faça o seguinte:

  1. Execute os comandos a seguir para clonar a origem do kernel e os conjuntos de ferramentas pré-criados do Android e criar scripts:

    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
  2. Exclua todos os objetos em ${AOSP_TOPDIR}device/linaro/dragonboard-kernel/android-mainline/, copie os artefatos de build de out/android-mainline/dist/ para ${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/ e recrie o espaço do usuário com:

    make TARGET_KERNEL_USE=mainline -j24

    Depois, atualize o dispositivo com o boot.img e o super.img resultantes. Consulte Como compilar o espaço do usuário.

  3. Teste o kernel de GKI:

    1. Veja o build kernel_aarch64 mais recente.
    2. Em artifacts, faça o download da imagem.
    3. Transforme a imagem em gzip.

      gzip Image
    4. Copie para ${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/.

    5. Recrie o AOSP e atualize o dispositivo com o novo boot.img. Consulte Como compilar o espaço do usuário.