Target
Board
STM32MP157F-EV1(ST)
Host
PC - Ubuntu 22.04
목표
STM32MP1 개발 환경 구축

 


1. Distribution Package 다운로드

git으로 다운로드 받아야 한다.

git 이전에 Repo를 설치 해야 한다.

 

2. Repo 설치

PC $ mkdir ~/bin
PC $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
 

curl이 없다고 나온다. curl을 설치한다.

PC $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
PC $ chmod a+x ~/bin/repo
PC $ PATH=${PATH}:~/bin
 

아래와 같이 진행 된다.

 

3. STM32 Distribution package 다운로드

PC $ mkdir /home/본인PC이름/STM/Distribution-package
 
PC $ mkdir /home/본인PC이름/STM/Distribution-package/openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23
 
PC $ cd /home/본인PC이름/STM/Distribution-package/openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23
 
PC $ repo init -u https://github.com/STMicroelectronics/oe-manifest.git -b refs/tags/openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23
 

git 설정을 하라고 나온다.

git 설정

PC $ git config --global user.name "your_name"
PC $ git config --global user.email "your_email@example.com"
 
PC $ repo init -u https://github.com/STMicroelectronics/oe-manifest.git -b refs/tags/openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23
 

아래는 시간이 오래 걸림

PC $ repo sync
 

 

4. 환경 변수 등록

PC $ DISTRO=openstlinux-weston MACHINE=stm32mp1 source layers/meta-st/scripts/envsetup.sh
 

위와 같이 입력하면 뭐가 없다고 잔뜩 뜬다.

sudo apt-get install 명령어로 전부 설치한다.

PC $ DISTRO=openstlinux-weston MACHINE=stm32mp1 source layers/meta-st/scripts/envsetup.sh
 

방향키로 선택하여 설치

 

5. bibake 실행

PC $ bitbake st-image-weston
 

위와 같이 입력하면 python3-distutils를 설치하라고 뜬다. ubuntu22.04는 python이 최소 설치 되있다고 하므로, python3-distutils를 설치한다.

PC $ sudo apt-get install python3-distutils
 

아래는 시간이 오래 걸림(4시간 정도 걸린다)

PC $ bitbake st-image-weston
 

아래 경로에 image 파일 생성

/home/본인PC이름/STM/Distribution-package/openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/images/stm32mp1

 

아래 경로에 *.tsv 파일 생성

/home/본인PC이름/STM/Distribution-package/openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/images/stm32mp1/flashlayout_st-image-weston/trusted
 

 

 

 

 
Target
Board
STM32MP157F-EV1(ST)
Host
PC - Ubuntu 22.04
목표
STM32MP1 개발 환경 구축 - Developer Package 실행

Developer Package 실행은 다음과 같다.

1. Linux kernel 빌드

2. U-Boot 빌드

 

설치 과정은 커널 및 U-Boot가 설치된 폴더의 README.HOW_TO.txt를 참조한다.


1. Linux kernel 빌드

1-0. 작업 폴더

/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

Linux kernel Compile 순서는 다음과 같다.

1-1. Pre-requisite

1-2. Initialize cross-compilation via SDK

1-3. Prepare kernel source code

1-4. Manage kernel source code

1-5. Configure kernel source code

1-6. Compile kernel source code

1-7. Update software on board

1-8. Update Starter Package with kernel compilation outputs

 

1-1. 사전 준비

- OpenSTLinux SDK 설치 되어 있어야 함

- libncurses and libncursesw dev package libyaml-dev

PC $ cd linux-5.15.67/

PC $ sudo apt-get install libncurses5-dev libncursesw5-dev libyaml-dev
 

 

- mkimage 설치

PC $ sudo apt-get install u-boot-tools
 

 

- yaml (check dts) 설치

PC $ sudo apt-get install libyaml-dev
 

 

- git 설치

PC $ sudo apt-get install git-core gitk
 

1-2. cross-compilation via SDK

- SDK 환경 설정 스크립트 실행

PC $ source /home/본인PC이름/STM/Developer-package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
 

 

1-3. Prepare kernel source code

- ST 패치

PC $ for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
 

 

1-5. Configure kernel source code

- fragment 적용

PC $ mkdir -p ../build

PC $ make ARCH=arm multi_v7_defconfig "fragment*.config"
 

- gcc 없다고 에러 메시지

- make 설치

PC $ sudo apt-get install make
 

- gcc 설치

PC $  sudo apt-get install gcc
 

- 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
 

 

1-6. Compile kernel source code

- Kernel images 빌드(시간 오래 걸림)

PC $ make ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000040
 

 

- Kernel module 빌드(시간 오래 걸림)

PC $ make ARCH=arm modules
 

- Output build artifacts 생성

