본문 바로가기

분류 전체보기

(13)
Simulink 3D Animation을 이용한 MPU6050 가속도 센서의 visualization(#3) 요구사항 2번에 대해 구현해보겠습니다. 2. MATLAB 스크립트를 통해 Serial 통신을 구현할 수 있다. 아직 MCU쪽의 MPU6050이 구현되지 않았으므로, 시리얼 포트를 관련 코드를 작성하고 loopback 테스트 환경을 꾸며 시리얼 데이터에 따라 rotation이 되는지까지만 확인해보도록 하겠습니다. Tx로 전송한 rotation값이 Rx로 잘 들어오는 지 확인할 수 있고, 이후 UART코드가 작성된 MCU를 연결하기만 하면 의도대로 동작할 것 입니다. 아래는 matlab main 코드입니다. 윗 부분에 serial port관련 코드가 추가된것을 볼 수 있습니다. serialport_device 객체를 생성하고 serial_open 메소드로 해당하는 포트를 열어줍니다. port와 baudrat..
Simulink 3D Animation을 이용한 MPU6050 가속도 센서의 visualization(#2) 요구사항 1번에 대해 구현해보겠습니다. 1. MATLAB 스크립트와 3d simulation 툴을 이용해 3D object를 구현할 수 있으며 움직임을 구현할 수 있다.. (입력: x,y,z축의 값/ 출력: 3D animation) Matlab editor 상에서 오른쪽위 실행버튼 또는 F5키를 눌러 실행할 수 있습니다. clear; clc; % Define world world = sim3d.World(); viewport = world.createViewport(); viewport.Translation = [-6,0,0]; % Define Actor actor1 = sim3d.Actor(); actor1.createShape('box', [2 0.5 1]); actor1.Rotation = [0,0..
Simulink 3D Animation을 이용한 MPU6050 가속도 센서의 visualization(#1) matlab을 이용한 프로젝트를 찾아보다가 아래와 같은 영상을 보게되었습니다. 이 영상은 IMU(MPU6050)의 센서 값을 이용하여 PC에서 움직임을 실시간으로 재현하여 보여주는 것이었습니다. PC에서는 OpenGL, python을 사용한 것으로 보입니다. 저는 이 부분을 Matlab으로 비슷하게 구현해볼 수 있을것 같아서 시도해보기로 하였습니다. 관련 프로젝트들을 찾아보니 matlab plot를 이용해서 visualization한 프로젝트들은 많이 있었으나, Simulink 3d animation 기능을 이용한 프로젝트는 없는것으로 보여서 이 기능을 이용해보기로 했습니다. Simulink 3d animation은 unreal engine을 이용하여 차량이나 항공의 자세 제어를 visualization..
Coral dev board micro Coral dev board micro를 리눅스에서 개발하는 환경을 구축하는 방법입니다. 1.준비 사항 아래의 공식 홈페이지에서 필요한 사항을 준비합니다. https://coral.ai/docs/dev-board-micro/get-started/#1-gather-requirements Linux PC가 필요한데 아래와 같이 4가지 방법을 시도했습니다. 1. 현재 사용중인 윈도우 10 PC에 듀얼부트로 리눅스 설치 -> 노트북의 그래픽카드와의 충돌로 인해 설치 불가 2. 윈도우 PC에서 VMware로 리눅스 설치 or WSL로 리눅스 설치-> -> 보드의 펌웨어 업데이트 과정에서 보드의 Reset이 진행되는데 이 과정에서 윈도우 터미널에서 WSL로 USB 포트 전환시켜줘야 합니다. 하지만 이를 수동으로 해..
임베디드 os 개발 프로젝트 (1) 임베디드 os 개발 프로젝트 책을 통해 실습하며, OS 개발 이론을 공부할 하고 있습니다.. https://www.yes24.com/Product/Goods/84909414 진행하면서 해맸던 부분이 있어 공유하고자 합니다. 1) window store 에서 ubuntu 설치 문제. store에서 ubuntu 설치 버튼을 눌러도 설치가 진행되지 않는 현상이 있었습니다. 저의 경우, ubuntu 완전 삭제후 powershell에서 재설치 해보니 잘되었다. 삭제 링크 참고 https://record-everything.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B0-11%EC%97%90%EC%84%9C-WSL-%EC%99%84%EC%A0%84%ED%9E%88-%EC%82%AD..
STM32 L432KC 부트로더 개발하기(5) flash write command를 구현하던 중 한가지 문제점을 발견하였습니다. HAL_FLASH_Program 함수를 이용하여 flash를 하는데 주소가 64비트(8바이트) align 되어있지 않은 경우 동작이 멈추었습니다. 확인해보니 이 함수에서는 doubleword 단위로 write를 하게 되므로 주소가 이에 맞지 않으면 제대로 동작이 안될것으로 보입니다. 왼쪽은 hex 파일의 문제가 되는 주소값 0x018C이고 이에 대한 map파일 입니다. 0x018C는 4byte align된 주소인 것을 확인할 수 있습니다. 여기서 .ld 파일을 수정하면 8byte align 되게 바꿀 수 있습니다. application hex 파일이 MCU 까지 잘 flash 되는 것을 확인할 수 있게 되었습니다. * 추가..
STM32 L432KC 부트로더 개발하기(4) PC의 부트로더 프로그램은 컴파일하여 생성된 빌드 산출물을 통신을 통해 전달해주는 역할을 합니다. 저는 이번 프로젝트에서 다음과 같이 프로토콜을 설정하였고 이를 구현해보았습니다. 통신 방식 : UART 빌드 산출물 format: 인텔 hex 위와 같은 프로토콜은 본인의 프로젝트에 맞게 바뀔 수 있습니다. UART 대신 CAN 통신, 인텔 hex 대신 srec 방식 등이 있습니다. IDE에서 hex 산출물을 확인하기위해 몇가지 설정을 해줍니다. 프로젝트를 오른쪽 클릭 후 properties에 들어가면 아래와 같은 설정창을 확인할 수 있습니다. 여기에서 intel Hex file에 체크해줍니다. 이후 새로 빌드하게되면 Debug 하위 폴더에 아래와 같이 .hex 파일이 생성됩니다. hex 파일은 아래와 같은..
STM32 L432KC 부트로더 개발하기(3) 위 부트로더 플로우에서 초록색 부분( 부트로더에서 app 으로 jump) 되는 과정을 구현해보았습니다. project explorer에서 boot 프로젝트를 copy하고 paste 하게 되면 프로젝트가 복사됩니다. 이 프로젝트의 이름을 application으로 하고 개발을 진행합니다. Application 코드에서는 링커스크립트의 메모리 영역 할당을 새로 해줘야 합니다. 그림에서 FLASH 영역의 ORIGIN 값을 이전에 Application의 base 주소로 정한 0x0800c800으로 바꾸고 길이도 맞게 바꿔줍니다. 빌드 후 Debug 폴더에 있는 *.map 파일을 확인하면 주소가 정상적으로 링크되었는지 확인할 수 있습니다. [0x0800c800에 .isr_vector(인터럽트 벡터)가 위치한 것을 ..