안녕하세요.

 

https://make.e4ds.com/main/main.asp 에서 "완전 정복 퀘스트 챌린지" 라는 이벤트를 진행하더라고요

 

퀘스트 1(개발환경 구현)을 통과하면 STM32MP1을 무상으로 제공합니다.

 

퀘스트 파이널까지 통과한 참가자에는 겔럭시 S20, 겔럭시 시계, 버즈 의 경품도 제공하더라고요

 

저는 퀘스트 1을 하고 연휴동안 개인 사정으로 외부에 있어 더이상 참여하지 못합니다 ㅠ

 

그래도 퀘스트는 개인적으로 따라가려고 합니다.

 

무튼 퀘스트 1을 깨고 STM32MP157C-DK2를 수령했고, 개봉기록을 남깁니다.

 

 

STM32MP157C-DK2 박스

 

박스를 열면 제일 처음 나오는게 보드에 대한 설명!

보드 스펙 설명 종이

위 종이 아래에는 USB-C타입 케이블 ! 양쪽이 동일한 타입이에요.. 이건 어디에 쓰는걸까? 디바이스간에 USB 통신을 이런식으로 하나??

양쪽이 USB-C타입인 케이블

케이블과 정전기 방지 스폰지를 제거하면 LCD가 반겨줍니다 ! 

STM32MP157C-DK2 보드에 달린 LCD

 

 

LCD를 통채로 들어올리면 파란색 보드와 같이 올라옵니다!

 

아랫면을 보니 16G micro-sd 카드도 하나 달려오네요. 아두이노와 결합해서 쓸 수 있는 커넥터도 보이네요

 

 

옆면에는 라즈베리파이와 같은 40핀짜리 헤더핀도 보이네요

 

 

 

 

처음에 전원을 마이크로 5핀 커넥터로 전원을 인가하나? 싶어서 꽃아봤는데 빨간불은 들어오는데

켜지지는 않더라고요 !! 알고보니까 이 보드의 전원 커넥터는 USB-C타입 커넥터!!

 

 

아래 사진처럼 랜포트 달려있는 쪽에 커넥터에 전원 커넥터를 연결해야지 LCD에 뭔가가 나타납니다!!

반대쪽에 연결하면 동작 안하더라고요

 

약간의 부팅 시간이 지나면 짠 !  화면이 나타납니다

 

아래는 구동 영상입니다

기본으로 카메라, 비디오 재생, 3D GPU, 블루투스, WIFI, 손글씨 인식과 같은 예제들이 들어있어요.

엄청난 성능인거 같습니다.

 

 

 

과연 이 보드로 무엇을 할 수 있을지 기대되네요 

반응형

'MCU > STM32MP1' 카테고리의 다른 글

[STM32MP157C-DK2] 환경개발 구축  (0) 2020.04.20
STM32MP157C-DK2 소개  (1) 2020.04.20

Hyper-V에 우분투 18.04.4를 설치하면 해상도가 1152x864로 고정되어 있다.

 

1920x1080 모니터에서의 우분투가 설치된 화면

 

해상도를 변경하기 위해서 다음과 같이 수행한다.

  1.  터미널을 연다 (컨트롤 + 알트 + T)
  2.  sudo gedit /etc/default/grub를 입력한다.

  3. GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"를 아래와 같이 수정하고 저장 후 에디터를 끈다.

  4.  3번 진행 후 에디터를 종료하면 터미널에 다음과 같이 메세지가 나타날 수 있습니다.

gedit 종료 후 터미널 화면

  5. 터미널에 sudo update-grub 를 입력한다.

update-grub 처리된 화면

  6. reboot 한다.

 

리붓 후 1920x1080으로 화면이 꽉찬 모습

 

반응형

'기타' 카테고리의 다른 글

[VSCODE] 확장 패키지 리스트  (0) 2020.05.10

 

STM32MP157C-DK2는 우분투 환경에서 개발을 진행합니다.

 

그래서 Window 10 Hyper-V 가상환경에서 Ubuntu18.04.4를 설치하여 진행합니다.

아래 링크를 참조하여 개발환경 구축을 참고합니다.

* Starter Package

https://wiki.st.com/stm32mpu/index.php/STM32MP15_Discovery_kits_-_Starter_Package

 

* Developer Package

