임베디드 소프트웨어

Embedded software

임베디드 소프트웨어는 일반적으로 임베디드 시스템이라고 알려진 컴퓨터라고 생각되지 않는 기계나 장치를 제어하기 위해 작성된 컴퓨터 소프트웨어다.그것은 일반적으로 그것이 실행되는 특정 하드웨어에 특화되어 있고 시간과 메모리 제약이 있다.[1]이 용어는 펌웨어와 호환해서 사용하는 경우가 있다.[2]

내장형 이더넷 칩인 SMSC LAN91C110(SMSC 91x) 칩 클로즈업

정밀하고 안정적인 특성 특징은 임베디드 소프트웨어의 모든 기능이 휴먼 인터페이스를 통해 시작/제어되는 것이 아니라 기계 인터페이스를 통해 제어된다는 점이다.[3]

예를 들어 제조업체들은 임베디드 소프트웨어를 자동차, 전화, 모뎀, 로봇, 가전제품, 장난감, 보안 시스템, 페이스메이커, 텔레비전과 셋톱박스, 디지털 시계 등의 전자제품에 내장하고 있다.[4]이 소프트웨어는 아마도 거의 정확한 계산 프레임워크[5](임의화된 알고리즘에 기초한 방법론)로 결정된 적절한 수준의 처리 복잡성을 가진 몇 킬로바이트의 메모리가 있는 8비트 마이크로 컨트롤러에서 실행되는 조명 제어와 같이 매우 간단할 수 있다.그러나 임베디드 소프트웨어는 라우터, 광학 네트워크 요소, 항공기, 미사일프로세스 제어 시스템과 같은 애플리케이션에서 매우 정교해질 수 있다.[6]

운영 체제

일반적으로 MacOS, Windows 또는 Linux와 같은 운영 체제를 사용하는 표준 시스템과 달리 임베디드 소프트웨어는 운영 체제를 사용하지 않을 수도 있다.그들이 하나를 사용할 때, 일반적으로 실시간 운영체제에서 다양한 운영체제를 선택할 수 있다.임베디드 소프트웨어의 코드는 일반적으로 CC++로 작성되지만, 자바, 파이톤, 자바스크립트 등 다양한 고급 프로그래밍 언어도 현재 마이크로컨트롤러와 임베디드 시스템을 대상으로 하는 데 공통적으로 사용되고 있다.[7]조립 언어는 특히 부팅과 인터럽트 처리 시에도 자주 사용된다.아다는 몇몇 군사 및 항공 프로젝트에 사용된다.

애플리케이션 소프트웨어와의 차이점

MicroVGA를[nb 1] 사용한 임베디드 시스템 텍스트 사용자 인터페이스

대부분의 소비자들은 컴퓨터의 기능을 제공하는 응용 소프트웨어에 익숙하다.그러나 임베디드 소프트웨어는 종종 덜 눈에 띄지만 덜 복잡하지는 않다.임베디드 소프트웨어는 애플리케이션 소프트웨어와 달리 하드웨어 요구 사항과 기능이 고정되어 있고, 제3자 하드웨어나 소프트웨어의 추가는 엄격히 통제된다.

임베디드 소프트웨어는 제조 시 필요한 모든 장치 드라이버를 포함해야 하며, 장치 드라이버는 다양한 하드웨어 장치를 위해 작성된다.BSP(Board Support Package)라고 불리는 이러한 장치 드라이버는 특정 운영 체제(전통적으로 실시간 운영 체제 또는 RTOS)가 RTOS 자체와 통합된 특정 하드웨어 환경(컴퓨터 또는 CPU 카드)에서 작동할 수 있도록 하는 하드웨어별 드라이버와 기타 루틴을 포함하는 소프트웨어 레이어를 형성한다.소프트웨어는 선택된 CPU와 특정 칩에 크게 의존한다.대부분의 임베디드 소프트웨어 엔지니어들은 적어도 판독 도식, 레지스터와 통신 시스템의 사용을 결정하기 위한 구성 요소의 데이터 시트 읽기에 대한 통용 지식을 가지고 있다.10진수, 16진수, 2진수 사이의 변환은 비트 조작을 사용할 뿐만 아니라 유용하다.[8]

