콘테스트 프로젝트 진행 상황
각 Quest를 단계적으로 완성하는 프로젝트입니다.
Quest 1: 퀘스트 1 과제 제출
2020.04.131. Developer Package에 포함된 리눅스 커널을 빌드한 뒤 [필수조건]과 함께 한 화면에 출력되도록 하여 Capture한 뒤 제출한다.
=> whoami 명령 전에 $$를 잘못 입력하여 명령이 제대로 보이지 않았습니다.
=> 참조 링크로 했을때 에러가 발생하여 실해했지만, 새로운 링크를 알려 주신 덕분에 제대로 수행하게 되었습니다.
2. 리눅스 커널에 이어 커널 모듈과 artifact들을 빌드하고 그 내용을 ‘tree' 명령 및 'ls' 명령으로 출력하고 [필수조건]과 함께 한 화면에 출력되도록 하여 Capture한 뒤 제출한다.
=> tree가 설치되어 있지 않아 설치후 tree 명령 수행했습니다.

=> tree 구조가 다르게 표시되어 잘못된건가 했는데, 확인해 보니 제대로 된 것 같습니다.

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

<감사합니다.>
Quest 2: 퀘스트 2/7 - Yocto 환경 구축 및 STM32MP157C-DK2 보드 실행
2020.05.01
1. STM32MP1 Distribution Package를 Unbuntu에 설치하여 bitbake 성공화면을 제출합니다.

==> Warning은 있었지만 문제없이 진행이 되었습니다.
2. bitbake 빌드 후에 생성되는 이미지들을 ‘FlashLayout_sdcard_*.tsv파일과 함께 STM32CubeProgreammer를 사용하여 기록(flashing)합니다. 호스트와 DK2 보드를 연결하여 터미널을 통해 출력되는 로그 화면을 제출합니다.

==> Minicom은 설치했으나 ST-Link Port에 USB를 연결해야 하는 것과 ttyACM0 를 찾지 못해 애를 먹었습니다.
설명서에 다 적혀 있는데. 이해하지 못했었네요.
3. 간단한 Hello world 유저 어플리케이션 작성하여 DK2 보드에 업로드 한 후 실행한 화면을 제출합니다.

==> $> bitmake myhelloword 를 빼 먹고 진행했는데, 에러가 발생해서 한참을 헤매었네요. 다른분 도움덕에 해결되었습니다.
Quest 3: 퀘스트 3/7 - A7/ M4 예제 데모 시현 (LED control, Button detect)
2020.05.051. SDK 추출, 생성 결과물 및 설치 결과물에 대한 디렉토리 정보와 함께 컴파일러(arch=armv7ve)의 정보(디렉토리 위치, CC 환경변수) 출력하여 제출 (* Sample screenshot 참고)
\--> 아래 사이트 참고하여 진행
https://wiki.st.com/stm32mpu/wiki/How_to_create_an_SDK_for_OpenSTLinux_distribution

2. SDK 를 사용하여 빌드 된 executable file 의 정보를 target(DK2 board) 시스템 정보를 함께 출력하여 제출 (* Sample screenshot 참고)
==> Write the A7 Application [How to control a GPIO in userspace]
https://wiki.st.com/stm32mpu/wiki/How_to_control_a_GPIO_in_userspace

3. MP1 터미널(tty serial, ssh, target terminal등)에서 LED blinking 어플리케이션 실행하면 LED가 깜빡이는 장면 영상 제출
[Green LED : OFF]

[Green LED : ON]

<감사합니다.>
Quest 4: 퀘스트 4/7 - A7/ M4 예제 응용 데모 시현
2020.05.121. STM32CubeMX와 STM32CubeIDE를 사용하여 작성하고 빌드된 M4 프로젝트의 디렉토리 구조를 출력하여 제출.

2. STM32CubeIDE상에서 USER1 버튼을 누를 때 Interrupt handler 또는 HAL callback에서 브레이크 포인트를 설정하여 캐치된 상태의 화면을 캡쳐하여 제출 (code symbol 창과 stack 창은 필수로 포함되어야 함)

3. M4 펌웨어를 linux 부팅시에 로딩되도록 포함한 뒤에 부팅 로그를 캡쳐하여 제출

4. DK2 target 보드를 부팅(리셋)하여 바로 USER1 버튼을 누를 때마다 LD6가 토글되는 것(M4 펌웨어가 동작하는 것)을 영상으로 캡쳐하여 제출.
[참고 사항]
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--
a. STM32 Project 생성시 아래와 같이 Board Project Options : 창이 나오면
[Yes]를 선택해야 한다. 그렇지 않은 경우 [OpenAMP] 폴더가 보이지 않는 경우가 생긴다.
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--

\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--
b. STM32 Project를 생성하면 아래와 같이 폴더 및 파일이 보여야 한다. 그렇지 않은 경우 Remoteproc 가 제대로 되지 않는다.
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--

\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--
c. PA14 핀에 대해 GPIO mode와 GPIO Pull-up 설정은 반드시 아래와 같이 적용해야 한다.
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--

\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--
d. NVIC / EXTI line14 interrupt는 반드시 Enable을 체크한다.
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--

\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--
e. remoteproc 적용시 /etc/profile.d/weston_profile.sh 파일에 아래와 같이 적용해야
부팅시 M4 code가 적용된다.
실행파일인 lightcontrol5_CM4.elf 파일은 STM32CubeIDE에서 Debug시 Download를 통해
보드의 /lib/firmware 폴더에 저장이 되어 있으니 별도로 전송할 필요는 없다.
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--