PC $ make ARCH=arm INSTALL_MOD_PATH="$PWD/../build/install_artifact" modules_install O="$PWD/../build"
 
PC $ mkdir -p $PWD/../build/install_artifact/boot/
PC $ cp $PWD/../build/arch/arm/boot/uImage $PWD/../build/install_artifact/boot/
PC $ cp $PWD/../build/arch/arm/boot/dts/st*.dtb $PWD/../build/install_artifact/boot/
 

- 생성 파일 확인


2. U-Boot 빌드

2-0. 작업 폴더

/home/본인PC이름/STM/Developer-package/stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23/sources/arm-ostl-linux-gnueabi/u-boot-stm32mp-v2021.10-stm32mp-r2-r0/u-boot-stm32mp-v2021.10-stm32mp-r2

U-Boot Compile 순서는 다음과 같다.

2-1. Pre-requisite

2-2. Initialize cross-compilation via SDK

2-3. Prepare U-Boot source code

2-4. Manage of U-Boot source code with GIT

2-5. Compile U-Boot source code

2-6. Update software on board

2-7. Update starter package with U-Boot compilation outputs

 

2-1. 사전 준비

- OpenSTLinux SDK 설치 되어 있어야 함

 

2-2. cross-compilation via SDK

- SDK 환경 설정 스크립트 실행

PC $ source /home/본인PC이름/STM/Developer-package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
 

 

2-3. Prepare U-Boot source code

- ST 패치

PC $ for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
 

 

2-5. Compile U-Boot source code

- 컴파일 환경 설정

PC $ make stm32mp15_defconfig
 

- 빌드

PC $ make DEVICE_TREE=stm32mp157f-ev1 all
 

 

 

Target
Board
STM32MP157F-EV1(ST)
Host
PC - Ubuntu 22.04
목표
STM32MP1 개발 환경 구축 - Developer Package 설치

STM32MP1 Cortex-A에서 실행되는 소프트웨어를 개발하기 위한 Developer Package 설치 순서는 아래와 같다.

 

0. 추가 패키지 설치

1. SDK 다운로드 및 설치

2. SDK 시작

3. OpenSTLinux BSP packages 다운로드 및 설치

4. Linux Kernel 설치

5. gcnano 설치

6. U-Boot 설치

7. TF-A 설치

8. OP-TEE 설치

9. debug symbol files 확인

 

여기까지 하면 작성일 기준으로 아래의 개발 환경이 만들어 진다.

Target Board
STM32mp157F-EV1
STM32 MPU ecosystem release
v4.1.0
Ubuntu
ubuntu-22.04.1-desktop-amd64
yocto version
OpenEmbedded v4.1 (Kirkstone)

 


아래 링크를 참조하여 진행 한다. hello-world application은 개발 환경 설정 후에 하도록 한다.

0. 추가 패키지 설치

basic cross-compilation(Developer Package를 통해)이나 complex cross-compilation(Distribution Package를 통해)를 하려면 추가 우분투 패키지를 설치하라고 한다.

PC $ sudo apt-get update
 
PC $ sudo apt-get install gawk wget git diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm bsdmainutils libssl-dev libgmp-dev libmpc-dev lz4 zstd
 
PC $ sudo apt-get install make xsltproc docbook-utils fop dblatex xmlto
 
PC $ sudo apt-get install libmpc-dev libgmp-dev
 
PC $ sudo apt-get install build-essential libncurses-dev libyaml-dev libssl-dev 
 

 

지금 부터는 아래 링크를 참조하여 진행한다.

1. SDK 다운로드 및 설치

1-1. 아래 링크에서 'Yocto_SDK(Yocto SDK)' Download

 
en.SDK-x86_64-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.tar.gz

 

1-2. 다운로드 받은 파일 gzip 풀기

PC $ gzip -d en.SDK-x86_64-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.tar.gz
 

1-3. tar 풀기

PC $ tar xvf en.SDK-x86_64-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.tar
 

1-4. 스크립트를 실행 가능하게 하기 위해 권한 변경

PC $ chmod +x st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-4.0.4-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.sh
 

1-5. st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-4.0.4-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.sh

스트립트를 실행 하여 설치

PC $ ./st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-4.0.4-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.sh
 

1-6. 설치 경로는

/home/본인PC이름/STM/Developer-package/SDK

로 지정

Terminal에서 실행하던, X 윈도우에서 실행하던 결과는 동일

1-7. 설치 확인

 

2. SDK 시작

2-1. SDK 환경 설정 스크립트 실행

PC $ source /home/본인PC이름/STM/Developer-package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
 

2-2. 환경 설정 확인

PC $ echo $ARCH
 
PC $ echo $CROSS_COMPILE
 
