현재까지 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을 제공하지 않는다.
$ 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
$ $ 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
$ wget https://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz
$ tar -xvf qt-everywhere-opensource-src-4.8.7.tar.gz
$ cd qt-everywhere-opensource-src-4.8.7
5. qmake.conf 생성
$ cp -rfvp mkspecs/qws/linux-arm-gnueabi-g++ mkspecs/qws/linux-arm-gnueabihf-g++
$ vi mkspecs/qws/linux-arm-gnueabihf-g++/qmake.conf
microSD card에서 first bootloader가 partition1, 2에 저장하여 select하여 사용하는 것과 같이 mmcblk1boot0, mmcblk1boot1에 copy후 select 하여 사용한다. 그리고 그다음은 partition1(fip)로 넘어가도록 설정한다.
stm32mpu Major ecosystem releases version : v3.0.0
kernel : Linux® kernel v5.10 (LTS)
-Working path
$ pwd
~/STM/Developer-Package
1. Kernel build
- 압축 풀기 및 패치
$ tar -xvf en.SOURCES-kernel-stm32mp1-openstlinux-5.10-dunfell-mp1-21-03-31.tar.xz
$ cd stm32mp1-openstlinux-5.10-dunfell-mp1-21-03-31/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.10.10-r0
$ tar -xvf linux-5.10.10.tar.xz
$ cd linux-5.10.10
$ 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