참조 보드 사용

AOSP(Android 오픈 소스 프로젝트) 빌드 및 관련 하드웨어별 바이너리를 사용하여 Nexus 및 Pixel 기기용 빌드를 만들 수 있습니다. 사용 가능한 Android 빌드 및 대상 장치에 대해서는 소스 코드 태그 및 빌드 를 참조하십시오.

또한 비모바일 구성 요소 공급업체가 드라이버를 개발하고 Android 릴리스로 포팅하는 데 도움이 되도록 설계된 DragonBoard 845c , HiKey 960 , Khadas VIM3Qualcomm Robotics Board RB5 Android 참조 보드용 빌드를 생성할 수 있습니다. 레퍼런스 보드를 사용하면 업그레이드 작업을 쉽게 할 수 있고, 새로운 Android 장치의 시장 출시 시간을 단축하고, ODM/OEM이 더 광범위한 호환 구성 요소 중에서 선택할 수 있도록 하여 장치 비용을 낮추고, 구성 요소 공급업체 간의 혁신 속도를 높일 수 있습니다.

Google은 DragonBoard 845c , HiKey 960 , Khadas VIM3Qualcomm Robotics Board RB5 Android 참조 보드를 지원합니다. AOSP는 이러한 보드에 대한 커널 소스 및 보드 지원을 제공하므로 개발자는 주변 장치 드라이버를 쉽게 생성 및 디버그하고, 커널 개발을 수행하고, 더 적은 OEM 부담으로 기타 작업을 수행할 수 있습니다.

드래곤보드 845c

DragonBoard 845c는 RB3 플랫폼의 일부이며 96boards.org 에서 구할 수 있습니다.

드래곤보드 이미지

그림 1. 드래곤보드 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 모드로 부팅합니다.

  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) 커널 아티팩트를 빌드하려면:

  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
    tools/bazel run //common:db845c_dist -- --dist_dir=$DIST_DIR
    
  1. ${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로 장치를 플래시합니다( 사용자 공간 컴파일 참조).

  2. 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 모드를 선택합니다(자세한 내용은 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) 커널 테스트

    • 최신 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 이하에서는 커널 명령줄을 통해 전달되고 커널 버전 5.10 이상이 설치된 Android 12에서는 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를 실행한 후 다음 명령을 실행합니다.

    fastboot oem format
    fastboot flash bootloader u-boot_kvim3_noab.bin
    fastboot erase bootenv
    fastboot reboot bootloader
    
  4. 전원 케이블을 뽑았다가 꽂습니다.

보드는 방금 플래시된 U-boot로 부팅되고 fastboot 모드로 들어가야 합니다.

깜박이는 이미지

  1. 빠른 부팅 모드로 들어갑니다(지침은 이전 섹션 참조).

  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 사용자 공간을 재구축하고(사용자 공간 컴파일 참조) 새 커널을 플래시합니다( 이미지 플래시 참조).

퀄컴 로보틱스 보드 RB5

Robotics Board RB5는 96boards.org 에서 구할 수 있습니다.

rb5_board

그림 4. 로보틱스 보드 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를 빠른 부팅 모드로 부팅합니다.

  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/ 빌드 아티팩트를 복사합니다. ${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로 기기를 플래시합니다( 사용자 공간 컴파일 참조).