참조 보드 사용

Android 오픈소스 프로젝트(AOSP) 빌드 및 관련 하드웨어별 바이너리를 사용하여 Nexus 및 Pixel 기기용 빌드를 작성할 수 있습니다. 사용 가능한 Android 빌드 및 대상 기기는 소스 코드 태그 및 빌드를 참고하세요.

DragonBoard 845c, HiKey 960, Khadas VIM3Qualcomm Robotics Board RB5 Android 참조 보드용 빌드를 작성할 수도 있습니다. 이는 모바일이 아닌 구성요소 공급업체가 드라이버를 개발하고 Android 버전에 포팅하는 데 도움이 되도록 설계되었습니다. 참조 보드를 사용하면 업그레이드 작업을 간소화하고, 새로운 Android 기기의 출시 기간을 단축하며, ODM/OEM 업체가 호환되는 다양한 구성요소를 선택할 수 있도록 하여 기기 비용을 낮추고, 구성요소 공급업체 간의 혁신 속도를 높일 수 있습니다.

Google은 DragonBoard 845c, HiKey 960, Khadas VIM3Qualcomm Robotics Board RB5 Android 참조 보드를 지원합니다. AOSP는 이러한 보드용 커널 소스 및 보드 지원을 제공하므로 개발자는 주변기기 드라이버를 쉽게 생성 및 디버깅하고 커널을 개발하며 OEM 방해가 적은 다른 작업을 처리할 수 있습니다.

DragonBoard 845c

DragonBoard 845c는 RB3 플랫폼의 일부로 96boards.org에서 사용할 수 있습니다.

Dragonboard 이미지

그림 1. DragonBoard 845c

사용자 공간 컴파일

다음 명령어를 사용하여 DragonBoard 845c에서 Android를 다운로드하고 빌드합니다.

  1. Android 소스 트리 다운로드:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. 현재 공급업체 패키지 다운로드:

    ./device/linaro/dragonboard/fetch-vendor-package.sh
    
  3. AOSP 빌드:

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

로컬 이미지 설치

  1. db845c를 빠른 부팅 모드(Fastboot mode)로 부팅합니다.

  2. 다음 명령어를 실행합니다.

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

필요한 경우 USB 플래시 모드로 db845c를 부팅한 후 다음 스크립트를 실행하여 QDL 보드 복구를 실행할 수 있습니다(DragonBoard 복구 참고).

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

커널 빌드