PC $ $CC --version
 
PC $ echo $OECORE_SDK_VERSION
 

 

3. OpenSTLinux BSP packages 다운로드 및 설치

3-1. 아래 링에서 'STM32MP1Dev(STM32MP1 OpenSTLinux Developer Package)' 다운로드

 
en.SOURCES-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.tar.gz

 

3-2. 다운로드 받은 파일 gzip 풀기

PC $ gzip -d en.SOURCES-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.tar.gz
 

3-3. /home/본인PC이름/STM/Developer-package 설치 경로에다 tar 풀기

PC $ tar xvf en.SOURCES-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.tar
 

 

/home/본인PC이름/STM/Developer-package/stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23/sources/arm-ostl-linux-gnueabi

폴더로 이동

 

4. Linux Kernel 설치

PC $ cd linux-stm32mp-5.15.67-stm32mp-r2-r0/
 
PC $ tar xvf linux-5.15.67.tar.xz
 
PC $ cd linux-5.15.67/
 

 

5. gcnano 설치

PC $ cd gcnano-driver-stm32mp-6.4.9-stm32mp-r2-r0/
 
PC $ tar xvf gcnano-driver-stm32mp-6.4.9-stm32mp-r2-r0.tar.xz
 
PC $ cd gcnano-driver-6.4.9/
 

 

6. U-Boot 설치

PC $ cd u-boot-stm32mp-v2021.10-stm32mp-r2-r0/
 
PC $ tar xvf u-boot-stm32mp-v2021.10-stm32mp-r2-r0.tar.xz
 
PC $ cd u-boot-stm32mp-v2021.10-stm32mp-r2/
 

7. TF-A 설치

PC $ cd tf-a-stm32mp-v2.6-stm32mp-r2-r0/
 
PC $ tar xvf tf-a-stm32mp-v2.6-stm32mp-r2-r0.tar.xz
 
PC $ cd tf-a-stm32mp-v2.6-stm32mp-r2/
 

 

8. OP-TEE 설치

PC $ cd optee-os-stm32mp-3.16.0-stm32mp-r2-r0/
 
PC $ tar xvf optee-os-stm32mp-3.16.0-stm32mp-r2-r0.tar.xz
 
PC $ cd optee-os-stm32mp-3.16.0-stm32mp-r2/
 

 

9. debug symbol files 확인

/home/본인PC이름/STM/Developer-package/stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23/images/stm32mp1/

폴더로 이동

 

 

Target
Board
STM32MP157F-EV1(ST)
Host
PC - Ubuntu 22.04
목표
STM32MP1 개발 환경 구축 - Starter Package

STM32MP157F-EV1(ST) Board 개발을 위한 개발 환경 구축을 위한 과정이다.

 

Starter Package 설치 과정은 아래 링크를 참고 하였다.


1. STM32CubeProgrammer 설치

1-1. STM32CubeProgrammer : 이전 단계에서 이미 설치

 

1-2. 환경 변수 등록

PC $ export PATH=$HOME/STMicroelecronics/STM32Cube/STM32CubeProgrammer/bin:$PATH
 

 

1-3. 제대로 설치 되었는지 확인

PC $ STM32_Programmer_CLI --h
 

 

2. USB serail link 설치

2-1. libusb 설치

PC $ sudo apt-get install libusb-1.0-0
 
PC $ cd $HOME/STMicroelecronics/STM32Cube/STM32CubeProgrammer/Drivers/rules
PC $ sudo cp *.* /etc/udev/rules.d/
 

 

3. Starter Package 다운 로드

3-1. 새 폴더 만들기

PC $ mkdir /home/본인PC이름/STM/Starter-package
 
en.SDK-x86_64-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.tar.gz

 

3-2. 다운로드 받은 파일 gzip 풀기

PC $ gzip -d en.FLASH-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.tar.gz
 

 

3-3. tar 풀기

PC $ tar xvf en.FLASH-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23.tar
 

 

4. 보드에 image 다운로드

4-1. 스위치를 아래와 같이 설정하고 PC와 CN16/USB_OTG를 연결(커넥터가 micro AB타입)

 

4-2. STM32CubeProgrammer 실행

 

4-3. Connect

 

4-4. 'Open file'

/home/본인PC이름/STM/Starter-package/stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.11.23/images/stm32mp1/flashlayout_st-image-weston/optee

 

위 경로 폴더로 이동

 

4-5. 'FlashLayout_sdcard_stm32mp157x-ev1-optee.tsv' 선택

 

4-6. Download(시간이 너무 오래 걸려서 실행 시켜놓고 다음날 완료 된것을 확인)

 

 

5. Boot

5-1. 스위치를 아래와 같이 설정하고 보드 전원 켬

5-2. Reset 버튼 누름

