자유게시판
짜잔!!!, 금일 STM32MP157C-DK2 보드를 수령하였습니다. 보드를 수령한후 개봉하였을때
생각했던것 보다 크기가 아주 작고, LCD 모니터까지 빌트인되어 있습니다. 보드의 세부스펙정보는 어래 공식 사이트에서 열람이 가능합니다.
https://www.st.com/en/evaluation-tools/stm32mp157c-dk2.html
먼저 DK2가 Discovery Kit인 만큼 숨어있는 따끈한 기능들을 관찰해보았습니다. 157C 모델이면 동급 최고의 개발보드이네요 어래 테이즐이 보야주는 것처럼, 157C 개발보드는 3D-GPU 와 MIPI를 지원하네요. 한마디로 이 보드를 이벤트로 수령하신분들은 대박인겁니다. ^^
필요시에는 Trust zone (OP-TEE)을 이용하여 Secure App까지 구동이 가능한거같습니다.
이제 전원 케이블을 연결해봅니다.
운영체제는 욕토 프로젝트로 빌드환 욕토 OS 이미지가 구동이 되고 있고,
패키지 관리는 우분투의 apt-get 명령으로 욕토 플랫폼이미지가 만들어졌습니다.
아래에 보니는 것은 커널 버젼은 리눅스 4.19.9 버젼입니다. 나중에 디버깅을 위해 UART 시리얼을 사용해야 할때는 콘솔에서 ttySTM0 (115,200)으로
셋팅을 해서 USB-to_Serial 케이블 사용해야 하는 모습입니다.
아래에 보이는 것처럼 CPU Revision이 5 입니다. 즉 CPU의 PCB 제작이 이번에 5번째 인것을 의미합니다. 이 정도면 하드웨어가 상당히 안장화되었다고 볼수 있습니다.
개발보드에 탑재된 욕토 운영체제는 ARM32 bit (armv7l 아키텍쳐)를 지원하도록 되어 있고, Cortex-A7 계열의 코어로 SOC화 되어 있습니다. 근데요. 이보드의 MCU는 STM 3DCube 실행시에 동작하지 싶은데 실제로 어느 경우에 실제 동작을 하는지 궁금해졌습니다.
메모리 용량이 총 512MB에서 비디오 메모리용도로 64MB가 차감됩니다. 그래서 최종 시스템용 메모리오 438 MB를 사용가능합니다.
즉 무거운 애플리케이션을 실행하기는 부담이 되는 메모리 사이즈입니다. 메모리를 많이 잡아 먹는 앱을 실행시에 OOM (Out of Memory)가
동작 빈번도를 자주 발견할수 있습니다. 임베디드 앱을 가능한 작고 빠르게 만들어야 하지 싶습니다.
개발보드에 상당히 다양하고 많은 주변장치들이 부탁되어 있어서 놀랐습니다. 상당히 만족스럽습니다. ^^
곧바로 개발보드에 USB Type-C의 전원을 인가했을때의 부팅화면입니다.
아래는 3D 큐브 그래픽이 정상적으로 실행이 되는지 GPU의 렌더링을 테스트하는 장면입니다.
대부분의 기능들은 여타의 임베디드 보드에서 봐왔던 것가 크게 다르지 않았습니다.
그러나, 이 임베디드 기기에는 딥러닝을 위한 인공지능을 돌릴수 있는 프레임웍들이 준비되어 있어서 벌써부터 설레여집니다.
아래에 보이는 화면에서 터치 스크린 LCD 모니터 화면에 영어를 A, C, P, V S, Q를 손으로 그리면 딥러닝 인프런싱 (Inferencing) 실행을 통해 그린 동작을 인식하고, 그에 해당하는 명령들이 GUI으로 실행이 됩니다. STM32Mp1에 혹시 NPU (Neural Processing Unit) 장치가 있는지 궁금합니다. 아니면 NPU는 없고, CPU의 Neond SIMD 엔진으로 딥러닝 모델을 실행을 하는지 궁금합니다.
아래에 보이는 것처럼 손으로 예를 들어 터치 스크린 모니터에 "V"자를 그리면 제가 손으로 작성한 영문 글자가 "V"자라는 것을 인식합니다. 그리고나서 ST로고가 보이는 비디오 이미지를 실행합니다. 우리가 익히 알고 있는 Image Recognition을 머신러닝으로 실행하는 모습입니다.
비디오 이미지의 실행은 Gstreamer 프레임웍을 통하여 실행이 되는 구조였고, 실제의 실행은 gst-launcher (version 1.14)가 담당하고 있었습니다. 아래는 gstreamer-inspect를 이용하여 가용 엘리먼트들을 확인후에 사용가능한 vedeotestsrc 엘리먼트로 비디오 실행가능여부를 체크하였습니다.
비디오 프로그램을 실행시에는 Wayland의 론쳐인 weston을 통해 실행이 연결되어 있고, 실제 스트리밍은 gstreamer가 실행을 하고 있습니다.
그리고, 이 개발보드는 자체 WiFi 공유기가 장착되어 있어서 개발환경이 상당히 유연합니다.
더불어 netdata가 자동으로 포함되어 있어서 개발을 하다가 시스템의 성능 저하의 원인이 무엇인지
netdata를 통해 모바일폰으로 쉽게 모니터링이 가능했습니다.
아래의 그림은 개발보드의 wlan0 무선랜 장치를 WiFi 공유기로 enabling시키는 모습니다.
그리고나서 가지고 있는 스마트폰으로 위의 SSID: STDemoNetwork 와 password: stm32mp1 에 접속을 합니다.
그러면 우리는 개발보드에서 웹서버로 구동하고 있는 netdata 웹페이지 (http://192.168.72.1:19999/ 에 접속 가능합니다.
아래는 실제 모바일폰으로 접속하여 다양항 시스템 정보를 그래픽으로 보여주고 있습니다.
아래에 보이는 것처럼 netdata는 GPL3의 오픈소스이므로 최적화에 관심이 많은 분들은
https://github.com/netdata/netdata 에 접속하여 더많은 소스 수정과 시도를 해볼수 있습니다.
별(star) 갯수가 46K 일 정도로 어마어마하게 인기히는 오픈소스 프로젝트 이네요.
이번 퀘스트를 수행하면 netdata에 대해 좀더 자세히 살펴 보고 싶은 욕망이 솓구칩니다. ^^
그다음에, 집에 있는 USB WiFI 중에 1개를 골라 이 개발보드에 부착한후에
wpa_supplicant 패키지를 이용하여 wifi를 wlan1 인터페이스로 잡았습니다.
https://make.e4ds.com/make/ 홈페이지 정상적으로 무난하게 접근이 되고 있습니다.
아래는 새롭게 인식 시킨 USB 무선랜 카드를 실제로 IP를 부여하기 위하는 스크린샷입니다.
dmesg를 통해서 보면 새로운 USB wifi 가 wlan1으로 잡히는 것을 볼수 있습니다.
wlan0은 보드에 내장되어 있는 wifi공유기용 무선랜카드라고 보면 됩니다.
아래는 개발보드에서 curl 명령을 이용하여 https://make.e4ds.com/make/st_board_regist.asp?idx=81&t=2 접근하여 html 내용들을
get 하는 스크린샷입니다.
아래는 윈도우10에서 "Advanced IP Scanner"를 이용하여 개발보도의 USB WiFI (오드로이드 보드의 USB WiFi 사용중)가 사용중인 IP를 스캐닝해보고 있습니다. 이렇게 스캐닝이 된 IP 주소를 SSH 서버로 셋업하여 개발하면 불편한 임베디드 개발환경을 좀더 편하게 개선할수 있을거 같습니다.
마지막으로,
이 개발보드를 수령하여 이거저것 체험해보면서
제가 아직 모르겠으면서도 궁금한 것은 apt-get 명령은 구축이 되어 있는 상황인데
패키지가 STM Open Linux 플랫폼에 그냥 구성되어 있기만 한탓에 apt 명령은 실제 동작이 안되네요.
감사합니다.
로그인 후
참가 상태를 확인할 수 있습니다.