8 비트 및 16 비트 마이크로 컨트롤러 기반 임베디드 시스템을 사용하면 이러한 매우 작은 스토리지 제한의 제한된 리소스 (약 100 바이트)에 맞는 소프트웨어를 쉽게 개발할 수 있습니다. 저급 8 비트 마이크로 컨트롤러의 경우 의 RAM 일 수 있음) , 코드 저장을 위해 2-8 KiB의 ROM 또는 EPROM / 플래시 포함).
이러한 경우 C 또는 어셈블리와 같은 작은 언어가 가장 일반적으로 사용되는 개발 언어 인 경향이 있습니다. 매우 대략적인 비교로서, 완전한 어셈블러 및 C99 컴파일러는 단일 플로피 디스크에 맞출 수 있지만 최신 C ++ 개발 시스템 (STL 등)에는 여러 MiB 가 필요합니다 .
고급 마이크로 (고급 16 비트 및 대부분 32 비트, 상당히 드문 64 비트) 및 DSP를보고있는 경우임베디드 환경에서 있는 경우 제한이 약화되고 소프트웨어 개발이 대부분의 개발을 구성 할 수 있습니다. C ++과 같은 OOP (Object-Oriented Programming) 언어 및 최신 언어 (Java, Perl, Ruby, Python)와 같은 기능을 갖춘 고급 언어를 포함하여 가장 생산적인 개발 도구를 사용하는 것이 합리적입니다.
어셈블리 및 C에서 사용중인 메모리 양을 예측할 수 있으므로 공간이 제한된 디자인이 가능하지만 템플릿, 예외 처리 및 런타임 바인딩과 같은 고급 기능을 통해 필요한 메모리 공간을 정확하게 알 수 없습니다. 미리 표준 C ++ 프로그램을 위해. 나는 C ++ 의 하위 세트 인 MISRA C ++ 에 대해 충분히 알지 못합니다 .
바이트 코드 (Java, Perl, Python)를 실행하는 가상 머신을 기반으로하는 언어는 임베디드 개발자의 경험에서 성숙도가 떨어지며, 이러한 언어는 프로그래머를 특정 하드웨어로부터 격리 시키도록 설계되므로 양심하기가 더 어려워집니다. 그러한 임베디드 하드웨어 시스템의 제한 및 제한. RAM이 GiB가 아닌 경우 MiB를 사용하는 고속 32 비트 프로세서 (예 : ARMv7)에서는 문제가되지 않습니다.
내가 아는 모든 BASIC 구현은 언어 기능이 매우 단순하지만 1960 년대부터 Dartmouth BASIC의 레거시와 거의 동일합니다. 즉, 언어에는 복잡한 런타임 라이브러리 또는 예외 처리가 없으며 인터프리터 또는 컴파일러는 작성하기가 간단하고 파일 크기도 작습니다. 대부분의 마이크로 컨트롤러에는 사용 가능한 BASIC 컴파일러가 하나 이상 있습니다.
C 및 어셈블리가 주로 소형 또는 구형 임베디드 시스템에서 사용되는 이유를 광범위하게 설명하고 최신 중급 및 고급 임베디드 시스템의 한계는 기존 데스크탑 PC와 약간 다릅니다.