5-3. 시간이 좀 걸리고 화면이 뜸

 

6. 기본 명령어 실행

6-1. Serial Terminal(minicom) 설치

 PC $ sudo apt-get install minicom
 

 

6-2. ttyACM에 붙이려면 ST-LINK/V2-1가 연결 되어 있어야 한다.

PC $ ls /dev/ttyACM*
 

 

6-3. minicom 을 /dev/ttyACM0에 연결

PC $ minicom -D /dev/ttyACM0
 

 

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

 

6-5. 시스템 정보 표시

root@stm32mp1:~# uname -a
 

6-6. Linux 커널 및 GCC 버전 표시

root@stm32mp1:~# cat /proc/version
 

 

6-7. 디스크 공간 표시

Board $ df -h
 

 

6-8. ssh 연결(이더넷 선이 연결 되어 있어야함)

ip 얻기

Board $ ip addr show eth0
 

컴퓨터에서 ssh를 사용하여 보드에 연결(본인 보드 ip 넣을 것)

 

PC $ ssh root@172.10.6.98
 

 

 

Target
Board
STM32MP157F-EV1(ST)
Host
PC - Ubuntu 22.04
목표
STM32MP1 개발 환경 구축 - STM32CubeMPU Package
 

STM32MP1 Cortex-M을 실행하는 소프트웨어를 개발하기 위한 STM32CubeMPU Package 설치 순서는 아래와 같다.

1. STM32CubeIDE 설치

2. STM32CubeMP1 패키지 설치

3. STM32CubeProgrammer 설치

 

지금 단계에서는 STM32CubeProgrammer만 필요하지만, 나중에 다 필요하므로 지금 설치 한다.

 

설치 과정은 아래 링크를 참고 하였다.

 

 

$ unzip en.st-stm32cubeide_1.11.2_14494_20230119_0724.unsigned_amd64.sh.zip
 

1-3. 압축 푼 폴더로 이동

$ cd en.st-stm32cubeide_1.11.2_14494_20230119_0724.unsigned_amd64.sh/
 

1-4. 스크립트를 실행 가능하게 하기 위해 권한 변경

$ chmod +x st-stm32cubeide_1.11.2_14494_20230119_0724.unsigned_amd64.sh
 

1-5. st-stm32cubeide_1.11.2_14494_20230119_0724.unsigned_amd64.sh

스트립트를 실행 하여 설치

$ ./st-stm32cubeide_1.11.2_14494_20230119_0724.unsigned_amd64.sh
 

1-6. License를 확인 하며 설치

1-7. 설치 확인

 

2-2. 위 다운로드 받은 파일은 아래 경로로 복사

/home/본인PC이름/STM/Developer-package

 

2-3. 다운로드 받은 파일 unzip 풀기

$ unzip en.STM32Cube_FW_MP1_V1.6.0.zip
 

2-4. 파일 확인

 

3. STM32CubeProgrammer 설치

3-1. 아래 링크에서 'STM32CubeMP1'다운로드

3-2. 다운로드 받은 파일 unzip 풀기

$ unzip en.stm32cubeprg-lin-v2-12-0.zip
 

3-3. 압축 푼 폴더로 이동

$ cd en.stm32cubeprg-lin-v2-12-0/
 

3-4. SetupSTM32CubeProgrammer-2.12.0.linux

실행 하여 설치

$ ./SetupSTM32CubeProgrammer-2.12.0.linux
 

3-5. License를 확인 하며 설치

3-6. 설치 확인

 
Target
Board
STM32MP157F-EV1(ST)
Host
PC - Ubuntu 22.04
목표
STM32MP1 개발 환경 구축 - ubuntu(우분투) 설치

 


STM32MP157F-EV1(ST) Board 개발을 위해 아래 링크를 참고 하여 개발 환경을 구축한다.

대표사진 삭제

사진 설명을 입력하세요.

STM32MP157F-EV1 - STMicroelectronics

STM32MP157F-EV1 - Evaluation board with STM32MP157F MPU, STM32MP157F-EV1, STMicroelectronics

www.st.com


STM32MPU Embedded Software Developer Package는 크게 다음과 같이 나뉜다.

출처 :  STM32MP1 Developer Package - stm32mpu

 

1. Starter Package

 

2. Software Developmen Kit

2-1. Arm Cortex-A에서 실행되는 소프트웨어를 개발하기 위한 구성 요소 설치(OpenSTLinux 배포)

- SDK 설치(Arm Cortex-A의 모든 개발에 사용 가능)

- OpenSTLinux BSP packages 설치(리눅스 커널을 수정하려는 경우, 외부 트리 외 리눅스 커널 모듈을 추가하려는 경우, U-Boot, TF-A, OP-TEOS를 수정하려는 경우에만 필수)

