콘테스트 프로젝트 진행 상황
각 Quest를 단계적으로 완성하는 프로젝트입니다.
Quest 1: 퀘스트 1/7 - 개발 환경 구축 (Developer Package 빌드)
2020.04.17


Quest 2: 퀘스트 2/7 - Yocto 환경 구축 및 STM32MP157C-DK2 보드 실행
2020.05.03Yocto build 성공화면 제출

STM32MP157C-DK2보드에 다운로드하여 성공적으로 터미널까지 부팅된 화면 제출
windows에서 다운로드..


Hello world 유저 어플리케이션 실행 화면 제출
compile

Quest 3: 퀘스트 3/7 - A7/ M4 예제 데모 시현 (LED control, Button detect)
2020.05.051. SDK 추출, 생성 결과물 및 설치 결과물에 대한 디렉토리 정보와 함께 컴파일러(arch=armv7ve)의 정보(디렉토리 위치, CC 환경변수) 출력하여 제출 (* Sample screenshot 참고)
a) 환경설정
DISTRO=openstlinux-weston MACHINE=stm32mp1 source layers/meta-st/scripts/envsetup.sh
b) SDK 추출
bitbake -c populate_sdk st-image-weston
c) SDK 설치 - 설치시 경로 지정 (./sdk로 입력함)
./build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/sdk/st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-2.6-snapshot.sh
d) 결과확인
ls ./build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/sdk/
ls ./sdk 설치시 지정한 경로
source ./sdk/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
which $CC | xargs ls -alh
echo $CC

2) SDK 를 사용하여 빌드 된 executable file 의 정보를 target(DK2 board) 시스템 정보를 함께 출력하여 제출 (* Sample screenshot 참고)
a) source : https://wiki.st.com/stm32mpu/wiki/How_to_control_a_GPIO_in_userspace 참고
mkdir gpio
cd gpio
mkdir -p install_artifact install_artifact/usr install_artifact/usr/local install_artifact/usr/local/bin
gpio.c 소스 작성
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <linux/gpio.h>
int main(int argc, char **argv)
{
struct gpiohandle_request req;
struct gpiohandle_data data;
char chrdev_name[20];
int fd, ret;
strcpy(chrdev_name, "/dev/gpiochip0");
/* Open device: gpiochip0 for GPIO bank A */
fd = open(chrdev_name, 0);
if (fd == -1) {
ret = -errno;
fprintf(stderr, "Failed to open %s\n", chrdev_name);
return ret;
}
/* request GPIO line: GPIO_A_14 */
req.lineoffsets[0] = 14;
req.flags = GPIOHANDLE_REQUEST_OUTPUT;
memcpy(req.default_values, &data, sizeof(req.default_values));
strcpy(req.consumer_label, "led_gpio_a_14");
req.lines = 1;
ret = ioctl(fd, GPIO_GET_LINEHANDLE_IOCTL, &req);
if (ret == -1) {
ret = -errno;
fprintf(stderr, "Failed to issue GET LINEHANDLE IOCTL (%d)\n",
ret);
}
if (close(fd) == -1)
perror("Failed to close GPIO character device file");
/* Start led blinking */
while(1) {
data.values[0] = !data.values[0];
ret = ioctl(req.fd, GPIOHANDLE_SET_LINE_VALUES_IOCTL, &data);
if (ret == -1) {
ret = -errno;
fprintf(stderr, "Failed to issue %s (%d)\n",
"GPIOHANDLE_SET_LINE_VALUES_IOCTL", ret);
}
sleep(1);
}
/* release line */
ret = close(req.fd);
if (ret == -1) {
perror("Failed to close GPIO LINEHANDLE device file");
ret = -errno;
}
return ret;
}
compile : https://wiki.st.com/stm32mpu/wiki/How_to_cross-compile_with_the_Developer_Package#Adding_a_.22hello_world.22_user_space_example 참고 하여 진행
컴파일
$CC gpio.c -o ./install_artifact/usr/local/bin/gpio
다운로드
scp -r install_artifact/* root@192.168.7.1:/
b) 터미널에서 실행
uname -a && lsb_release -a
file /usr/local/bin/gpio | tr ',' '\n'
ls -alh

3) MP1 터미널(tty serial, ssh, target terminal등)에서 LED blinking 어플리케이션 실행하면 LED가 깜빡이는 장면 영상 제출
a) /usr/local/bin/gpio
초록색이 켜진 상태에서 녹화 시작, 5초후 프로그램 실행으로 초록색이 깜빡임
Virtualbox에서 진행 하고 있는데.. 디스크 용량이 90GB입니다.
128G SSD에 100G할당 했는데.. Quest 3 이후에도 용량을 많이 차지하는 미션이 있으면 큰일이네요..
프로젝트 갤러리
프로젝트 제작 과정과 최종 결과물을 담은 이미지 갤러리입니다.









프로젝트 자료실
프로젝트를 재현하거나 학습하는데 필요한 모든 자료를 제공합니다.
등록된 자료가 없습니다.
프로젝트 소개
아직 등록된 프로젝트 소개가 없습니다.
코드 & 회로도
등록된 코드/회로 자료가 없습니다.
댓글 0개
아직 댓글이 없습니다. 첫 댓글을 남겨보세요!

.jpg)