<Spec>
- Ubuntu version : ubuntu-18.04.5-desktop-amd64
- tm32mpu Major ecosystem releases version : v1.2.0
현재까지 v3.0.0 version으로 trusted mode booting으로 진행하였다. 이번 장은 basic mode로 실행해보려고 한다.
결론을 먼저 말하면, v2.0.0 이상 version에서는 basic mode로 부팅되지 않는다. ST에서 v2.0.0부터 trusted mode에 중점으로 update를 하면서 basic mode에 관한 update되지 않고 있다. STM32MP1 OpenSTLinux Starter Package만 봐도 v2.0.0부터 basic mode에 관한 내용이나 image file을 제공하지 않는다.
아래의 링크에서 Starter Package를 제공한다.
version별로 부팅 구조가 다르기 때문에 주의해서 봐야한다.
특히 uboot 부분 partitions 1~3 부분 : v3.0.0 부터 fip 형태로 사용하기 때문에 partition3 name이 fip인지 check하는 부분이 존재한다. (이전에는 partition3 name을 ssbl로 쓰고 있었음)
먼저 v1.2.0에는 stm32mp157c 시리즈까지 밖에 없기에 아래와 같이 적용할 것이다.
STM32mp157c-ev1 -> STM32mp157f-ev1
STM32mp157a-dk1 -> STM32mp157d-dk1
이전에 v3.0.0 trusted mode 빌드하는 것과 거의 유사하다. (trusted와 basic mode 차이점은 uboot쪽이 다르다.)
-Working path
$ pwd
~/STM_v1.2/Developer-Package
1. Source download
https://wiki.st.com/stm32mpu-ecosystem-v1/wiki/STM32MP1_Developer_Package
├── en.SDK-x86_64-stm32mp1-openstlinux-20-02-19.tar.xz
├── en.SOURCES-u-boot-stm32mp1-openstlinux-20-02-19.tar.xz
└── en.SOURCES-kernel-stm32mp1-openstlinux-20-02-19.tar.xz
2. SDK 설치
$ tar -xvf en.SDK-x86_64-stm32mp1-openstlinux-20-02-19.tar_v1.2.0.xz
$ cd stm32mp1-openstlinux-20-02-19/sdk
$ ./st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-2.6-openstlinux-20-02-19.sh -d ../../SDK
3. u-boot build
- 압축풀기 및 패치
$ cd ~/STM_v1.2/Developer-Package
$ tar -xvf en.SOURCES-u-boot-stm32mp1-openstlinux-20-02-19.tar.xz
$ $ cd stm32mp1-openstlinux-20-02-19/sources/arm-ostl-linux-gnueabi/u-boot-stm32mp-2018.11-r0
$ tar -xvf v2018.11.tar.gz
$ cd u-boot-2018.11
$ for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
- 소스 변경 및 추가
$ vi arch/arm/dts/Makefile
$ # Makefile에 stm32mp157f-whatmam-ev1 추가
$ cp -rfvp arch/arm/dts/stm32mp157c-ev1.dts arch/arm/dts/stm32mp157f-whatmam-ev1.dts
$ cp -rfvp arch/arm/dts/stm32mp157c-ev1-u-boot.dtsi arch/arm/dts/stm32mp157f-whatmam-ev1-u-boot.dtsi
- Makefile 사용
$ source ~/STM_v1.2/Developer-Package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
$ make stm32mp15_basic_defconfig
$ make DEVICE_TREE=stm32mp157f-whatmam-ev1 all
- output copy
$ sudo dd if=u-boot-spl.stm32 of=/dev/sdb1 conv=fdatasync
$ sudo dd if=u-boot-spl.stm32 of=/dev/sdb2 conv=fdatasync
$ sudo dd if=/dev/zero of=/dev/sdb3 conv=fdatasync
$ sudo dd if=u-boot.img of=/dev/sdb3 conv=fdatasync
$ umount /media/whatmam/* # USB umount
sd Card의 Partitions 1,2에 u-boot-spl.stm32
Partitions 3에 u-boot.img
4. kenel build
- 압축 풀기 및 패치
$ $ cd ~/STM_v1.2/Developer-Package
$ tar -xvf en.SOURCES-kernel-stm32mp1-openstlinux-20-02-19.tar.xz
$ cd stm32mp1-openstlinux-20-02-19/sources/arm-ostl-linux-gnueabi/linux-stm32mp-4.19-r0
$ tar -xvf linux-4.19.94.tar.xz
$ cd linux-4.19.94
$ for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
$ make ARCH=arm multi_v7_defconfig "fragment*.config"
$ for f in `ls -1 ../fragment*.config`; do scripts/kconfig/merge_config.sh -m -r .config $f; done
$ yes '' | make ARCH=arm oldconfig
- <my>_defconfig, <my>.dts 생성
$ cp -rfvp .config arch/arm/configs/stm32_whatmam_defconfig
$ cp -rfvp arch/arm/boot/dts/stm32mp157c-ev1.dts arch/arm/boot/dts/stm32mp157f-whatmam-ev1.dts
$ vi arch/arm/boot/dts/Makefile
$ # stm32mp157f-whatmam-ev1.dts추가
- Build
$ source ~/STM_v1.2/Developer-Package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
$ make stm32_whatmam_defconfig
$ make ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000040
- output copy
$ sudo cp -rfvp arch/arm/boot/dts/stm32mp157f-whatmam-ev1.dtb /media/whatmam/bootfs/
$ sudo cp -rfvp arch/arm/boot/uImage /media/whatmam/bootfs/
SD 카드를 삽입 후 bootfs Partition에 image를 넣는다.
<참고>
https://forum.digikey.com/t/debian-getting-started-with-the-stm32mp157/12459
https://wiki.st.com/stm32mpu/wiki/Wiki_archives
https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32-mpu-openstlinux-distribution/stm32mp1starter.html
'STM32' 카테고리의 다른 글
7. STM32CubeProgrammer (0) | 2021.07.26 |
---|---|
5-2. STM32mp buildroot(Filesystem) + QT4 라이브러리 빌드(feat. yoco Filesystem) (0) | 2021.07.20 |
5-1. STM32mp buildroot(Filesystem) + QT4 라이브러리 빌드 (0) | 2021.07.20 |
4. STM32mp157 u-boot 분석 (0) | 2021.07.20 |
3. STM32mp157 eMMC Booting (1) | 2021.07.19 |