졸업 프로젝트를 시작하며
·
과제 및 프로젝트/flight controller
이번 종합설계 프로젝트에서 우리팀은 "유지보수 효율성을 고려한 드론 FC 회로설계 및 소프트웨어구현"을 주제로 진행하였다. 임베디드SW 프로그래밍 역량을 키우기 위해 막연하게 'atmeta 328p 8bit mcu를 이용하여 프로젝트를 한번 진행해봐야 하는데...' 라고만 생각하고 있었는데, stm32 mcu를 사용하여 드론 비행제어기[Flight controller,FC]를 회로설계부터 소프트웨어 구현까지 진행하는 졸업 프로젝트가 있다는 것을 알게 되었고, 좋은 기회라고 생각이 들어서 이러한 프로젝트를 진행하게 되었다. 프로젝트를 진행할 당시에는 시간적 여유가 많이 없어서 진행과정을 순간순간 블로그로 남기고 싶었는데 그렇게 하지 못하였다. 그러나 프로젝트가 끝난 지금, 그때의 순간들을 회고하며 어떤 고..
Hantek 6022BL 개봉기
·
기타/장비사용법
Hantek 6022BL 오실로스코프를 사용해보려고 한다. https://hantek.com/products/detail/153 Hantek6022BL - Hantek Electronic & Your testing solution providerHantek6022BL 20MHz Bandwidth; 48MSa/s Sample Rate; 16 Channels Logic Analyzer; Excellent industrial design-the same anodised aluminium casing as iPad, which is not only beautiful and tasteful but also greatly enhanced the hardness of aluminum alloy surfacehante..
SVN merge & 충돌시 대처법
·
기타/협업 Tool
충돌나는 상황을 만들어보자!RevisionHistory.txt 파일의 일부를 수정해보자.위 사진에 네모친 부분에 텍스트를 추가하여 충돌나는 상황을 만들어보았다. ⭐trunk 브랜치에서 내용을 변경먼저 서버에서, RTOSport/trunk 브랜치를 local의 임의의 폴더로 checkoutRevisionHistory.txt 파일 맨 윗줄에 ----- 되어있는 부분 맨 오른쪽에 trunk라는 글자를 삽입svn info 로 현재 브랜치가 trunk 브랜치인지 확인하고, svn commit 하기 ⭐ branch1 브랜치에서 내용을 변경서버에서, RTOSport/branches/branch1 브랜치를 local의 임의의 폴더로 checkoutRevisionHistory.txt 파일 맨 윗줄에 ----- 되어있는 ..
svn 기본 내용 및 svn cli 명령어들 정리
·
기타/협업 Tool
❗ 반드시 cli가 가능하게 하는 옵션 추가하여 설치하기https://rios.tistory.com/entry/SVN-TortoiseSVN-%EC%97%90%EC%84%9C-CLI-%EC%82%AC%EC%9A%A9%EB%B2%95cli를 이용해야 git 명령어들을 이용하여 svn cli도 이해해볼 수 있기 때문에 꼭 cli가 가능하게 하는 옵션을 추가하여 설치해주기 ❗ svn branchsvn에서 branch를 생성하면, 기본적으로 로컬 브랜치가 아니라 원격 브랜치가 만들어진다.따라서, 내가 브랜치 만드는 순간 서버에 반영된다. ❗ working directory vs working Copy Root Pathsvn info 명령어를 통해 확인할 수 있다.working directory는 svn info에..
펌웨어에서의 non-blocking함수
·
DEV STUDY/Computer Science
글에 틀린 부분이 있을 수도 있습니다. 피드백은 언제나 환영입니다. 감사합니다.사전지식포스트를 작성하기 전에 미리 공부했던 내용들입니다. 1. Asynchronous, Synchronous, Blocking, Non-blocking상황 : 함수 A와 함수 B,C,D가 있다고 가정. 함수 A는 CPU bound, 함수 B,C,D는 I/O bound 라고 가정. request1~3과 그에 따른 response1~3이 있다고 가정. BlockingA 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이 종료되기 전까지 A 함수에게 제어권을 돌려주지 않는 것 Non-blockingA 함수가 B 함수를 호출 할 때, B 함수가 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 할 수 있도록 하는 것..
SPI 통신을 이용하여 MPU9250과 통신
·
과제 및 프로젝트/flight controller
1. 들어가며이 프로젝트에서는 기존에 교수님 연구실에 있던 Flight controller 위에 rtos를 이용한 쿼드콥터 비행 제어 시스템을 만들어 올리는 것을 목표로 하고 있다. 이를 위해 차근차근 FC 내부에 있는 센서들을 다뤄보고 있다. 2. CubeMx 설정이 FC에서는 MPU9250을 IMU로 사용하고 있었다. 회로도에서 stm32l432kc6 mcu와 MPU9250이 spi 통신을 하고 있었고, 이것을 소프트웨어로 지원하기 위해 cubemx에서 spi 인터페이스 설정을 해주었다.MPU9250으로부터 들어오는 interrupt를 위해서, PA4번 핀을 GPIO input pin으로 설정해주고, CS_MPU, CS_BMP 핀은 GPIO output pin으로 설정해주었다.이 사진은 MPU9250..
Polled I/O를 이용한 Calculator
·
과제 및 프로젝트/임베디드 시스템 설계
글에 틀린 부분이 있을 수도 있습니다. 피드백은 언제나 환영입니다. 감사합니다.1. IntroLEDR(RED LED)에 값을 출력하는 프로그램이나 banner scroll이나 모두 주어진 입력을 출력시키는 프로그램이다. 그러나 입력을 받아서 출력하는 프로그램을 만들기 위해서는 Interrupt 방식을 이용할지 polled I/O 방식을 사용할지 결정해야 한다. Interrupt 방식을 이용하면, CPU는 다른 작업을 처리하고 있다가 context switching을 통해 interrupt request를 처리해주고 그것이 끝나면 다시 원래 작업을 재시작하거나 아니면 다른 작업을 시작하거나 한다. polled I/O 는 busy-waiting을 이용한다. 그렇기 때문에 CPU Idle time은 inter..
Memory-Mapped IO in Linux-Based Systems(3)
·
과제 및 프로젝트/임베디드 시스템 설계
글에 틀린 부분이 있을 수도 있습니다. 피드백은 언제나 환영입니다. 감사합니다.1. Intro이번 포스트에서는 mmio를 통해 FPGA 영역의 Slide Switch와 Hex Display를 이용하여 학번을 출력하는 banner scroll 프로그램을 어떻게 만들었는지 적어보려고 한다.2. 동작원리de1-soc에는 총 10개의 slide switch가 있고 6개의 hex display가 존재한다. Banner Scroll을 구현하기 위해 slide switch 한 개와 hex display 6개를 사용하였다. slide switch를 켜면 banner scroll이 왼쪽으로 이동하고, slide switch를 끄면 banner scroll이 오른쪽으로 이동한다.2.1 선언된 변수들Memory-Mapped..