- debug symbol files 설치(GDB를 사용하여 Linux® 커널, U-Boot, OP-TEE 또는 TF-A를 디버그하려는 경우에만 실행)

 

2-2. Arm Cortex-M(STM32CubeMPU Package)을 실행하는 소프트웨어 개발을 위한 설치

- STM32CubeIDE 설치(Arm Cortex-M에서 모든 개발에 사용 가능)

- STM32CubeMPU 패키지 설치(STM32Cube 펌웨어를 수정하려는 경우에만 필수)


가장 먼저 Linux - ubuntu를 설치한다.

Linux를 사용하는 방법에는

1. Linux 단일

2. Multi booting

3. 가상 머신(VMware, VirtualBox등)

의 방법이 있는데 1, 2번 사용을 권장한다.

3번으로 사용할 경우 하드웨어 연결이 잘 되지 않는다.

 

여기서는 1. Linux 단일로 사용하며 ubuntu 설치 디스크를 만들어 설치 한다. 멀티 부팅은 Window, Linux 동시에 사용할 수 없고 껐다 켜기 번거롭다.

 

1. ubuntu 다운로드

2. 설치 디스크 만들기(USB 사용)

2-1. Rufus 다운로드(*.iso 파일로 부팅 디스크 만드는 프로그램)

 

2-2. 2번에서 다운로드 받은 *.iso 파일 선택

 

* 부팅 디스크 만들때 모든 데이터가 삭제된다는 메시지가 나오므로 중요한 데이터는 미리 옮겨 놓을 것

 

3. ubuntu 설치

3-1. 3번에서 만든 USB를 꽂고 BIOS에서 USB를 먼저 인식하게 부팅 순서를 바꾸고 재시작

(BIOS 진입하는 key는 제조사 마다 다르므로 확인 필요)

 

3-2. ubuntu 설치

 

3-3. ubuntu 설치 완료

 

 

 

1. STM32MP257F-EV1

MPU with Dual Arm Cortex-A35 @1.5GHz, Cortex-M33 @400MHz, 3xEthernet (2+1 switch), 3xFD-CAN, LVDS/DSI, H.264, 3D GPU, AI/NN, Secure Boot, Cryptography, DRAM enc/dec, PKA

 

- 24년 3월 출시한 따끈따끈 신상품

- 아니 LCD 어디로 갔음?

STM32MP257F-EV1 특징

 
  • STM32MP257FAI3 microprocessor based on the Arm® dual‑core Cortex®‑A35 1.5 GHz and Cortex®‑M33 400 MHz in a TFBGA436 package
  • ST power management STPMIC25
  • Two 16‑Gbit DDR4 DRAMs
  • 512-Mbit S‑NOR flash memory
  • 32-Gbit eMMC v5.0
  • Three 1‑Gbit/s Ethernet (RGMII) with TSN switch compliant with IEEE-802.3ab
  • USB Host 2-port hub
  • USB Type-C® DRP
  • Four user LEDs
  • Two user, one tamper, and one reset push-buttons
  • One wake-up button
  • Four boot pin switches
  • Board connectors:
  • Three Ethernet RJ45
  • Two USB Host Type-A
  • USB Type-C®
  • microSD™ card holder
  • Mini PCIe
  • Dual-lane MIPI CSI-2® camera module expansion connector
  • Two CAN FD
  • LVDS
  • MIPI10
  • GPIO expansion connector
  • mikroBUS™ expansion connector
  • VBAT for power backup
  • On-board STLINK-V3EC debugger/programmer with USB re-enumeration capability: Virtual COM port, and debug port
  • Mainlined open-source Linux® STM32 MPU OpenSTLinux distribution and STM32CubeMP2 software with examples
  • Linux® Yocto project, Buildroot, and STM32CubeIDE as development environments

2. Block Diagram

사진 삭제

사진 설명을 입력하세요.

3. 특장점

- STM32MP157보다 속도가 빨라졌지만 라즈베리 파이5보다 아쉬운 속도

- 아직도 해상도 4K는 안됨

- 메모리 관리를 위해서 OS를 올려야 하는데, Yocto를 사용하는 레퍼런스가 많지 않음

(공식 사이트에서 보고 따라해도 한번에 안됨)

- 넉넉한 GPIO와 peripherals

- 이더넷 2개 연결

- 여러 보안 기능

 

 

1. TouchGFX?

- TouchGFX는 STM32 마이크로컨트롤러를 위한 고성능 그래픽 소프트웨어 프레임워크

- 이 프레임워크는 리소스가 제한된 임베디드 시스템에서도 고해상도 GUI를 구현할 수 있도록 설계되었음