웹 애플리케이션은 하드웨어 관리를 위해 자주 사용되지만 XML 파일과 다른 출력물은 디스플레이를 위해 컴퓨터로 전달될 수 있다.일반적으로 폴더가 있는 파일 시스템이 사용되지만 SQL 데이터베이스는 없는 경우가 많다.

소프트웨어 개발에는 컴퓨터에서 실행되지만 대상 장치에 실행 가능한 코드를 생성하는 교차 컴파일러의 사용이 필요하다.디버깅은 회로에뮬레이터JTAG 또는 SWD 디버거와 같은 하드웨어를 디버깅해야 한다.소프트웨어 개발자들은 종종 완전한 커널(OS) 소스 코드에 접근할 수 있다.

스토리지 메모리와 RAM의 크기는 상당히 다를 수 있다.어떤 시스템은 플래시 16KB와 RAM 4KB로 실행되며, CPU는 8MHz로 작동하고, 다른 시스템은 현대의 컴퓨터에 필적할 수 있다.[9]이러한 공간 요구 사항은 C++ 대신 C 또는 임베디드 C++에서 더 많은 작업을 수행하도록 이끈다.BASIC과 같은 해석 언어(예:시차축 프로펠러는 컴파일된 BASIC)과 자바(Java ME Embedded 8.3)를[10] 사용할 수 있다.ARM Cortex-M4, Cortex-M7 microcontrollers and older ARM11 used in Raspberry Pi and Intel Galileo Gen. 2) are not commonly used; while an implementation of the interpreted Python 3 language – MicroPython – is however available expressly for microcontroller use, e.g. 32-bit ARM-based (such as BBC micro:bit) and 16-bit PIC microcontrollers.

통신 프로토콜

프로세서 간, 그리고 한 프로세서와 다른 구성요소 간의 통신은 필수적이다.하드웨어 레벨 공통 프로토콜에는 직접 메모리 주소 지정 외에도 I²C, SPI, 직렬 포트, 1-Wires, Ethernets, USB 등이 포함된다.

임베디드 시스템에서 사용하도록 설계된 통신 프로토콜은 InterNiche TechnologiesCMX Systems를 포함한 회사의 폐쇄된 소스로 이용할 수 있다.오픈 소스 프로토콜은 uIP, lwip 등에서 유래한다.

참고 항목

메모들

  1. ^ MicroVGA에 대한 자세한 내용은 이 PDF를 참조하십시오.

참조

  • 에드워드 A."임베디드 소프트웨어", "컴퓨터 진보" (M. 젤코위츠, 편집자) 56, 2002년 런던 아카데미 프레스.
  1. ^ "Stroustrup on C++ for embedded (bottom p.2)" (PDF). Retrieved 9 December 2012.
  2. ^ Emilio, Maurizio Di Paolo (2014-09-01). Embedded Systems Design for High-Speed Data Acquisition and Control. Springer. ISBN 978-3-319-06865-7.
  3. ^ "I.C.S. on embedded software". Archived from the original on 22 March 2013. Retrieved 22 July 2013.
  4. ^ "Embedded Systems Methods and Technologies". Archived from the original on 29 October 2013. Retrieved 9 December 2012.
  5. ^ Alippi, Cesare (2014), Intelligence for Embedded Systems, Springer, ISBN 978-3-319-05278-6.
  6. ^ http://ptolemy.eecs.berkeley.edu/publications/papers/02/embsoft/embsoftwre.pdf[bare URL PDF]
  7. ^ Mazzei, Daniele; Montelisciani, Gabriele; Baldi, Giacomo; Fantoni, Gualtiero (2015). Changing the programming paradigm for the embedded in the IoT domain. Internet of Things (WF-IoT), 2015 IEEE 2nd World Forum on. Milan: IEEE. pp. 239–244. doi:10.1109/WF-IoT.2015.7389059.
  8. ^ "Stroustrup on embedded software". Archived from the original on 3 February 2013. Retrieved 9 December 2012.
  9. ^ "Example of embedded CPU". Retrieved 9 December 2012.
  10. ^ "Java ME Embedded". Oracle Technology Network.