https://wiki.st.com/stm32mpu/index.php/STM32MP1_Developer_Package

 

* STM32 MPU Wiki

https://wiki.st.com/stm32mpu/wiki/Getting_started/STM32MP1_boards/STM32MP157C-DK2/Develop_on_Arm%C2%AE_Cortex%C2%AE-A7/Modify,_rebuild_and_reload_the_Linux%C2%AE_kernel

 

 

STM32CubeProgrammer tool 설치

 

1. (없는 사람만 진행) JAVA JRE 설치

$ sudo apt-get install openjdk-8-jre

 

2.  https://www.st.com/en/development-tools/stm32cubeprog.html에서 STM32CubeProgrammer 다운로드

 

3. 압축을 풀고 다음을 입력하여 설치

$ ./SetupSTM32CubeProgrammer-2.4.0.linux

 

4. binary PATH 등록

$ export PATH=<my STM32CubeProgrammer install directory>/bin:$PATH

 

Developer Package 설치    

 

1. STM32MP1 Developer Package SDK 설치
     en.SDK-x86_64-stm32mp1-openstlinux-20-02-19.tar.xz에서 SDK를 다운로드

 

2. 압축 해제

$ tar xvf en.SDK-x86_64-stm32mp1-openstlinux-20-02-19.tar.xz

 

3. 파일 권한 변경

$ sudo chmod +x stm32mp1-openstlinux-20-02-19/sdk/st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-2.6-openstlinux-20-02-19.sh

 

4. 설치 스크립트 실행 

$ ./stm32mp1-openstlinux-20-02-19/sdk/st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-2.6-openstlinux-20-02-19.sh -d <working directory absolute path>/Developer-Package/SDK

필자의 <working directory absolute path>는 /home/jeon/STM 이다.

 

SDK 설치가 성공적으로 완료된 화면

 

5. SDK 환경 설정 스크립트 - SDK 시작

      ** SDK 환경 설정 스크립트는 크로스 컴파일 하는 터미널마다 한번씩 실행되어야 합니다.

$ source <SDK installation directory>/environment-setup-cortexa7hf-neon-vfpv4-ostl-linux-gnueabi

위 스크립트가 성공적으로 적용되었으면 아래와 같은 커맨드를 입력하였을 경우 아래 그림처럼 나타난다.

$ echo $ARCH

$ echo $CROSS_COMPILE

$ $CC --version

$ echo $OECORE_SDK_VERSION

성공적으로 SDK가 실행된 화면

 

Linux Kernel 설치

1. Developer-package 폴더에 Kernel source 다운로드

            en.SOURCES-kernel-stm32mp1-openstlinux-20-02-19.tar.xz    

 

2. 압축 해제

$ tar xvf en.SOURCES-kernel-stm32mp1-openstlinux-20-02-19.tar.xz

$ cd stm32mp1-openstlinux-20-02-19/sources/arm-ostl-linux-gnueabi/linux-stm32mp-4.19-r0/

$ tar xvf linux-4.19.94.tar.xz

 

3. ST 패치 적용

$ cd linux-4.19.94/

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

 

4. fragment 적용

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

$ for f in `ls -1 ../fragment*.config`; do scripts/kconfig/merge_config.sh -m -r .config $f; done

$ yes '' | make ARCH=arm oldconfig

* 이때 각종 프로그램이 설치되어있지 않다고 메세지가 나타날 수 있다. apt-get install로 설치해주자.

 

* make가 없다고 메시지가 나타날 수 있다. sudo apt-get install make를 입력하여 설치하자.

make가 설치되어있지 않아 나타나는 메세지

* gcc가 없다고 메세지가 나타날 수 있다. sudo apt-get install gcc를 입력하여 설치.

gcc가 설치되어있지 않아 나타나는 메세지

 

* bison이 없다고 메세지가 나타날 수 있다. sudo apt-get install bison을 입력하여 설치하자.

bison이 설치되어있지 않아 나타나는 메세지

* flex가 없다고 메세지가 나타날 수 있다. sudo apt-get install flex를 입력하여 설치하자.

flex가 설치되어있지 않아 나타나는 메세지

 

 

yes '' make ARCH=arm oldconfig 를 입력 후 화면 / 리눅스 커널 소스 코드 준비 완료

5. 커널 이미지 빌드 (10분이상 소요)

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

 

