본문 바로가기
안드로이드

Khadas VIM3L 안드로이드 11 빌드하기

by ㅋㅋ잠자 2025. 3. 2.
반응형

최신 manifest

https://android.googlesource.com/platform/manifest/+/refs/heads/android-11.0.0_r48

 

소스 클론

$ repo init -u https://android.googlesource.com/platform/manifest -b android-11.0.0_r48
$ repo sync -j8

 

타겟 체크

$ source build/envsetup.sh
$ lunch yukawa-eng

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=11
TARGET_PRODUCT=yukawa
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=cortex-a53
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv8-a
TARGET_2ND_CPU_VARIANT=cortex-a53
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.4.0-205-generic-x86_64-Ubuntu-20.04.6-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=RD2A.211001.002
OUT_DIR=out
PRODUCT_SOONG_NAMESPACES=device/amlogic/yukawa
============================================

 

기타 빌드옵션 확인

[~/vim3l-a11/device/amlogic/yukawa]
$ search "TARGET_VIM3L"
./sei610/README:8:- For VIM3L: make TARGET_VIM3L=true -j24
./sei610/README:31:- For VIM3L: make TARGET_VIM3L=true bootimage -j24
./yukawa/BoardConfig.mk:3:ifeq ($(TARGET_VIM3L),)
./device-yukawa.mk:7:ifeq ($(TARGET_VIM3L),)

[~/vim3l-a11/device/amlogic/yukawa]
$ search "TARGET_KERNEL_USE"
./device-yukawa_sei510.mk:1:ifndef TARGET_KERNEL_USE
./device-yukawa_sei510.mk:2:TARGET_KERNEL_USE=4.19
./device-yukawa_sei510.mk:7:BOARD_KERNEL_DTB := device/amlogic/yukawa-kernel/meson-g12a-sei510.dtb-$(TARGET_KERNEL_USE)
./device-common.mk:4:LOCAL_KERNEL := device/amlogic/yukawa-kernel/Image.lz4-$(TARGET_KERNEL_USE)
./device-yukawa.mk:1:ifndef TARGET_KERNEL_USE
./device-yukawa.mk:2:TARGET_KERNEL_USE=4.19
./device-yukawa.mk:15:TARGET_DTB := meson-sm1-sei610.dtb-$(TARGET_KERNEL_USE)
./device-yukawa.mk:17:TARGET_DTB := meson-sm1-khadas-vim3l.dtb-$(TARGET_KERNEL_USE)
./BoardConfigCommon.mk:85:ifeq ($(TARGET_KERNEL_USE), 5.4)

 

빌드 수행

$ export TARGET_VIM3L=true
$ export TARGET_KERNEL_USE=5.4
$ make -j12

 

빌드 실패하면 swap 을 추가해야할 것 같음

$ make -j12
07:33:24 ************************************************************
07:33:24 You are building on a machine with 9.71GB of RAM
07:33:24
07:33:24 The minimum required amount of free memory is around 16GB,
07:33:24 and even with that, some configurations may not work.
07:33:24
07:33:24 If you run into segfaults or other errors, try reducing your
07:33:24 -j value.
07:33:24 ************************************************************
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=11
TARGET_PRODUCT=yukawa
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=cortex-a53
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv8-a
TARGET_2ND_CPU_VARIANT=cortex-a53
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.4.0-205-generic-x86_64-Ubuntu-20.04.6-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=RD2A.211001.002
OUT_DIR=out
PRODUCT_SOONG_NAMESPACES=device/amlogic/yukawa
============================================
[ 33% 60/181] compile out/soong/.bootstrap/blueprint-bootstrap/pkg/github.com/google/blueprint/
    0:01 compile out/soong/.bootstrap/blueprint-bootstrap-bpdoc/test/github.com/google/blueprin
    0:01 compile out/soong/.bootstrap/blueprint-bootstrap-bpdoc/pkg/github.com/google/blueprint
    0:01 compile out/soong/.bootstrap/soong-android-soongconfig/pkg/android/soong/android/soong
    0:00 compile out/soong/.bootstrap/blueprint/test/test.a

 

역시 메모리 부족 에러 발생

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at cohttp://m.intellij.lang.impl.MarkerPool.allocateStartMarker(MarkerPool.java:40)
        at cohttp://m.intellij.lang.impl.PsiBuilderImpl.createMarker(PsiBuilderImpl.java:822)
        at cohttp://m.intellij.lang.impl.PsiBuilderImpl.mark(PsiBuilderImpl.java:815)
        at cohttp://m.intellij.lang.impl.PsiBuilderAdapter.mark(PsiBuilderAdapter.java:95)
        at cohttp://m.intellij.lang.impl.PsiBuilderAdapter.mark(PsiBuilderAdapter.java:95)
        at cohttp://m.intellij.lang.java.parser.ReferenceParser.parseJavaCodeReference(ReferenceParser
.java:233)
        at cohttp://m.intellij.lang.java.parser.ReferenceParser.parseTypeInfo(ReferenceParser.java:116
)

 

