Target
Board |
STM32MP157F-EV1(ST)
|
Host
|
PC - Ubuntu 22.04
|
목표
|
STM32MP1 개발 환경 구축 - hello-world application
|
아래 링크를 참조하여 진행 한다.
1. 준비
1-1. cross-compilation via SDK
- SDK 환경 설정 스크립트 실행
PC $ source /home/본인PC이름/STM/Developer-package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
1-2. Prepare kernel source code
- ST 패치
PC $ for p in `ls -1 ../*.patch`; do patch -p1 < $p; done

1-3. Configure kernel source code
- fragment 적용
PC $ make ARCH=arm multi_v7_defconfig "fragment*.config"

PC $ for f in `ls -1 ../fragment*.config`; do scripts/kconfig/merge_config.sh -m -r .config $f; done

PC $ yes '' | make ARCH=arm oldconfig

2. Compile kernel source code
2-1. Kernel images 빌드(시간 오래 걸림)
PC $ make ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000040

2-2. Kernel module 빌드(시간 오래 걸림)
PC $ make ARCH=arm modules

- Output build artifacts 생성
PC $ mkdir -p $PWD/install_artifact/
PC $ make ARCH=arm INSTALL_MOD_PATH="$PWD/../build/install_artifact" modules_install O="$PWD/../build"

3. Kernel 배포
3-1. Kernel을 보드에 올리기
PC $ scp arch/arm/boot/uImage root@<board ip address>:/boot

3-2. Devicetree를 보드에 올리기
PC $ rm install_artifact/lib/modules/5.15.67/build install_artifact/lib/modules/5.15.67/source
3-3. Kernel module 복사
PC $ scp -r install_artifact/lib/modules/* root@<ip of board>:/lib/modules
3-4. ttyACM에 붙이려면 ST-LINK/V2-1가 연결 되어 있어야 한다.
PC $ ls /dev/ttyACM*

3-5. minicom 을 /dev/ttyACM0에 연결
PC $ minicom -D /dev/ttyACM0

3-6. 리셋 버튼을 눌러 보드를 리셋하면 부팅 로그가 미니컴 창에 표시됨

3-7. ip 얻기
Board $ ip addr show eth0
3-8. modules.dep, modules.symbols 재생성
Board $ /sbin/depmod -a
3-8. 디스크 데이터를 메모리와 동기화
Board $ /sync
3-10. 보드 재시작
Board $ reboot
4. Kernel device driver 수정
4-1. Board에서 로그 정보 확인
Board $ dmesg | grep -i stm_drm_platform_probe
4-2. 아래 폴더의 drv.c 수정 하여 메시지 추가 하여 저장
/home/본인PC이름/STM/Developer-package/stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.15.67-stm32mp-r2-r0/linux-5.15.67/drivers/gpu/stm/
|
static int stm_drm_platform_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct drm_device *ddev;
int ret;
[...]
DRM_INFO("Simple example - %s\n", __func__);
return 0;
[...]
}
4-3. Kernel 다시 빌드
PC $ make uImage LOADADDR=0xC2000040
4-4. Kernel을 보드에 올리기
PC $ scp arch/arm/boot/uImage root@172.xx.xx.xx:/boot
4-5. 보드 재시작
Board $ reboot
4-6. Board에서 로그 정보 확인
Board $ dmesg | grep -i stm_drm_platform_probe

'ST > STM32MP157' 카테고리의 다른 글
STM32MP1 - STM32MP157F-EV1 (0) | 2025.03.22 |
---|---|
STM32MP1 개발(7) - Cortex-A hello-world (0) | 2025.03.22 |
STM32MP1 개발 환경 구축(6) - Cortex-A Distribution Package 설치 (0) | 2025.03.22 |
STM32MP1 개발 환경 구축(5) - Cortex-A Developer Package 실행 (0) | 2025.03.22 |
STM32MP1 개발 환경 구축(4) - Cortex-A Developer Package 설치 (0) | 2025.03.22 |