* 아래 gcc unrecognized argument와 같은 에러를 만나면 source 커맨드를 다시 진행한다.

$ source <SDK installation directory>/environment-setup-cortexa7hf-neon-vfpv4-ostl-linux-gnueabi

make할 때 다음과 같은 에러를 만날 수 있다.

* 아래 openssl/bio.h와 같은 에러를 만나면 libssl-dev를 설치한다.

$ sudo apt-get install libssl-dev

make할 때 다음과 같은 에러도 만날 수 있다.

 

Build가 완료된 화면

6. 커널 모듈 빌드

$ make ARCH=arm modules

커널 모듈 빌드가 완료된 화면

 

7. output build artifacts 생성

$ mkdir -p $PWD/install_artifact/

$ make ARCH=arm INSTALL_MOD_PATH="$PWD/install_artifact" modules_install

output build artifacts 완료

 

U-Boot 설치

1. Developer-package 폴더에 U-boot source 다운로드

     en.SOURCES-u-boot-stm32mp1-openstlinux-20-02-19.tar.xz 

 

2. 압축 해제 및 패치

$ tar xvf en.SOURCES-u-boot-stm32mp1-openstlinux-20-02-19.tar.xz

$ cd stm32mp1-openstlinux-20-02-19/sources/arm-ostl-linux-gnueabi/u-boot-stm32mp-2018.11-r0/

$ tar xvf v2018.11.tar.gz   

$ cd u-boot-2018.11

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

 

3. 컴파일 환경 설정

$ make stm32mp15_basic_defconfig

정상적으로 컴파일 환경이 설정된 화면

 

4. 빌드

$ make DEVICE_TREE=stm32mp157c-dk2 all

u-boot build 완료된 화면

반응형

'MCU > STM32MP1' 카테고리의 다른 글

[STM32MP1]STM32MP157C-DK2 개봉기  (0) 2020.05.09
STM32MP157C-DK2 소개  (1) 2020.04.20

https://make.e4ds.com/ 에서 STM32MP1 완전 정복 퀘스트 챌린지를 진행한다.

 

임베디드 보드에 리눅스를 올려서 사용하는것은 처음이라 퀘스트를 수행하면서 블로그에 기록을 남기려한다.

 

퀘스트를 진행하는데 사용되는 STM32MP157C-DK1 보드에 대해 소개하자면

STM32MP157C-DK2  보드

 

  • Common features
    • STM32MP157 Arm®-based dual Cortex®-A7 32 bits + Cortex®-M4 32 bits MPU in TFBGA361 package
    • ST PMIC STPMIC1
    • 4-Gbit DDR3L, 16 bits, 533 MHz
    • 1-Gbps Ethernet (RGMII) compliant with IEEE-802.3ab
    • USB OTG HS
    • Audio codec
    • 4 user LEDs
    • 2 user and reset push-buttons, 1 wake-up button
    • 5 V / 3 A USB Type-CTM power supply input (not provided)
    • Board connectors:Ethernet RJ454 × USB Host Type-AUSB Type-CTM DRPMIPI DSISMHDMI®Stereo headset jack including analog microphone inputmicroSDTM cardGPIO expansion connector (Raspberry Pi® shields capability)ARDUINO® Uno V3 expansion connectors
    • On-board ST-LINK/V2-1 debugger/programmer with USB re-enumeration capability: Virtual COM port and debug port
    • STM32CubeMP1 and full mainline open-source Linux® STM32 MPU OpenSTLinux Distribution (such as STM32MP1Starter) software and examples
    • Support of a wide choice of Integrated Development Environments (IDEs) including IARTM, Keil®, GCC-based IDEs
  • Board-specific features
    • 4" TFT 480×800 pixels with LED backlight, MIPI DSISM interface, and capacitive touch panel
    • Wi-Fi® 802.11b/g/n
    • Bluetooth® Low Energy 4.1

 

 

스펙만 봐도 어마어마한 녀석인거 같다. 

이것으로 무엇을 할 수 있을지는 퀘스트를 진행하면서 알아가 보도록 하자.

반응형

'MCU > STM32MP1' 카테고리의 다른 글

[STM32MP1]STM32MP157C-DK2 개봉기  (0) 2020.05.09
[STM32MP157C-DK2] 환경개발 구축  (0) 2020.04.20