스왑을 좀 더 추가

기존  3기가에서 16기가 더 추가

$ sudo dd if=/dev/zero of=/swap bs=1M count=16384
16384+0 records in
16384+0 records out
17179869184 bytes (17 GB, 16 GiB) copied, 39.0126 s, 440 MB/s

$ sudo mkswap /swap
mkswap: /swap: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 16 GiB (17179865088 bytes)
no label, UUID=ac9ec318-ee42-4b7a-ba93-7f08e46e08b3

$ sudo swapon /swap
swapon: /swap: insecure permissions 0644, 0600 suggested.

[/]
$ free -h
              total        used        free      shared  buff/cache   available
Mem:          9.7Gi       244Mi       5.7Gi       0.0Ki       3.8Gi       9.2Gi
Swap:          19Gi        62Mi        19Gi

 

그래도 빌드 실패 아래와 같이 메모리 옵션 조정

[~/vim3l-a11/build/soong/java]
$ git diff
diff --git a/java/droiddoc.go b/java/droiddoc.go
index b564fea01..ddc0682a1 100644
--- a/java/droiddoc.go
+++ b/java/droiddoc.go
@@ -1474,6 +1474,7 @@ func metalavaCmd(ctx android.ModuleContext, rule *android.RuleBuilder, javaVersi

        cmd.BuiltTool(ctx, "metalava").
                Flag(config.JavacVmFlags).
+               Flag("-J-Xmx6144m").
                FlagWithArg("-encoding ", "UTF-8").
                FlagWithArg("-source ", javaVersion.String()).
                FlagWithRspFileInputList("@", srcs).

 

다시 순항중

 

빌드 완료

[100% 4209/4209] Install system fs image: out/target/product/yukawa/system.img

#### build completed successfully (42:44 (mm:ss)) ####

[~/vim3l-a11/out/target/product/yukawa]
$ ls
android-info.txt       cache           gen                           installed-files.txt             module-info.json          recovery      vendor
apex                   cache.img       installed-files.json          installed-files-vendor.json     module-info.json.rsp      root          vendor.img
appcompat              clean_steps.mk  installed-files-ramdisk.json  installed-files-vendor.txt      obj                       symbols
boot.img               data            installed-files-ramdisk.txt   kernel                          obj_arm                   system
build_fingerprint.txt  debug_ramdisk   installed-files-root.json     meson-sm1-khadas-vim3l.dtb-5.4  previous_build_config.mk  system.img
build_thumbprint.txt   fake_packages   installed-files-root.txt      misc_info.txt                   ramdisk.img               userdata.img

 

시리얼이 없는 상태에서 부트로더 업데이트

전원을 넣자 마자 Function 버튼 3번 빠르게 클릭

파란색 LED가 3번 깜박이고 또 3번 깜박이고 꺼짐

 

아래 장치를 버추얼박스에 넣어줌

 

android 11 버전에 부트로더 write 툴이 없음으로 pyamlboot 툴을 통해 write 시도

usb 는 root 권한이 필요할 수 있음으로 파이썬 패키지를 홈폴더 밑에 설치하면 골치아파짐

pip 명령도 sudo 로 수행

[~/vim3l-a11/device/amlogic/yukawa/bootloader]
$ sudo pip3 install pyamlboot
Collecting pyamlboot
  Downloading pyamlboot-1.0.0-py3-none-any.whl (25.5 MB)
     |████████████████████████████████| 25.5 MB 1.7 MB/s
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from pyamlboot) (45.2.0)
Collecting pyusb
  Downloading pyusb-1.2.1-py3-none-any.whl (58 kB)
     |████████████████████████████████| 58 kB 5.5 MB/s
Installing collected packages: pyusb, pyamlboot
Successfully installed pyamlboot-1.0.0 pyusb-1.2.1

 

아래 명령으로 write

[~/vim3l-a11/device/amlogic/yukawa/bootloader]
$ sudo boot-g12.py u-boot_kvim3l.bin
Firmware Version :
ROM: 3.2 Stage: 0.0
Need Password: 0 Password OK: 0
Writing u-boot_kvim3l.bin at 0xfffa0000...
[DONE]
Running at 0xfffa0000...
[DONE]
AMLC dataSize=16384, offset=65536, seq=0...
[DONE]
AMLC dataSize=49152, offset=393216, seq=1...
[DONE]
AMLC dataSize=16384, offset=229376, seq=2...
[DONE]
AMLC dataSize=49152, offset=245760, seq=3...
[DONE]
AMLC dataSize=16384, offset=65536, seq=4...
[DONE]
AMLC dataSize=49152, offset=393216, seq=5...
[DONE]
AMLC dataSize=16384, offset=229376, seq=6...
[DONE]
AMLC dataSize=49152, offset=245760, seq=7...
[DONE]
AMLC dataSize=49152, offset=294912, seq=8...
[DONE]
AMLC dataSize=16384, offset=65536, seq=9...
[DONE]
AMLC dataSize=1014640, offset=81920, seq=10...
[DONE]
[BL2 END]

