종료217명 참가중

STM32MP1 완전 정복 퀘스트 챌린지

프로젝트 제출하기
201제출 프로젝트
2020.06.14최종 마감일
STM32MP1 완전 정복 퀘스트 챌린지대표 이미지
참가 안내

콘테스트 참가 = 프로젝트 생성

이 콘테스트에 참가신청을 하시면 하나의 프로젝트가 생성됩니다. 콘테스트 프로젝트 완성단계 [3개의 Quest]를 완료하면서 점진적으로 프로젝트를 완성해 나갑니다. 완성된 프로젝트는 e4ds make platform 에서 여러분의 포트폴리오로 활용할 수 있습니다.

STEP 01
참가 신청

참가 신청을 하시고, 회원님의 콘테스트 프로젝트를 생성하세요.

STEP 02
단계별 완성

Quest를 순차적으로 완료하며 프로젝트를 완성시켜 나갑니다.

STEP 03
커리어 아카이빙

자신의 기술 자산 포트폴리오로 활용하세요.

소개

STM32MP1 완전 정복 퀘스트 챌린지

일정

진행 일정

1
2020년 4월 13일 시작

참가 접수

프로젝트 생성

~ 2020년 4월 19일

Quest 1 제출

개발 환경 구축 : Ubuntu 환경 및 STM32MP1 개발 패키지

~ 2020년 5월 3일

Quest 2 제출

Yocto 환경 구축 및 STM32MP157C-DK2 보드 실행

~ 2020년 5월 10일

Quest 3 제출

A7/ M4 예제 데모 시현 (LED control, Button detect)

~ 2020년 5월 17일

Quest 4 제출

A7/ M4 예제 응용 데모 시현

~ 2020년 5월 24일

Quest 5 제출

QT Layer 추가 및 빌드

~ 2020년 5월 31일

Quest 6 제출

이미지 빌드 및 QT 환경에서의 예제 실행

~ 2020년 6월 14일

Quest 7 제출

[자율과제] Application 선정 및 다양한 기능 구현

2020년 6월 19일

결과 발표

Quest는 프로젝트를 완성하는 단계별 여정입니다

각 Quest는 독립된 제출물이 아닌, 하나의 프로젝트를 발전시키는 과정입니다. Quest 1에서 시작한 프로젝트가 Quest 2, 3를 거치며 점점 완성되어 갑니다. 모든 Quest를 완료하면 플랫폼에 등록된 완성된 프로젝트 하나가 탄생합니다.

완료

Quest 1 · 개발 환경 구축 : Ubuntu 환경 및 STM32MP1 개발 패키지

첫번째 퀘스트는 플랫폼 보드 없이 개발환경을 구축하는 단계입니다.

Ubuntu 환경을 만들고 STM32MP1 개발 패키지인 Starter + Developer Package를 설치하고,

설치된 Developer Package에서 빌드를 성공시킨다.

0. [필수조건] Shell prompt에 사용자 식별을 위한 ‘w', ‘whoami’, ‘uname -a’를 입력하여 출력.

1. Developer Package에 포함된 리눅스 커널을 빌드한 뒤 [필수조건]과 함께 한 화면에 출력되도록 하여 Capture한 뒤 제출한다.

2. 리눅스 커널에 이어 커널 모듈과 artifact들을 빌드하고 그 내용을 ‘tree' 명령 및 'ls' 명령으로 출력하고 [필수조건]과 함께 한 화면에 출력되도록 하여 Capture한 뒤 제출한다.

3. Developer Package에 포함된 U-Boot를 빌드한 뒤 [필수조건]과 함께 한 화면에 출력되도록 하여 Capture한 뒤 제출한다.

2020.04.13 ~ 2020.04.19
완료

Quest 2 · Yocto 환경 구축 및 STM32MP157C-DK2 보드 실행

STM32MP1의 Distribution Package의 Yocto 환경 구축하고 빌드 된 이미지를 STM32MP157C-DK2보드에 올립니다.