- 효율적인 메모리 관리와 하드웨어 가속 기능을 통해 부드러운 애니메이션과 빠른 터치 반응을 제공

- 주요 구성 요소로는 Chrom-ART Accelerator, Chrom-GRC, JPEG 코덱이 있으며, 그래픽 데이터의 처리와 압축을 가속화

- 프레임워크는 다양한 사용자 정의 위젯과 그래픽 효과를 지원하여 디자인의 유연성을 극대화

- 자동 C++ 코드 생성을 통해 개발 과정을 간소화하고 유지보수 용이

- TouchGFX는 하드웨어 자원을 최적화하여 배터리로 구동되는 장치에서도 긴 배터리 수명을 지원합니다.

- TouchGFX는 X-Cube-TouchGFX라는 하나의 X-Cube 패키지로 제공

- TouchGFX는 두 개의 도구와 한 개의 프레임워크라는 세 가지 주요 부분으로 구성

 

공식 홈페이지


1-1. TouchGFX Designer

: TouchGFX 애플리케이션의 시각적 모양을 만들 수 있는 TouchGFX의 사용하기 쉬운 GUI 빌더

 

1-2. TouchGFX Generator

: 사용자가 STM32 기반 하드웨어를 위한 맞춤형 TouchGFX 추상화 계층(AL)을 구성하고 생성할 수 있는 STM32CubeMX 플러그인

 

1-3. TouchGFX Engine

: UI 애플리케이션을 구동하는 TouchGFX C++ 프레임워크. 화면 업데이트, 사용자 이벤트 및 타이밍을 처리. 고급 TouchGFX 기술은 STM32 마이크로컨트롤러에 최적화되어 최소한의 CPU 부하와 메모리 사용량으로 최대 성능을 제공

X-CUBE-TOUCHGFX

X-CUBE-TOUCHGFX - STMicroelectronics

X-CUBE-TOUCHGFX - TouchGFX advanced and free of charge graphical framework optimized for STM32 microcontrollers, X-TOUCHGFX-MPU, X-CUBE-TOUCHGFX, STMicroelectronics

www.st.com


2. 그래픽 포트폴리오


3. 기능

Smartphone animations

  • TouchGFX (available as X-CUBE-TOUCHGFX Expansion Package) enables smartphone animations such as swipe, scroll, 3D effects, video playback, and others
  • Supports transparency, alpha blending, antialiased fonts, and kerning
  • Instant interaction from touch-panel display or hard-keys at the user's choice

 

Easy programing

  • TouchGFX Designer offers drag-and-drop programming with automatic code generation
  • More than 30 widgets (such as swipe container, animated image, shapes, clock, scroll list, and others)
  • Custom triggers and actions
  • Easy addition of an own C++ developer code for the creation of any unique UI application
  • Support of a variety of IDEs such as IAR Systems® IAR Embedded Workbench®, Arm® Keil® MDK-ARM, and GCC-based IDEs such as STM32CubeIDE
  • Easy interfacing with any C code using the Model-View-Presenter pattern

 

Minimum CPU load and footprints

  • Taking full benefit of STM32 graphic hardware accelerators
  • Optimized library footprints requiring from 20 Kbytes of flash memory and 10 Kbytes of RAM
  • Partial frame buffering minimizing graphic buffer sizes and enabling graphic UI support from lowest-cost STM32 options
  • Running with RTOS or on bare metal, supporting the STM32 microcontrollers based on the Arm® Cortex®-M0+, M3, M4, M33, and M7 processors

 

Fast start of UI development

  • STM32 display kits are fully supported (one click) in TouchGFX Designer
  • TouchGFX Generator helps users start on their own STM32 hardware
  • Reference demo examples demonstrate achievable UI performance

 

Part of STM32 ecosystem

  • TouchGFX Engine compiled library running on any STM32 microcontroller
  • Smooth interoperability with STM32Cube MCU Packages, STM32CubeMX, and STM32CubeIDE
  • TouchGFX project examples using STM32CubeMX, STM32CubeIDE, and STM32Cube MCU Packages

 

Support and documentation

  • TouchGFX knowledge base for technical literature
  • Active TouchGFX community for online support and graphical discussions
  • Videos and webinars addressing embedded graphic topics

4. 주요 그래픽 가속기

4-1. 기본 2D 그래픽 가속기

(1) Chrom-ART Accelerator (DMA2D)

- Chrom-ART Accelerator는 DMA2D라고도 불리며, STM32 MCU의 2D 그래픽 하드웨어 가속기

- 이 하드웨어는 2D 그래픽 작업을 가속화하여 CPU의 부하를 줄이고, 더 빠르고 부드러운 그래픽 렌더링을 가능케 함

 