<끝>
Quest 5: 퀘스트 5/7 - QT Layer 추가 및 빌드
2020.05.24\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--
1. bitbake를 실행하여 성공한 결과 화면 제출
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--

\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--
2. Desktop에서 Hello world 예제 실행 화면 제출
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--

\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--
3. 보드 LCD에 출력된 Hello world 예제 실행 화면 제출
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--

\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--
4. Hello World 예제 소스코드 제출
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
main.qml
import QtQuick 2.11
import QtQuick.Window 2.11
Window {
visible: true
width: 480
height: 800
color: "#24ca30"
title: qsTr("Quest5 : Hello World")
Rectangle {
id: rectangle
x: 26
y: 220
width: 426
height: 286
color: "#fce94f"
border.color: "#e53434"
}
TextInput {
id: textInput
x: 79
y: 282
width: 318
height: 20
color: "#e43535"
text: qsTr("STM32MP157C-DK2")
font.pixelSize: 20
verticalAlignment: Text.AlignVCenter
font.weight: Font.Bold
horizontalAlignment: Text.AlignHCenter
}
TextInput {
id: textInput1
x: 173
y: 444
width: 167
height: 0
text: qsTr("Hello World !!!")
font.bold: true
font.pixelSize: 31
}
}
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\---
\--\-- 참고 사항
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\---
1. meta-qt5 build
Qt meta-layer check
$> DISTRO=openstlinux-weston MACHINE=stm32mp1 source layers/meta-st/scripts/envsetup.sh
$> bitbake-layers show-layers
(meta-qt5 가 있는지 확인한다)
st-example-image-qt 이미지 빌드
$> DISTRO=openstlinux-eglfs MACHINE=stm32mp1 source layers/meta-st/scripts/envsetup.sh
$> bitbake st-example-image-qt
(120G SDD(10G 여유)를 사용했는데, 계속해서 컴퓨터 멈춤현상 발생함.
250G SDD로 변경해서 모든 tool을 새로 설치하고 다시 Build하니 겨우 완료함.)
# Flashing the built image
(flash할 파일 위치(*.tsv) 는 아래에 위치함.)
/home/kasuh/STM32MPU_Workspace/Distribution-Package/openstlinux-20-02-19/build-openstlinuxeglfs-stm32mp1/tmp-glibc/deploy/images/stm32mp1/flashlayout_st-example-image-qt/FlashLayout_sdcard_stm32mp157c-dk2-basic.tsv
$> export PATH=/home/kasuh/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin:$PATH
$> STM32_Programmer_CLI \--h
(command & version check)
(보드 boot mode 변경 : "00")
$> STM32_Programmer_CLI -l usb
$> STM32_Programmer_CLI -c port=usb1 -w flashlayout_st-example-image-qt/FlashLayout_sdcard_stm32mp157c-dk2-basic.tsv
\--> 완료하면 화면이 이렇게 뜬다.

보드에 minicom으로 접속해서 psplash-drm-quit (DRM을 해제) 실행 하면 화면이 꺼진 것처럼 보임 : 당황하지 않기....)

2. Qt Project 생성 및 Design
Qt Creator를 설치하는데 많은 시간을 소비함. (5.11.3 설치 버전이 보이지 않아 헤멤. maintainace tool을 사용하여 설치함.)
main.cpp와 main.qml이 생성됨.
main.qml을 직접 edit해도 되지만, run한 화면과 보드 LCD에 display를 동일하게 하기 어려움.
쉽지 않으니 design을 사용하여 화면 design하면 좋음.
3. 보드 LCD에 출력
Qt Project를 Cross Compile 수행
$> DISTRO=openstlinux-eglfs MACHINE=stm32mp1 source layers/meta-st/scripts/envsetup.sh
$> cd ~/Qt_prj
$> devtool add qthello3 Test1/
NOTE: Recipe /home/kasuh/STM32MPU_Workspace/Distribution-Package/openstlinux-20-02-19/build-openstlinuxeglfs- stm32mp1/workspace/recipes/qthello3/qthello3.bb
$> devtool build qthello3
or ($> bitbake qthello3 )
보드에 실행 파일 전송하기 (전송된 파일이 어디에 위치하는지 몰라서 몇일을 고민함.)
$> devtool deploy-target -s qthello3 root@192.168.0.14
~~~~~(메세지) ~~~~~~~~
./opt/Test1/bin/Test1
NOTE: Successfully deployed /home/kasuh/STM32MPU_Workspace/Distribution-Package/openstlinux-20-02-19/build-openstlinuxeglfs-stm32mp1/tmp-glibc/work/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi/qthello3/1.0-r0/image
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\--> 보드에 전송된 실행 파일(Test1)은 /opt/Test1/bin에 위치한다.
root@stm32mp1:~# psplash-drm-quit (보드)
root@stm32mp1:~# /opt/Test1/bin/Test1 (보드)
<끝>
Quest 6: 퀘스트 6/7 - 이미지 빌드 및 QT 환경에서의 예제 실행
2020.05.31Stopwatch는 정상적으로 동작시키지 못했습니다. (많이 아쉽네요~~)
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\---
1. 각 화면 및 Swipe 동작 화면 영상 제출
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\---
<PC 동작 영상 : 우분투 환경 >
<보드 동작 영상>
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\---
2. Executable실행 파일 제출
\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\---
Qt_Quick2_pc (우분투용 파일)
Qt_Quick2_brd (보드용 파일)
프로젝트 갤러리
프로젝트 제작 과정과 최종 결과물을 담은 이미지 갤러리입니다.



















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