“Hello World” 유저 어플리케이션을 작성한 뒤 해당 보드 터미널에서 실행시켜보세요.

  1. STM32MP1 Distribution Package를 Unbuntu에 설치하여 bitbake 성공화면을 제출합니다.
  2. 2. bitbake 빌드 후에 생성되는 이미지들을 ‘FlashLayout_sdcard_*.tsv파일과 함께 STM32CubeProgreammer를 사용하여 기록(flashing)합니다.
    호스트와 DK2 보드를 연결하여 터미널을 통해 출력되는 로그 화면을 아래 그림처럼 제출합니다.
    (* 호스트에서 dd 명령을 사용한 sdcard 기록 방법을 사용해도 무방합니다)
  3. 간단한 Hello world 유저 어플리케이션 작성하여 DK2 보드에 업로드 한 후 실행한 화면을 체출합니다.
  • Install & Build the OpenSTLinux distribution  링크
  • Flashing the built Image  링크
  • Hello world 어플리케이션 작성 예제  링크
※ repo 를 통해 다운 받아야 할 파일의 다운로드 속도가 너무 느린 관계로 데이터를 공유 드립니다. [ 다운로드 ]

~/STM32MPU_workspace/STM32MP15-Ecosystem-v1.2.0/Distribution-Package/openstlinux-20-02-19

1. 위 경로에 layers.tar.gz를 복사해주시고 압축 해제
tar xvf layers.tar.gz

2. 압축 풀기가 완료 되었으면 Distribution_package 중 repo sync까지 완료 된 상황입니다. 그 이후 부터 진행하시면 되겠습니다.

3. 참고로 bitbake를 통해 다운 받은 데이터의 크기가 커서, 최소 30GB 이상 여유 공간을 확보하시고 진행하시기 바랍니다.
=> 다운로드는 밤에 걸어 두면 아침에는 다 받아져 있을 것입니다.
=> 충분한 저장 공간과 시간을 염두하시기 바랍니다.
2020.04.27 ~ 2020.05.03
완료

Quest 3 · A7/ M4 예제 데모 시현 (LED control, Button detect)

Quest-2에서 수행 했던 MP1 ecosystem distribution 환경에서 SDK를 추출, 생성하고 이를 사용하여 A7 에서 구동되는 LED blink 어플리케이션(linux user application)을 작성하고 STM32MP157C-DK2 보드에 올려 확인한다. (* LED는 어떤 색을 제어하더라도 무방)
  • SDK 추출, 생성 결과물 및 설치 결과물에 대한 디렉토리 정보와 함께 컴파일러(arch=armv7ve)의 정보(디렉토리 위치, CC 환경변수) 출력하여 제출 (* Sample screenshot 참고)
  • SDK 를 사용하여 빌드 된 executable file 의 정보를 target(DK2 board) 시스템 정보를 함께 출력하여 제출 (* Sample screenshot 참고)
  • MP1 터미널(tty serial, ssh, target terminal등)에서 LED blinking 어플리케이션 실행하면 LED가 깜빡이는 장면 영상 제출
  • Write the A7 application   참고
  • Execute the A7 application on the DK2 board.
2020.05.04 ~ 2020.05.10
완료

Quest 4 · A7/ M4 예제 응용 데모 시현

STM32CubeIDE(+STM32CubeMX)를 사용하여 STM32MP1 co-processor (M4) 애플리케이션을 작성(+디버그)하고 DK2 target 보드에 설치하여 동작 시켜 보세요.

애플리케이션은 USER1 버튼을 누를 때마다 (EXTI 사용) 바로 옆의 Red LED(LD6)를 토글시키는 동작 (GPIO Output 사용)을 합니다.

주의: LD5(GREEN LED)는 동일한 라인을 공유하므로 USER1 버튼과 함께 퀘스트 프로젝트에 사용 금지, 반대의 경우(LD6 + USER2)도 마찬가지.

  • STM32CubeMX와 STM32CubeIDE를 사용하여 작성하고 빌드된 M4 프로젝트의 디렉토리 구조를 출력하여 제출.
  • STM32CubeIDE상에서 USER1 버튼을 누를 때 Interrupt handler 또는 HAL callback에서 브레이크 포인트를 설정하여 캐치된 상태의 화면을 캡쳐하여 제출 (code symbol 창과 stack 창은 필수로 포함되어야 함)
  • M4 펌웨어를 linux 부팅시에 로딩되도록 포함한 뒤에 부팅 로그를 캡쳐하여 제출.
  • DK2 target 보드를 부팅(리셋)하여 바로 USER1 버튼을 누를 때마다 LD6가 토글되는 것(M4 펌웨어가 동작하는 것)을 영상으로 캡쳐하여 제출.