트루스튜디오는 이클립스 IDE 기반이기 때문에 단축키는 같다.




Ctrl + A 로 전체 선택 후 Ctrl + Shift + f



반응형

** 해당 포스팅은 ST-LINK Utility 버전 4.3.0 에서 작성되었습니다. 이전버전에서는 적용되지 않습니다.


일반적으로 TrueStudio에서 빌드 후 ST-Link로 hex파일을 이식하기 위해서 ST-LINK Utility 프로그램을 사용합니다.



하지만 프로젝트 빌드 후 이 소프트웨어를 키고 hex파일을 불러와서 프로그램 주입(program verify) 하기에 너무 귀찮다.


찾아보니 단축키 하나로 프로그램을 넣을 수 있는 방법이 있었습니다.


설정방법은 


실행 -> 외부도구 -> 외부 도구 구성 으로 갑니다.



왼쪽 트리에 "프로그램" 을 더블클릭하면 하단에 새_구성이 생깁니다.


아래와 같이 위치, 작업 디렉토리, 인수를 작성합니다.




위치 필드는 설치된 ST-LINK Utility폴더 내에 ST-LINK_CLI.exe의 경로로 설정해 줍니다.


작업 디렉토리 필드에는 "작업공간 찾아보기"를 클릭하여 프로젝트를 선택합니다.


인수 필드에는 -c ID=0 SWD UR LPM -P "프로젝트_빌드_헥사파일_절대경로.hex"  로 설정해 줍니다.


빌드 output이 .hex파일이 생성되기 위해서는 [TrueStudio].hex 파일이 생성되도록 빌드하기 를 참조해주세요.



세 필드를 채워 넣고 "실행"버튼을 누르면 아래와 같이 프로젝트를 빌고 프로그램이 주입됩니다.





단축키(컨트롤 +F11)를 눌러 프로그램을 넣기 위해서 아래와 같이 설정합니다.


실행 -> 실행 구성



Launch Group을 더블클릭하면 새_구성이 생성되고 오른쪽에 "Add..." 버튼을 클릭합니다.



그러면 아래 창이 나옵니다.

Launch Mode를 run으로 두고, 외부 도구 구성에서 생성한 것을 클릭 후 확인 버튼을 클릭합니다.



위 설정이 완료되면 단축키(컨트롤 + F11)를 눌러 프로그램 됩니다. 


단, ST-LINK Utility 프로그램 버전이 4.3.0 이상부터 가능합니다.


프로그램이 끝나면, 디바이스를 리셋해주어야 동작됩니다.






반응형

Dead Code: 사용되지 않는 코드 및 데이터


TrueStudio에서 기본적으로 Dead Code를 지워 Linker를 최적화 해줍니다. 


설정 위치는 프로젝트 특성 -> C/C++ Build -> Settings -> Tool Settings 탭 -> C Linker -> Optimization에서 Dead code removal 을 체크하여 설정합니다.






또한 같은 창에서 Page size allocation for malloc() 설정도 있습니다.


기본적으로 malloc을 사용하면 heap 메모리 영역에 할당됩니다. 이 heap 메모리 영역의 size를 설정하는 옵션으로


128bytes와 4096bytes 두 옵션이 있습니다. 128bytes보다 큰 heap 영역이 필요하다면 이 옵션을 4096bytes으로 설정하여야 합니다.

반응형

GNU C/C++ 컴파일러는 6개 레벨의 컴파일러 옵티마이저 속성을 가집니다.


최적화 없는 -O0 부터 -O3, 속도 최적화를 위한 -Ofast, size 최적화를 위한 -Os, 디버깅을 위한 -Og가 있습니다.


자세한 최적화 내용에 대해서는 다음 링크를 참조하세요.


https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html


설정을 위해서는 프로젝트 특성 -> C/C++ Build -> Settings -> C Compiler -> Optimization -> Tool Settings 탭에서 설정 할 수 있습니다.





Configuration을 Debug로 설정하면 기본적으로 Optimization Level이 None -O0로 설정되어있고, Release에서는 Size 최적화인 -Os로 설정됩니다.


코드 블록 단위로 최적화를 하기 위해서는 아래와 같은 방법으로 할 수 있습니다.


 

void __attribute__((optimize("O1"))) myFunc(unsigned char data)

{

     // The code the needs to have the –O1 optimizing 







반응형

+ Recent posts