뭘 알아야 이해를 하지!
프로그래머들이 프로그램을 만들 때 다양한 언어로 개발을 하고 있어요.
우리가 잘 알고 있는 씨(C), 자바(JAVA), 씨플러스플러스(C++), 비주얼베이직(VB), 비주얼씨(VC), 닷넷(.net), 델파이(Delpai) 등이 있어요.
그런데 왜 임베디드 시스템에서는 씨(C) 언어들 가장 많이 사용되고 있는 걸까요?
가장 큰 이유는 바로 메모리 제약과 하드웨어 제어 때문이죠.
먼저 메모리 제약에 대해 말씀 드리면 임베디드 시스템은 하드디스크처럼 대용량의 메모리가 없기 때문에 비쥬얼 언어는 거의 사용하고 있지 않고 있어요. 대용량의 메모리를 사용하면 되지 않느냐고 생각되지만 우선 대용량 메모리를 사용한다면 제품 단가가 높아지며 비주얼 프로그램이 동작하기 위해서는 보통 윈도우가 필요로 해요. 그렇게 되면 임베디드 시피유(CPU)는 개인용 컴퓨터만큼 속도가 빠르지 않기 때문에 프로그램 실행속도가 느려지겠죠. 무엇보다 가격대 성능을 비교해 보면 적합하지 않겠죠?
하지만 최근에는 점점 임베디드 시피유(CPU)가 개인용 컴퓨터만큼의 성능을 내다 보니 씨언어 뿐만 아니라 자바, 씨플러스플러스(C++) 과 같은 프로그램도 많이 사용되고 있는 추세입니다.
두 번째 이유는 하드웨어 제어입니다. 위에서 언급한 것과 같이 비쥬얼한 언어를 사용하지 않는다면 씨언어를 제외한 나머지 언어들은 어떨까요? 베이직언어와 씨언어를 비교하면 둘 다 하드웨어 제어가 가능해요. 하지만 두 개의 언어에서 가장 큰 차이점은 바로 실행 방법에 있어요. 즉, 베이직언어는 인터프리터 방식으로 개발자가 만든 소스 순서대로 실행하는 반면 씨언어는 인터프리터 방식도 가능하지만 task라는 개념으로 프로그램 실행 순서를 다양하게 다룰 수가 있어요. 하드웨어 제어에 있어서 씨언어는 포인터라는 개념을 두고, 개발자가 원하는 어드레스(Address)에 데이타(Data)를 입출력하며 쉽게 프로그램 하도록 되어 있고 시피유 동작 속도를 최대한으로 실행하게 하며, 프로그램 실행 바이러리(Binary) 용량도 아주 작기 때문에 임베디드 시스템에 적합하답니다.
임베디드 시스템에서 많이 사용되는 씨언어 문법은?
#define GPIO 0x30000000 ; 어드레스
int (*GPIO) = *(int) 0x0450f ; 어드레스에 어떤 내용이 있는지
댓글