오드로이드 신제품 M1S

1 minute read

소개

odroid-m1s
[ODROID-M1S]


하드커널의 새로운 모델 ODROID-M1S가 출시되었습니다.

관련 페이지


2달만의 업로드인데 저도 M1S 개발하느라 정신이 없어서 그동안 뜸했습니다..

OS

OS는 기본적으로
리눅스는 Ubuntu 20.04 server / Desktop 를 지원합니다.
안드로이드는 Android11 를 지원합니다.

커스텀 빌드

새로운 모델인 M1의 u-boot와 커널 커스텀 빌드 및 설치 방법입니다.
공식 위키와 함께 참조하면 더 쉽습니다.

u-boot

리눅스 PC에서 진행합니다. 저는 Ubuntu Desktop에서 진행 했습니다.

크로스 컴파일러와 함께 빌드에 필요한 패키지들을 설치합니다. 만약 설치 시 컴파일 오류가 발생하면 공식 위키의 툴체인을 사용합니다.

$ sudo apt install lzop build-essential bc libncurses5-dev libc6-i386 lib32stdc++6 zlib1g:i386 gcc gcc-aarch64-linux-gnu


u-boot 코드를 받습니다.

$ git clone https://github.com/hardkernel/u-boot
$ cd u-boot
$ git submodule init
$ git submodule update


u-boot 빌드합니다.

$ export ARCH=arm64
$ export CROSS_COMPILE=aarch64-linux-gnu-
$ ./make.sh odroid_rk3566


빌드 완료 시 다음과 같은 로그가 나타나며,
idblock.bin (spl) , u-boot.bin(u-boot) 파일이 생성되는지 확인합니다.

...

********boot_merger ver 1.31********
Info:Pack loader ok.
pack loader okay! Input: /home/steve/u-boot/rkbin/RKBOOT/RK3568-ODROIDM1S.ini
/home/steve/u-boot

Image(no-signed, version=0): uboot.img (FIT with uboot, trust...) is ready
Image(no-signed): rk356x_spl_loader_v1.18.112.bin (with spl, ddr...) is ready
pack uboot.img okay! Input: /home/steve/u-boot/rkbin/RKTRUST/RK3568TRUST.ini

Platform RK3568 is build OK, with new .config(make odroid_rk3566_defconfig -j24)
/opt/toolchains/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
2023. 11. 17. (금) 09:28:47 KST


spl, u-boot 파일의 주소 값은 각각 common/fb_mmc.cconfigs/odroid_rk3566_defconfig 에 명시되어 있습니다.

$ git grep IDBLOCK_SECTOR | grep 64
common/fb_mmc.c:#define CONFIG_FASTBOOT_IDBLOCK_SECTOR 64

$ git grep U_BOOT_SECTOR | grep odroid_rk3566
configs/odroid_rk3566_defconfig:CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x0800


spl 과 u-boot 파일을 저장장치에 overwriting 합니다.

$ sudo dd if=./idblock.bin of=<DEVICE/NODE/YOUR/STORAGE> conv=fsync seek=64
$ sudo dd if=./u-boot.bin of=<DEVICE/NODE/YOUR/STORAGE> conv=fsync seek=2048


kernel

커널을 직접 make 명령으로 빌드할 수 있지만, 이미 존재하는 패키지를 사용하겠습니다.
커널 빌드 스크립트 패키지를 설치 합니다.

$ sudo apt add-apt-repository ppa:how2flow/ppa
$ sudo apt update
$ sudo apt install kernel-scripts


커널 코드를 받습니다.

$ git clone -b odroidm1-5.10.y --depth 1 https://github.com/hardkernel/linux


커널 빌드 합니다.

$ cd linux
$ echo "-odroid-arm64" > .scmversion
$ kernel-script --crosscompile

[kernel arch]
e.g 'arm64' or 'x86' or ...
Input arch: arm64

[kernel config]
e.g 'i386_defconfig' or 'oldconfig' or ...
Input config: odroidm1_defconfig

What do you wan't build? (all/dtbs/modules)? [A/d/m]: A


크로스 컴파일이 끝난 커널 파일을 오드로이드 보드에서 설치합니다.
copy & paste 를 해도 되고 nfs 마운트 해서 진행해도 됩니다.

# In odroid-m1s

$ cd linux
$ sudo sed -i "s/^force=.*$/force=\"yes\"/g" /usr/share/flash-kernel/functions
$ sudo ln -s $PWD/arch/arm64/boot/dts /usr/lib/linux-image-$(cat include/config/kernel.release)
$ sudo make modules install
$ sudo make install


보드 특성

M1S의 몇 가지 특성이 있다면,
기존 오드로이드 모델들 보다 I/O가 더 많고, emmc가 on-board 되어 있으며,
M1과 비슷한 성능을 내면서 소비 전력은 더 적습니다.

Leave a comment