자료구조

펌웨어 학습 순서 및 책 소개

괴물좐 2023. 10. 13. 13:10

나는 현재 막 신입으로 들어온 펌웨어 개발자이다.

 

아직 일이 부여되지 않았기 때문에, 펌웨어 분야에 필요한 학습들을 하려고 한다.

 

- 펌웨어 개발자가 되기 위한 학습순서

1. C/C++ 

-> 보통의 임베디드 분야에서는 C/C++ 두 개면 충분하다. 그 중 C가 훨씬 비중이 크다.

 

2. 아두이노, 라즈베리파이, stm, avr... 등의 MCU 제어 

-> 자신이 혹시 아직 임베디드 분야에 대해 겪어보지 못했지만 흥미가 있다면, 아두이노 보드를 통해 센서를 제어해보자! 

-> 그 후, 자신의 아이디어가 담긴 프로젝트가 가장 좋겠지만, 배포된 프로젝트를 따라해보는 것만으로도 큰 도움이 된다.

-> 아두이노를 통해 임베디드 분야에 대해 흥미가 생겼다면, 라즈베리파이보드를 통해 linux환경에서의 MCU를 다뤄보거나 STM32 MCU(뉴클레이보드)을 다뤄보자!  // 뉴클레오 보드가 stm32을 학습하기에 배포된 자료들이 많다.

-> 주관적으로는 혼자 커널을 학습하기에는 무리가 있다고 판단한다.

 

3. 통신 프로토콜 (SPI, I2C, UART, CAN, LAN..)

-> 센서와 보드를 통신하기 위해서는 통신프로토콜을 이해하고 이를 활용해 센서를 제어할 줄 알아야 한다.

-> 아두이노 보드는 GPIO로만 센서를 제어하기 때문에 통신 프로토콜을 활용하지 않는다.

 

4. 타이머

-> PWM 제어는 추천 !

 

5. 회로 해석

-> 펌웨어 개발자가 되기 위해서는 회로 개발까지는 굳이라는 생각이 든다. 하지만, datasheet와 센서들의 회로를 해석하는 데에는 문제가 없어야 한다.

 

나의 생각으로는 사실 이정도의 기초를 다지고 자신이 보유한 MCU를 통해 프로젝트를 개발한다면, 취업하는데는 큰 무리가 없을 것이라고 생각한다. 정답은 아니다 ! 개발직의 어느 분야든 마찬가지지만, 다양한 프로젝트 경험을 통해 커리어를 쌓는 것이 가장 좋다.

 


앞으로 공부할 것.

 

1. 자료구조

-> 임베디드 특성상 메모리가 한정되어 있기 때문에, 메모리 효율성과 최적화는 필수라고 생각했다. 그래서 취업 전의 프로젝트를 경험하며 코드를 작성하는데 자료구조에 대한 지식이 없던 나는 효율적으로 코드를 작성하지 못하였다. 그래서 회사에서 MCU와 자료구조를 병합해서 학습하려고 한다.

 

1-1. 책

이 책을 통해 학습하고 있다. 간단한 c 문법부터 자료구조까지 커리큘럼은 괜찮은 것 같다. 또한, 많은 연습문제까지 보유하고 있다. 하지만, 교육용으로 배포되는 책이므로 연습문제에 대한 해답지를 구할 수 없다는 것이 아쉽다. 그래서 연습문제보다는 이론과 실습코드에 대해서만 익힐 예정이다.