DragonBoard db845c Android GKI(Generic Kernel Image) 커널 아티팩트를 빌드하는 방법은 다음과 같습니다.

  1. 다음 명령어를 실행하여 커널 소스 및 사전 빌드된 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
    
  2. ${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로 기기를 플래시합니다(사용자 공간 컴파일 참고).

  3. 다음과 같이 GKI 커널을 테스트합니다.

    1. 최신 kernel_aarch64 빌드를 확인합니다.

    2. 아티팩트에서 이미지를 다운로드합니다.

    3. 이미지를 Gzip으로 압축합니다.

      gzip Image
      
    4. ${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/에 복사합니다.

    5. AOSP를 다시 빌드하고 새 boot.img로 기기를 플래시합니다(사용자 공간 컴파일 참고).

HiKey 960 보드

HiKey 960 보드는 Amazon 및 Lenovator에서 제공됩니다.

HiKey 960 보드 이미지

그림 2. Lenovator의 HiKey 960 보드

사용자 공간 컴파일

다음 명령어를 사용하여 HiKey 960 보드에서 Android를 다운로드하고 빌드합니다.

  1. Android 소스 트리 다운로드

    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. 현재 공급업체 패키지 다운로드

    ./device/linaro/hikey/fetch-vendor-package.sh
    
  3. 빌드

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

로컬 이미지 설치

  1. 스위치 3을 켜서 빠른 부팅 모드(Fastboot mode)를 선택합니다. 자세한 내용은 HiKey 960 시작 가이드를 참고하세요.

  2. 보드 전원을 켭니다.

  3. 로컬 이미지 플래시:

    ./device/linaro/hikey/installer/hikey960/flash-all.sh
    
  4. 스위치 3을 끄고 보드의 전원을 껐다 켭니다.

커널 빌드

HiKey960 Android GKI 커널 아티팩트를 빌드하는 방법은 다음과 같습니다.

  1. 다음 명령어를 실행합니다.

    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. ${AOSP_TOPDIR}device/linaro/hikey-kernel/hikey960/5.4/의 모든 객체를 삭제한 다음 out/android12-5.4/dist/의 커널 빌드에서 ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/로 빌드 아티팩트를 복사합니다.

  3. 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. Android 사용자 공간을 빌드합니다.

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

    그런 다음 새로운 커널로 기기를 플래시합니다(사용자 공간 컴파일 참고).

  5. GKI(Generic Kernel Image) 커널을 테스트합니다.

    • 최신 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 및 이전 버전에서는 커널 명령줄을 통해 전달되고, Android 12(커널 버전 5.10 이상)에서는 bootconfig를 통해 전달됩니다.

모니터 해상도 설정

device/linaro/hikey/hikey960/BoardConfig.mk 매개변수 BOARD_KERNEL_CMDLINE을 수정하고 video 설정을 구성합니다. 예를 들어, 24인치 모니터의 설정은 video=HDMI-A-1:1280x800@60입니다.

VIM3 및 VIM3L 보드

Khadas의 Vim3 및 VIM3L 보드는 Khadas 웹사이트에서 제공됩니다.

VIM3 보드 이미지

그림 3. Khadas의 VIM3 보드

사용자 공간 컴파일

다음 명령어를 사용하여 VIM3 보드에서 Android를 다운로드하고 빌드합니다.

  1. Android 소스 트리 다운로드:

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

    . ./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
    

초기 이미지 설치

  1. VIM3 플래시 안내를 따라 보드를 USB 업그레이드 모드로 전환합니다.

  2. 초기 이미지를 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
    
    • 권한 문제가 발생하는 경우 udev 규칙 섹션을 참고하여 적절한 USB 규칙을 추가합니다.
    • tools/update가 작동하지 않는 경우 pyamlboot 도구를 사용하여 보드를 플래시합니다.
  3. U-Boot가 부팅되고 빠른 부팅을 실행한 후 다음 명령어를 실행합니다.

    fastboot oem format
    fastboot flash bootloader u-boot_kvim3_noab.bin
    fastboot erase bootenv
    fastboot reboot bootloader
    
  4. 전원 케이블을 분리한 후 다시 연결합니다.

보드는 방금 플래시된 U-boot로 부팅되고 빠른 부팅 모드(Fastboot mode)로 진입해야 합니다.

이미지 플래시

  1. 빠른 부팅 모드(Fastboot mode)로 진입합니다(자세한 내용은 이전 섹션 참고).

  2. 모든 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용 커널 아티팩트를 빌드하려면 다음 안내를 따르세요.

  1. 추가 도구 모음을 다운로드합니다.

    git clone https://android.googlesource.com/platform/prebuilts/gas/linux-x86 ${AOSP_TOPDIR}/prebuilts/gas/linux-x86
    
  2. 커널 소스를 복사합니다.

    # 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. 빌드 변수를 내보냅니다.

    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. 커널을 빌드합니다.

    cd hikey-linaro
    make meson_defconfig
    make DTC_FLAGS="-@" -j24
    
  5. 커널을 압축하고 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
    
  6. Android 사용자 공간을 다시 빌드하고(사용자 공간 컴파일 참고) 새 커널을 플래시합니다(이미지 플래시 참고).

Qualcomm Robotics Board RB5

Robotics Board RB5는 96boards.org에서 제공됩니다.

rb5_board

그림 4. Robotics Board RB5

사용자 공간 컴파일

다음 명령어를 사용하여 RB5에서 Android를 다운로드하고 빌드합니다.

  1. Android 소스 트리 다운로드:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. 현재 공급업체 패키지 다운로드:

    ./device/linaro/dragonboard/fetch-vendor-package.sh
    
  3. AOSP 빌드:

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

로컬 이미지 설치

  1. RB5를 빠른 부팅 모드(Fastboot mode)로 부팅합니다.

  2. 다음 명령어를 실행합니다.

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

필요한 경우 USB 플래시 모드에서 RB5를 부팅한 후 다음 스크립트를 실행하여 QDL 보드 복구를 실행할 수 있습니다(RB5 복구 참고).

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

커널 빌드

RB5 Android 일반 커널 이미지(GKI) 커널 아티팩트를 빌드하려면 다음 안내를 따르세요.

  1. 다음 명령어를 실행하여 커널 소스 및 사전 빌드된 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
    
  2. ${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로 기기를 플래시합니다(사용자 공간 컴파일 참고).

  3. 다음과 같이 GKI 커널을 테스트합니다.

    1. 최신 kernel_aarch64 빌드를 확인합니다.
    2. 아티팩트에서 이미지를 다운로드합니다.
    3. 이미지를 Gzip으로 압축합니다.

      gzip Image
      
    4. ${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/에 복사합니다.

    5. AOSP를 다시 빌드하고 새 boot.img로 기기를 플래시합니다(사용자 공간 컴파일 참고).