티스토리 뷰
지금까지 여러번 C++로 객체 지향 프로그램 개발을 시도 하였으나 번번이 조금하다 말고는 포기하게 되었다.
워낙 C프로그램 개발이 익숙하다보니 C++의 새로운 개념을 받아 들이기가 쉽지 않았고, C로 안되는게 없는데 굳이 C++로 개발할 필요성을 못느끼게 되었기 때문이다.
그러다가 자바와 파이썬으로 객체 지향 프로그램을 할 기회가 있어서 몇개의 프로젝트를 진행하였고 자연히 객체 지향 프로그램의 특징과 장점을 알게되었다. 그래서 다시한번 C++ 프로그램에 도전하게 되었고, 그냥 목적없이 배우다보면 또다시 중간에 그만둘것 같아 임베디드 시스템 개발을 C++로 해보자는 확실한 목표를 세우고 진행해 보기로 하였다.
하드웨어 성능과 메모리 자원이 극히 제한적인 시절에는 어셈블리 언어 외에는 선택의 여지가 없었지만, 점차 하드웨어 성능도 좋아지고 메모리 크기도 어느정도 커지면서 자연히 개발 효율측면에서 C가 임베디드 시스템 개발 언어로 대체되었다.
시간이 더 지나면서 마이크로컨트롤러의 사양이 예전 데스크탑 PC보다도 더 좋아지면서 이제는 임베디드 시스템 개발에도 C++를 사용할 수 있지 않을까 하는 생각을 하였다. 몇몇 제약사항을 제외하면 C가 어셈블리를 대체하듯이 C++이 C를 대체하는것도 전혀 이상한 일은 아닐것이다.
막상 C++를 배우려고 찾아보니 C++도 상당히 빠른 속도로 진화하고 있었다. C++98 이후로도 별 변화가 없는것 같았는데 C++11로 새로운 개념들이 많이 도입 된것으로 파악이 된다. 이후로도 몇번의 개정이 되었지만 이번 프로젝트에서는 C++11 규격을 바탕으로 프로젝트를 시작해보기로 하였다.
객체지향 기법 임베디드 프로그램 프로젝트는 ST 사의 stm32f429 discovery 보드를 타겟으로 진행한다.
프로그램의 기본 골격은 크게 4개의 소스코드 폴더와 하나의 헤더파일 폴더로 나누었다. Coretex-M Core관련된 내용은 arch 폴더에, f429 discovery 보드와 관련된 내용은 bsp 폴더에, Core를 제외한 stm32f429 칩 내부 모듈관련 내용을 hal 폴더에 그리고 마지막으로 프로젝트 관련 내용을 proj 폴더에 넣을 생각이다. 이도저도 아닌 내용들이 포함될수도 있는데 이런것들은 그냥 arch에 넣기로 하였다.
'Embedded OOP' 카테고리의 다른 글
I2C (0) | 2020.05.01 |
---|---|
UART (0) | 2020.04.18 |
System Clock 설정 (0) | 2020.04.15 |
GPIO In (0) | 2020.04.15 |
GPIO Out (0) | 2020.04.15 |