실험을 위해서 여러 하드웨어 보드들을 구해서 잠깐씩 살펴보았는데, 하드웨어를 제어하는 (주로 오픈소스)보드들이 공통적으로 가지고 있는 필수 기능으로 다음과 같은 것들이 있다.


  • (디지털) In/Out 포트            : on/off 입출력
  • 인터럽트 (interrupt)             : 이벤트 처리
  • PWM                                : 아날로그 (처럼) 출력
  • A/D 변환기                         : 아날로그 입력 (주로 센서의 입력)
  • 통신 (주로 시리얼 통신)       : (주로) PC 혹은 다른 보드와의 통신
  • D/A 변환기                      : 아날로그 전압 출력


보드에 따라서 이러한 기능을 구현하는데 사용하는 언어도 다르다.


  • 아두이노는 C++
  • 넷두이노는 (매우 특이하게) C#.Net
  • R-Pi는 주력 언어가 파이썬 (하지만 리눅스 보드이므로 다른 언어도 가능함)
  • 비글본블랙은 자바스크립트 (마찬가지로 C++, JAVA 등도 가능). 비글본블랙은 D/A변환기도 내장하고 있으며 주변기기가 가장 풍부하게 마련되어 있다.


 어떤 보드의 기능과 프로그래밍을 살펴볼 때 위의 기능들을 사용 언어로 어떻게 구현하는지를 파악할 수 있다면 반 이상은 아는 것이라고 봐도 될 것 같다. 많이 사용되는 라즈베리 파이는 GPIO에 A/D변환기가 없으며 PWM기능도 매우 빈약하다.


  언어의 난이도 순으로 배열해 보면 (순전히 주관적인 생각임) 다음과 같다, 


  • C++ >  JAVA, C# > javascript > python


C++이 제일 어렵고 파이썬이 상대적으로 제일 난이도가 낮은 편에 속한다.


얼마 전까지만 해도 임베디드는 닥치고 C/C++ 이었는데 요즘에는 고수준 언어나 심지어 스크립트 언어로도 프로그래밍할 수 있는 보드들이 출시되고 있어서 비전문가들이 좀 더 쉽게 접근할 수 있는 환경이 되고 있다.

[#00093]


Posted by 살레시오
,