2020.05.11 ~ 2020.05.17
완료

Quest 5 · QT Layer 추가 및 빌드

STM32MP1의 Distribution Package에 QT Layer가 추가 된 이미지를 빌드하여 올리고 QML로 작성 된 Hello World 예제를 작성해 보세요.

  • bitbake를 실행하여 성공한 결과 화면 제출
  • Desktop에서 Hello world 예제 실행 화면 제출
  • 보드 LCD에 출력된 Hello world 예제 실행 화면 제출
  • Hello World 예제 소스코드 제출
  • 1. Qt가 포함 된 이미지 만들기
    • Distribution Package에서 QT meta-layer가 추가되어 있는지 확인 (참조1, 참조2)
      • bitbake-layers show-layers
    • st-example-image-qt 이미지 빌드(참조3)를 위해 아래 command 참고
      • DISTRO=openstlinux-eglfs MACHINE=stm32mp1 source layers/meta-st/scripts/envsetup.sh
      • bitbake st-example-image-qt
    • Flashing the built Image
      • 커널 이미지 사이즈가 맞지 않아 flashing 되지 않을 경우 참조4 확인 하여 .tsv파일 수정하여 flashing
  • 2. Desktop Qt 환경 설정하기
    • 제공받은 평가판 License를 이용해 account.qt.io에 접속
    • 개발 환경에 맞는installer를 이용하여 Qt 5.11.3설치 (Ubuntu 기준 예시)

    • Qt Creator를 실행하여 새 프로젝트 생성 및 Hello World 개발 및 실행 (https://doc.qt.io/qtcreator/quick-projects.html#creating-empty-qt-quick-applications)
  • 3. 개발 된 Application source를 빌드할 수 있도록 1 단계의 Yocto layer 에 recipe로 추가
  • 4. Application을 bitbake로 빌드
  • 5. 빌드 한 결과를 target에 copy
  • 6. QT Application Launching
  • 예제 실행 실행 중인 splash 를 중단 해야 application 실행 가능
    • # psplash-drm-quit
  • Yocto layer에 configuration을 변경 해야 각 recipe 별 빌드 결과 확인 가능
    • build…/conf/local.conf 내용 의 rm_work 라인 주석 처리 필요.
Build 완료 캡쳐 화면
2020.05.18 ~ 2020.05.24
완료

Quest 6 · 이미지 빌드 및 QT 환경에서의 예제 실행

퀘스트 5에서 작성된 Hello World 예제를 기반으로 아래 단계별 기능을 수행하는 시계 예제를 작성해 보세요.

  1. 각 화면 및 Swipe 동작 화면 영상 제출
  2. Executable실행 파일 제출
  1. 각 기능은 각자의 화면을 가지며 서로간에 이동 가능
  2. 현재 시간을 숫자로 표시하는 화면 1 (디지털 시계)
  3. 타이머 기능을 수행하는 화면 2 (타이머 현재 시간 표시, lap time 표시, 시작, 중지, lap 버튼)
  4. 화면1 , 화면2을 Swipe 제스처로 이동할 수 있도록 확장.
2020.05.25 ~ 2020.05.31
완료

Quest 7 · [자율과제] Application 선정 및 다양한 기능 구현

마지막은 자율 과제입니다.
특정 Application을 선정하시어 해당 Application에 맞게 다양한 기능들을 구현해 보세요.

  • 보드상에서 최종 결과물이 동작하는 영상 제출.
  • Executable실행 파일 제출

제출하신 동영상을 검토하며 아래 항목에 해당되는 영역들의 점수를 합산하게 됩니다.

구성 (30%) 다양한 H/W및 S/W 솔루션을 접목한다면 가산점이 부가됩니다.
디자인 요소 (20%) QT의 다양한 기능들을 활용하고 아름답게 연출된다면 가산점이 있습니다.
창의성 (20%) 창의적이고 재미있는 결과물일 수록 점수가 가산됩니다.
완성도 (20%) 그 제출물의 완성도에 따라 점수가 달라집니다.
기여도 (10%) 퀘스트들을 진행하며 다른 분들에게 도움을 주신 분들에게 드리는 점수입니다.
2020.06.01 ~ 2020.06.14