주요 특징

  • 이미지 블렌딩 : 두 개 이상의 이미지를 하드웨어 수준에서 섞어서 처리(복사, 변환, 크기 조정, 색상 변경, 회전, 알파 블랜딩)
  • 컬러 포맷 변환 : 다양한 컬러 포맷(예: RGB565, ARGB8888) 간의 변환을 빠르게 처리.
  • 알파 블렌딩 : 반투명 효과를 쉽게 구현.
  • 메모리 복사 가속 : CPU 개입 없이 그래픽 연산을 하드웨어에서 처리하여 그래픽 데이터나 이미지의 복사를 빠르게 수행

Chrom-ART는 주로 GUI 라이브러리(예: TouchGFX)와 함께 사용되며, 그래픽 렌더링 성능을 높여 사용자 인터페이스의 부드러움과 응답성을 개선하는 데 기여

 

(2) Chrom-GRC (Graphics Resource Compression)

- Chrom-GRC는 STM32 MPU(Microprocessor Unit) 시리즈에 포함된 고급 그래픽 처리 하드웨어

- Chrom-ART와는 다른 계층에서 작동하며, 복잡한 그래픽 애플리케이션에 필요한 고급 기능을 제공

- Chrom-GRC의 주요 역할은 그래픽 사용자 인터페이스에서 창 관리와 화면 구성을 하드웨어적으로 처리

이를 통해, 복잡한 레이아웃과 다양한 화면 효과를 더 효율적으로 구현

 

주요 특징

  • 다중 레이어 처리 : 여러 그래픽 레이어를 관리하며, 각 레이어는 독립적으로 조정 및 렌더링
  • 고급 메모리 관리 : 그래픽 데이터의 효율적인 메모리 관리 및 디스플레이에 필요한 메모리 대역폭 최적화

Chrom-GRC는 복잡한 그래픽 시스템에서 더 나은 성능을 제공하는 하드웨어 모듈로, 메모리 사용 최소화, 고해상도 그래픽 유지, 대용량 그래픽 데이터를 효율적으로 관리하고 처리하여 GUI 성능 최적화에 도움

 

4-2. 고급 그래픽 가속기 (GPU)

(1) NeoChrom GPU

- NeoChrom GPU는 주로 저전력 SoC(시스템 온 칩)에 사용되는 2D 그래픽 처리용 하드웨어 가속기

- 임베디드 시스템에서 2D 그래픽 렌더링을 빠르고 효율적으로 수행할 수 있도록 설계

- 이 GPU는 저전력 소모와 고성능을 동시에 제공하는 것이 특징으로, 임베디드 장치나 소형 전자 기기에서 고해상도 그래픽을 처리 가능

 

주요 특징

  • 2D 그래픽 렌더링 : 다양한 2D 그래픽 요소를 빠르게 처리하여 화면에 표시
  • 고속 그래픽 처리 : 저전력 시스템에서도 고속으로 그래픽 연산을 수행, 화면 전환 및 애니메이션을 부드럽게 구현
  • 텍스처 처리 : 텍스처 맵핑과 같은 그래픽 작업을 빠르게 처리하여 이미지의 품질을 높임
  • 메모리 대역폭 최적화 : 메모리 사용을 효율적으로 관리하여 그래픽 성능을 최적화

NeoChrom GPU는 임베디드 시스템에서 사용자 인터페이스(UI) 및 간단한 2D 그래픽 작업을 빠르게 처리하는 데 사용됨. 저전력 환경에서 성능을 최적화하여 배터리 기반 장치에서도 고품질 그래픽을 제공하게함

 

(2) NeoChromVG GPU

-NeoChromVG GPU는 벡터 그래픽 처리에 특화된 GPU로, 임베디드 시스템에서 벡터 그래픽 렌더링을 하드웨어 수준에서 가속화하는 장치

- 벡터 그래픽은 해상도에 관계없이 선명한 이미지를 제공하는데, NeoChromVG는 이러한 그래픽 작업을 고속으로 처리 가능

 

주요 특징

  • 벡터 그래픽 렌더링 : 선, 곡선, 다각형 등과 같은 벡터 그래픽 요소를 빠르게 처리하여 스케일링, 회전, 변형 등의 작업을 원활하게 수행
  • 스케일링 및 변형 : 벡터 이미지를 확대하거나 축소할 때, 품질 손실 없이 부드러운 그래픽을 제공
  • 다중 그래픽 레이어 처리 : 여러 벡터 그래픽 레이어를 동시에 처리하여 복잡한 UI 레이아웃을 효율적으로 관리
  • 저전력 벡터 처리 : 저전력 소모로 복잡한 벡터 그래픽을 빠르고 효율적으로 처리

