수행기록퀘스트3

퀘스트 3/7 - A7/ M4 예제 데모 시현 (LED control, Button detect)
2020. 5. 5 (화) 23:33 백종* 조회 287 좋아요 0 스크랩 0 댓글 0

역시나 쉽지 않은 과정입니다.

(한번에 쉽게 넘어가면 별거 아닐 듯 한데요.)

 

먼저, 다른 분들이 먼저 글을 작성해서 공개해 주신 내용이 있어서, 그나마 많은 도움이 됩니다.

 

하드디스크 공간을 더 늘렸습니다. 60GB -> 100GB

(작업을 위한 리소스가 장난 아니네요).

 

1. SDK 추출 하여 제출하기

먼저 SDK 추출에 대해서는 링크가 없어서, 많이 힘들었습니다.

zmflfto** 님이 남겨주신 댓글을 통해서 정보 획득!

https://wiki.st.com/stm32mpu/wiki/How_to_create_an_SDK_for_OpenSTLinux_distribution

 

작업 위치 :  /work/STM32MP1/Distribution-Package/openstlinux-20-02-19$

에서, bitbake에 대한 환경 변수 반영 스크립트 실행

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

 

PC $> bitbake -c populate_sdk st-image-weston

 

이 작업 또한 bitbake를 통해서 SDK를 생성하는 과정으로 대략 3~5시간 소요된다고하여서,

VMware상에서 Processor 할당을 1 -> 4로 변경하였습니다.

이를 통해서 처음에 진행 속도가 좀 많이 개선이 되었는데, 중간에 에러에 의한 종료가 1회 발생

이후 83% or 97%에서 무수히 많은 시간을 소비.

(이 부분에서 12시간 이상 소요~)

그래서 Ctrl + C를 통해서 종료하고, 다시 진행했더니,

83%에서 잠시 후 바로 84% -> 96%로 빠른 진행을 보였습니다.

추출된 SDK에 대한 설치 스크립트 실행

PC $> ./build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/sdk/st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-2.6-snapshot.sh

설치 위치를 물어보는 프롬프트가 나오면, ./sdk 지정 (default는 다른 값으로 되어 있음)

 

설치 결과 확인 (과제 1)

설치 스크립트를 수행하면, 위와 같이 .json 파일이 하나더 추가되어 있다.

 

이제 sdk 아래에 생성된 크로스컴파일러에 대한 환경 등록

PC $> source ./sdk/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

그리고 적용된 결과 확인

PC $> which $CC | xargs ls -alh

PC $> echo $CC

 

2. SDK를 이용해서 사용자 예제 작성하기

https://wiki.st.com/stm32mpu/wiki/How_to_control_a_GPIO_in_userspace

 

작업 폴더 아래에 사용자 폴더 생성 (user)

PC $> mkdir user

PC $> cd user

사용자 폴더 아래에 gpio 예제를 작성

PC $> mkdir gpio

PC $> cd gpio

이제, GPIO 관련 예제 코드 생성

PC $> vi gpio.c

위에 wiki에서 3.2 항목의 소스 코드 참조 : GREEN LED On/Off 예제

(cmjj** 님 수행 글 참조!)

 

사용자 영역에 대한 코드 추가 방법에 대해서는 3.2 코드 아래에 링크가 있음!

그곳에서 한 번 더, "Adding a "hello world" user space example 링크를 참조

https://wiki.st.com/stm32mpu/wiki/How_to_cross-compile_with_the_Developer_Package#Adding_a_.22hello_world.22_user_space_example

 

컴파일 후 생성될 binary 파일이 저장될 디렉토리 생성

PC $> mkdir -p install_artifact install_artifact/usr install_artifact/usr/local install_artifact/usr/local/bin

 

컴파일 수행

PC $> $CC gpio.c -o ./install_artifact/usr/local/bin/gpio

생성된 실행 파일을 이제 보드에 다운로드 진행

 

보드에 랜선을 PC와 연결하고, 보드의 IP 주소 설정 : 192.168.1.10

PC $> scp -r install_artifact/* root@192.168.1.10:/

 

이제 보드에 정상적으로 다운로드 되어 있는지 확인 수행을 위해서 PC와 보드간에 추가로 USB 케이블 연결

(보드의 ST-LINK를 이용해서 PC에 연결 : VCP 추가 됨)

PC에서 Terminal 프로그램을 실행하여 보드와 연결

 

설치 결과 확인 (과제 2)

BOARD $> uname -a && lsb_release -a

BOARD $> file /usr/local/bin/gpio | tr ',' '\n'

BOARD $> ls -alh /usr/local/bin/

 

3. 사용자 예제(gpio) 동작 영상 업로드

로그인 후
참가 상태를 확인할 수 있습니다.