본문 바로가기
왜 임베디드 시스템에서는 씨( C)언어를 가장 많이 사용하나요?

뭘 알아야 이해를 하지!

프로그래머들이 프로그램을 만들 때 다양한 언어로 개발을 하고 있어요.
우리가 잘 알고 있는 씨(C), 자바(JAVA), 씨플러스플러스(C++), 비주얼베이직(VB), 비주얼씨(VC), 닷넷(.net), 델파이(Delpai) 등이 있어요.
그런데 왜 임베디드 시스템에서는 씨(C) 언어들 가장 많이 사용되고 있는 걸까요?
가장 큰 이유는 바로 메모리 제약과 하드웨어 제어 때문이죠.
먼저 메모리 제약에 대해 말씀 드리면 임베디드 시스템은 하드디스크처럼 대용량의 메모리가 없기 때문에 비쥬얼 언어는 거의 사용하고 있지 않고 있어요. 대용량의 메모리를 사용하면 되지 않느냐고 생각되지만 우선 대용량 메모리를 사용한다면 제품 단가가 높아지며 비주얼 프로그램이 동작하기 위해서는 보통 윈도우가 필요로 해요. 그렇게 되면 임베디드 시피유(CPU)는 개인용 컴퓨터만큼 속도가 빠르지 않기 때문에 프로그램 실행속도가 느려지겠죠. 무엇보다 가격대 성능을 비교해 보면 적합하지 않겠죠?
하지만 최근에는 점점 임베디드 시피유(CPU)가 개인용 컴퓨터만큼의 성능을 내다 보니 씨언어 뿐만 아니라 자바, 씨플러스플러스(C++) 과 같은 프로그램도 많이 사용되고 있는 추세입니다.

두 번째 이유는 하드웨어 제어입니다. 위에서 언급한 것과 같이 비쥬얼한 언어를 사용하지 않는다면 씨언어를 제외한 나머지 언어들은 어떨까요? 베이직언어와 씨언어를 비교하면 둘 다 하드웨어 제어가 가능해요. 하지만 두 개의 언어에서 가장 큰 차이점은 바로 실행 방법에 있어요. 즉, 베이직언어는 인터프리터 방식으로 개발자가 만든 소스 순서대로 실행하는 반면 씨언어는 인터프리터 방식도 가능하지만 task라는 개념으로 프로그램 실행 순서를 다양하게 다룰 수가 있어요. 하드웨어 제어에 있어서 씨언어는 포인터라는 개념을 두고, 개발자가 원하는 어드레스(Address)에 데이타(Data)를 입출력하며 쉽게 프로그램 하도록 되어 있고 시피유 동작 속도를 최대한으로 실행하게 하며, 프로그램 실행 바이러리(Binary) 용량도 아주 작기 때문에 임베디드 시스템에 적합하답니다.


임베디드 시스템에서 많이 사용되는 씨언어 문법은?
#define GPIO 0x30000000 ; 어드레스
int (*GPIO) = *(int) 0x0450f ; 어드레스에 어떤 내용이 있는지

Linked at 친절한 임베디드 시스템 개발자.. at 2010/01/04 11:26

... 시스템 입문하기 100 임베디드 시스템이 뭐죠? 101 왜 임베디드 시스템에서는 씨( C)언어를 가장 많이 사용하나요? 102 어떤 공부부터 시작해야 될지 모르겠어요? ... more

Commented by 히언 at 2010/01/04 12:22
그런데, 질문이 있어요~. 비주얼언어라는 건 실은 IDE에서 Window Lib을 지원하느냐의 문제 아닌가요~? 일반적인 임베디드에도 이런 Window Lib을 지원하잖아요~ 예를 들면 CE라든가. 흠~
Commented by seyriz at 2010/01/04 12:29
사실 비주얼 언어라는 체계는 없죠 MS에서 만든 IDE에 비주얼이라는 단어가 붙어서 그렇지 Windows API를 지원한다고 비주얼언어는 아니죠 그리고 WinCE는 임베디드라고 하기는 그렇죠^^
Commented by soto at 2010/01/04 12:42
Window Lib이라는게 결국 윈도우즈인데, 이러한 Lib이 많을 수록 많은 메모리를 차지하기 때문에 메모리 제약이 많아 진다는 표현입니다. 보강 설명이 조금 더 필요하겠군요. 좋은 지적 감사합니다. ^^
Commented by 락이즈 at 2010/01/05 17:14
잘 봤습니다...다음강좌도 기대할께요~
Commented by soto at 2010/01/07 06:21
네..감사합니다. 즐거운 하루 되세요.
※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.
친절한 임베디드 시스템 개발자 되기 강좌 글 전체 리스트 (링크) -



댓글





친절한 임베디드 개발자 되기 강좌 글 전체 리스트 (링크) -