위 작업 이후 USB 가 떨어짐

 

아래 디바이스를 다시 넣음

 

 adb와 fastboot 설치

[~/vim3l-a11/device/amlogic/yukawa/bootloader]
$ sudo apt install fastboot adb

 

디바이스 잡히는지 확인

[~/vim3l-a11/device/amlogic/yukawa/bootloader]
$ sudo fastboot devices
AMLG12ASEI610   fastboot

 

빌드 경로로 이동하여 아래 명령 입력

(이 부분은 파티션맵이 좀 정확하지 않음)

fastboot oem format 이 포럼 찾아보면 emmc re-partition 이라고 하는데 이후 u-boot 소스를 받아 확인해봐야겠음

[~/vim3l-a11/out/target/product/yukawa]
$ sudo su

root@djjproject:/home/djjproject/vim3l-a11/out/target/product/yukawa# fastboot oem format

root@djjproject:/home/djjproject/vim3l-a11/out/target/product/yukawa# fastboot flash boot boot.img

root@djjproject:/home/djjproject/vim3l-a11/out/target/product/yukawa# fastboot flash cache cache.img

root@djjproject:/home/djjproject/vim3l-a11/out/target/product/yukawa# fastboot flash system system.img

root@djjproject:/home/djjproject/vim3l-a11/out/target/product/yukawa# fastboot flash vendor vendor.img

root@djjproject:/home/djjproject/vim3l-a11/out/target/product/yukawa# fastboot flash userdata userdata.img

 

부팅 시도

root@djjproject:/home/djjproject/vim3l-a11/out/target/product/yukawa# fastboot reboot
rebooting...

finished. total time: 0.946s

위 방법으로 리셋되지 않아 리셋버튼 누름

어우 부팅하지 않음

아래 USB TTL 제품 구매

https://www.devicemart.co.kr/goods/view?no=1164522

 

추가내용 확인

https://forum.khadas.com/t/flashing-android-11-on-vim3/12375/10

 

baylibre 소스로 전환

# ~/vim3l-a11/device/amlogic/yukawa
$ git remote add --no-tags baylibre https://gitlab.baylibre.com/baylibre/amlogic/atv/aosp/device/amlogic/yukawa.git
$ git fetch baylibre
$ git checkout -f baylibre/wip/android11
# ~/vim3l-a11/device/amlogic/yukawa-kernel
$ git fetch aosp
$ git checkout -f aosp/master

 

다시 빌드

$ make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3L=true TARGET_KERNEL_USE=5.4 -j12

 

다시 write

[~/vim3l-a11/device/amlogic/yukawa/bootloader]
$ sudo boot-g12.py u-boot_kvim3l_noab.bin
Firmware Version :
ROM: 3.2 Stage: 0.0
Need Password: 0 Password OK: 0
Writing u-boot_kvim3l_noab.bin at 0xfffa0000...
[DONE]
Running at 0xfffa0000...
[DONE]
AMLC dataSize=16384, offset=65536, seq=0...
[DONE]
AMLC dataSize=49152, offset=393216, seq=1...
[DONE]
AMLC dataSize=16384, offset=229376, seq=2...
[DONE]
AMLC dataSize=49152, offset=245760, seq=3...
[DONE]
AMLC dataSize=16384, offset=65536, seq=4...
[DONE]
AMLC dataSize=49152, offset=393216, seq=5...
[DONE]
AMLC dataSize=16384, offset=229376, seq=6...
[DONE]
AMLC dataSize=49152, offset=245760, seq=7...
[DONE]
AMLC dataSize=49152, offset=294912, seq=8...
[DONE]
AMLC dataSize=16384, offset=65536, seq=9...
[DONE]
AMLC dataSize=1115504, offset=81920, seq=10...
[DONE]
[BL2 END]

[~/vim3l-a11/device/amlogic/yukawa/bootloader]
$ sudo fastboot devices
42179D9837C8    fastboot

# ~/vim3l-a11/out/target/product/yukawa
$ sudo fastboot oem format
$ sudo fastboot erase bootenv
$ sudo fastboot flash boot boot.img
$ sudo fastboot flash cache cache.img
$ sudo fastboot flash userdata userdata.img
$ sudo fastboot flash recovery recovery.img
$ sudo fastboot flash dtbo dtbo-unsigned.img
$ sudo fastboot flash super super.img

 

부팅을 하긴 하는데 사용할 수 없는 수준

SystemUI 에서 자꾸 종료가 생긴다.

 

최종 빌드 커맨드

ATV 버전을 사용하면 문제가 없다. TABLET 런처를 적용하면 문제가 생김

5.4 커널도 부팅은 하지만 화면이 나오지 않는 문제 있음

$ make TARGET_VIM3L=true TARGET_KERNEL_USE=4.19 -j16

 

반응형

댓글