본문으로 바로가기
728x90
반응형

 최근 STM32 ARM 칩을 새로이 익혔다. 이로서 또 하나의 펌웨어를 다룰 수 있게 되었다.

 여기서 말하고 싶은 것은 내 생각이라 틀릴 수도 있지만 대체로는 맞을 거 같다. 펌웨어라는게 정석이 있나 싶은데 여튼 난 그래도 적절한 기간 최소 10년 정도는 펌웨어를 다루었고 수준은 중급은 되는 것 같다. 그래서 결국 내 경험을 기반으로 펌웨어에 대한 이야기를 좀 적어보고자 한다.

 생각보다 사람들이 펌웨어에 대한 관심도가 높은 것 같다. 그도 그럴 것이 우리 생활에 활용되는 범위가 무궁무진하고 예전처럼 접하려면 많은 어려움이 생기는 것도 아닌지라 좀 관심을 가지면 자신이 만들고 싶어하는 것을 만들 수 있다.  

 사설이 길었는데 STM32 이야기를 하는 이유가 펌웨어는 어차피 언어를 배운다기 보다 칩을 익히는 것이다. 그에 따라 사용할 수 있는 언어나 환경이 다르기 때문이다. 그말이 그 말이지만 칩을 기준으로 언어와 환경을 익히고 그에 따른 하드웨어도 공부하는 것이다. 물론 여기서 하드웨어는 주변회로다. 칩 자체는 공부를 많이 해야 깊이 있게 쓸 수 있다.

 그런데 요즘 펌웨어 프로그램은 많은 변화가 있는 것 같다. 약 10년전에 비하면 너무나도 싸고 좋은 소자가 많이 있다. 예전에는 이 칩값도 그렇고 환경도 익히기 힘들기 때문에 대부분 한가지 칩을 사용하면 그에 전문화되어 사용하게 되는 경우가 많았다. 하지만 요즘은 접근성도 좋아지고 가격도 저렴한데다가 성능도 너무 좋아지고 환경도 너무 좋아졌다.

 아두이노 같이 펌웨어 프로그래머가 하드웨어를 낮은 레벨까지 알지 못하더라도 사용할 수 있다. 아두이노는 사실 실제 엔지니어들 사이에서는 많이 사용되고 있지는 않다. 하지만 앞으로는 괜찮을 것으로 생각이 되기는 한다. 대부분의 펌웨어는 한정된 자원을 이용하여 프로그램을 해야 하기 때문에 군더더기가 많은 아두이노는 실제 상황에서는 성능저하가 심하다. 그래서 다른 사람은 모르겠지만 난 현업에서 아두이노를 사용하는 사람을 본적이 없다.

 그러나 앞서 말했듯이 칩의 성능이 너무 좋아져서 대충 프로그램을 해도 왠만하면 정확히 다 동작하는 시대에 살고 있기 때문에 이제는 얼마나 낮은 레벨로 세밀하게 컨트롤 하느냐는 좀 옛날 이야기가 되어버린 느낌이다. 물론 특정 분야나 특정 제품등에서는 꼭 낮은 레벨로 제어해야 성능이 확보되는 경우도 많다.

 주저리 주저리 많이 이야기 했는데 오늘의 이야기의 골자는 펌웨어를 공부하고 싶은 사람에게 하는 조언이다.

 첫째는 Atmega, 8051, PIC, STM 등등 많은 MCU가 있는데 STM을 공부해라. 그게 요즘 트랜드고 접근성도 좋다. 사실 Atmega등을 공부하면 제일 좋기는 한데 생각보다 진입하기 쉽지 않다. STM은 아두이노로도 되고 STM에서 공급하는 IDE에서도 비슷하게 접근이 쉽게 되기 때문에 배우기 수월하다. 게다가 프로그램도 공짜다. 

 또한 종류가 매우 다양하고 개발보드도 많은 종류를 제공하며 시중에서 쉽게 구할 수 있고 게다가 개발보드도 매우 저렴하다. 심지어는 뉴클레오 보드(개발보드)를 구매하면 프로그래머도 필요없이 그냥 연결하면 프로그램 및 통신도 가능하다. USB등의 연결도 가능하고 라이브러리도 잘 되어있기 때문에 STM을 추천한다.

 둘째는 C를 공부해라. 요즘 파이썬이다 뭐다 하면서 언어가 많이 있는데 기본은 C다. 게다가 STM이야 다른 언어로도 가능할 거 같긴한데 대부분의 펌웨어는 C로 짠다. C++도 아닌 C다. C가 초기에 어려울 수 있지만 그래도 C를 못하면 기초가 약하다고 생각한다. C를 우선 배우고 나면 C++, 파이썬, 자바 등으로 확장해 나가는게 좋다. 물론 펌웨어만 생각하면 C만 알아도 된다. 파이썬이나 자바는 스크립트라 배우는게 좀 다르긴 하다.

 셋째는 실제로 구매해서 만들어봐라. 첫째에 이야기 했듯이 STM을 시작한다면 STM Newcloe 보드를 구매하면 꽤 쉽게 접근이 가능하고 유튜브에 강의도 꽤 있으니 참고하면 쉽게 접근이 가능할 것이다.

 몇가지 이야기를 해 봤는데 내가 첫번째 펌웨어 글을 썼는데 생각보다 사람들이 보는 것 같아서 좀 더 도움이 될까 하고 두번째로 글을 써 본다. 도움이 되었으면 좋겠다.

728x90
반응형