NeoChromVG GPU는 벡터 그래픽 기반 UI, 아이콘, 고해상도 화면에서 스케일링과 같은 작업을 많이 사용하는 시스템에서 주로 활용됨. 애니메이션, 차트, 다양한 해상도를 지원해야 하는 화면에서 특히 유용

 

4-3. 이미지 및 멀티미디어 가속기

(1) JPEG Codec (Hardware JPEG Accelerator)

- JPEG Codec은 STM32 시리즈에서 제공되는 하드웨어 JPEG 인코더 및 디코더

- JPEG는 이미지 압축 표준 중 하나로, 그래픽 및 사진 데이터를 압축하거나 압축 해제하는 데 사용

- 하드웨어 JPEG Codec은 소프트웨어 기반 처리에 비해 더 빠르고 에너지 효율적으로 JPEG 이미지를 처리 가능

 

주요 특징

  • JPEG 압축(Encoding) : 이미지를 JPEG 포맷으로 압축하여 저장하거나 전송 가능
  • JPEG 해제(Decoding) : 압축된 JPEG 이미지를 빠르게 디코딩하여 디스플레
  • 저전력 소모: 하드웨어 기반이기 때문에 소프트웨어보다 전력 소비가 적고, CPU 부하도 줄어듦

JPEG Codec은 특히 고속 이미지 처리가 필요한 애플리케이션(예: 카메라, 동영상 재생 등)에서 성능 향상에 중요한 역할

 

'ST > TouchGFX' 카테고리의 다른 글

STM32CubeIDE에서 TouchGFX code Import  (0) 2025.03.22
TouchGFX 설치 및 image 띄우기  (0) 2025.03.22

 

MCU
STM32H747I-DISCO(ST)
IDE
STM32CubeIDE + TouchGFX
목표
STM32CubeIDE에서 TouchGFX에서 Generate 된 code 수정

 

앞에서 TouchGFX에서 Generate code, Run Simulator, Run Target까지 해봤다. 직접 code를 수정하려면,

1. TouchGFX 파일과 구성 옵션을 기존 프로젝트에 추가

- Include 경로 추가

- 컴파일러 스위치

- 링커 연결 및 옵션

- 애셋(asset) 생성

 

2. IDE에서 TouchGFX makefile을 호출

하는 두가지 방법이 있다.

여기서는 STM32CubeIDE에서 TouchGFX에서 Generate된 code를 Import한다.

 

1. TouchGFX Designer 실행

1-1. Generate Code

 

2. STM32CubeIDE 실행

2-1. File - Open Projects from File System...

 

2-2. Directory...

 

2-3. Touch GFX에서 생성된 폴더 안에 들어가 보면 다음과 같다.

- EWARM : IAR Embedded Workbench

- gcc : GCC

- MDK-ARM : Keil uVision

- STM32CubeIDE : STM32CubeIDE

여기서는 STM32CubeIDE를 사용 하므로 이 폴더를 선택

 

2-4. STM32H747는 dure core로 M4, M7 두개가 뜬다.

 

2-5. Import 완료

 

2-6. Source 수정

- 그래프를 그리기 위해 code 수정

- TouchGFX에서 Generate 된 code

- 사용자가 수정 해야 하는 code 위치

 

2-7. Project - Build All or Build Project

 

2-8. Run - Run

 

'ST > TouchGFX' 카테고리의 다른 글

TouchGFX  (0) 2025.03.22
TouchGFX 설치 및 image 띄우기  (0) 2025.03.22

 

MCU
STM32H747I-DISCO(ST)
IDE
STM32CubeIDE + TouchGFX
목표
TouchGFX 설치

- TouchGFX

TouchGFX는 최첨단 GUI 개발에 필요한 모든 것을 제공하는 첨단 GUI 툴

1. STM32CubeIDE 실행

1-1. Help - Manage Embedded Software Package

대표사진 삭제

사진 설명을 입력하세요.

 

1-2. TouchGFX 검색 및 Download

 

1-3. 윈도우 검색기에서 touch로 검색하여 설치

 

 

 

 

2. TouchGFX Designer 실행

 

2-1. Target board 선택하여 Create

 

2-2. Images - Scalable Image

 

2-3. Image 추가

 

※ *.png file만 추가 가능

 

2-4. Generate Code(F4)

 

2-5. Run Simulator(F5)

 

2-6. Run Target(F6)

※ Run Target 전에 STM32CubeProgrammer가 설치 되어 있어야 함

※ 이 단계에서 이유없이 에러가 나면 TouchGFX를 관리자 권한으로 실행 시켜 볼것

 

 

'ST > TouchGFX' 카테고리의 다른 글

TouchGFX  (0) 2025.03.22
STM32CubeIDE에서 TouchGFX code Import  (0) 2025.03.22

+ Recent posts