임베디드 시스템

Embedded system
프로세서, 메모리, 전원 공급 장치 및 외부 인터페이스를 갖춘 플러그인 카드에 내장된 시스템

임베디드 시스템(embedded system)은 컴퓨터 프로세서, 컴퓨터 메모리, 입출력 주변 장치가 합쳐진 컴퓨터 시스템으로, 더 큰 기계식 또는 전자식 시스템 내에서 전용 기능을 가지고 있습니다.[1][2]이 제품은 종종 전기 또는 전자 하드웨어 및 기계 부품을 포함하는 완전한 장치의 일부로 내장됩니다.임베디드 시스템은 일반적으로 임베디드 시스템의 물리적 작동을 제어하기 때문에 실시간 컴퓨팅 제약이 있는 경우가 많습니다.임베디드 시스템은 일반적으로 사용되는 많은 장치들을 제어합니다.[3]2009년에는 제조된 모든 마이크로프로세서의 98%가 임베디드 시스템에 사용된 것으로 추정되었습니다.[4][needs update]

현대의 임베디드 시스템은 종종 마이크로컨트롤러(즉, 메모리와 주변 인터페이스가 통합된 마이크로프로세서)를 기반으로 하지만, 일반적인 마이크로프로세서(메모리와 주변 인터페이스 회로에 외부 칩을 사용)는 특히 더 복잡한 시스템에서 일반적입니다.어느 경우든 사용되는 프로세서는 범용에서 특정 종류의 계산에 특화된 것에 이르기까지 다양한 유형이거나 심지어 당면한 애플리케이션을 위해 설계된 맞춤형일 수도 있습니다.전용 프로세서의 일반적인 표준 클래스는 디지털 신호 프로세서(DSP)입니다.

임베디드 시스템은 특정 작업에만 전용이기 때문에 설계 엔지니어는 제품의 크기와 비용을 줄이고 신뢰성과 성능을 높이기 위해 최적화할 수 있습니다.일부 임베디드 시스템은 대량 생산되어 규모의 경제 효과를 누릴 수 있습니다.

임베디드 시스템은 디지털 시계MP3 플레이어와 같은 휴대용 개인 기기에서부터 가전제품, 산업 조립 라인, 로봇, 운송 차량, 신호등 컨트롤러, 의료 영상 시스템과 같은 더 큰 기계에 이르기까지 크기가 다양합니다.종종 그것들은 항공기의 항전 장치와 우주선아스트리오닉스와 같은 다른 기계의 하위 시스템을 구성합니다.공장, 파이프라인, 전력망과 같은 대규모 설비에서는 여러 임베디드 시스템이 함께 네트워크로 연결되어 있어야 합니다.소프트웨어 커스터마이징을 통해 일반화된 프로그래밍 가능 로직 컨트롤러와 같은 임베디드 시스템은 종종 그 기능 유닛을 구성합니다.

내장형 시스템은 단일 마이크로컨트롤러 칩을 사용하여 복잡성이 낮은 시스템부터 여러 장치, 주변 장치 및 네트워크를 사용하여 매우 높은 시스템에 이르기까지 다양하며, 장비 랙에 상주하거나 장거리 통신선을 통해 연결된 넓은 지역에 걸쳐 상주할 수도 있습니다.

역사

배경

마이크로프로세서와 마이크로컨트롤러의 기원은 1960년대 에 개발된 MOSFET(금속-산화물-반도체 전계효과 트랜지스터)로 제작된 집적회로 칩인 MOS 집적회로로 거슬러 올라갈 수 있습니다.1964년까지 MOS 칩은 바이폴라 칩보다 트랜지스터 밀도가 높고 제조 비용이 낮았습니다.MOS 칩은 무어의 법칙에 의해 예측된 속도로 복잡성이 더욱 증가하여 1960년대 후반까지 단일 MOS 칩에 수백 의 트랜지스터를 탑재한 대규모 통합(LSI)이 이루어졌습니다.MOSLSI 칩을 컴퓨팅에 적용한 것은 엔지니어들이 여러 개의 MOSLSI 칩에 완전한 컴퓨터 프로세서 시스템이 포함될 수 있다는 것을 인식하기 시작하면서 최초의 마이크로프로세서의 기초가 되었습니다.[5]

1969년의 4상 시스템 AL1과 1970년의 Garrett Ai Research MP944는 최초의 멀티칩 마이크로프로세서로 개발되었습니다.최초의 싱글칩 마이크로프로세서는 1971년에 출시된 인텔 4004입니다.페데리코 파긴(Federico Faggin)이 자신의 실리콘 게이트 MOS 기술을 사용하여 인텔 엔지니어 마르시안 호프(Marcian Hoff)와 스탠 마조(Stan Mazor), 그리고 비지콤 엔지니어 마사토시 시마(Masatoshi Shima)와 함께 개발했습니다.[6]

발전

가장 먼저 눈에 띄게 현대적인 내장 시스템 중 하나는 1965년 MIT 계측 연구소찰스 스타크 드레이퍼에 의해 개발된 아폴로 안내 컴퓨터였습니다.[citation needed]아폴로 유도 컴퓨터는 아폴로 프로젝트 초기에 컴퓨터의 크기와 무게를 줄이기 위해 그 당시 새로 개발된 단일 집적 회로를 사용했기 때문에 아폴로 프로젝트에서 가장 위험한 아이템으로 여겨졌습니다.

미니트맨 미사일을 위한 오토네틱스 D-17 유도 컴퓨터는 1961년에 개발된 초기 대량생산된 내장형 시스템은 미니트맨 미사일을 위한 오토네틱스 D-17 유도 컴퓨터입니다.미니트맨 II가 1966년에 생산되기 시작했을 때, D-17은 집적 회로의 최초의 대량 사용을 나타내는 새로운 컴퓨터로 대체되었습니다.

1960년대의 이러한 초기 애플리케이션 이후 임베디드 시스템은 가격이 하락하고 처리 능력과 기능이 크게 향상되었습니다.초기 마이크로프로세서인 Intel 4004(1971년 출시)는 계산기 및 기타 소형 시스템용으로 설계되었지만 여전히 외장 메모리와 지원 칩이 필요했습니다.1980년대 초반까지 메모리, 입출력 시스템 구성 요소는 마이크로컨트롤러를 구성하는 프로세서와 동일한 칩에 통합되었습니다.마이크로컨트롤러는 범용 컴퓨터가 너무 비싼 응용 프로그램을 찾습니다.마이크로프로세서와 마이크로컨트롤러의 비용이 감소함에 따라 임베디드 시스템의 보급이 증가했습니다.

비교적 저렴한 마이크로컨트롤러는 다수의 개별 구성요소와 동일한 역할을 수행하도록 프로그래밍될 수 있습니다.마이크로컨트롤러를 사용하면 심지어 소비자 제품에서도 마이크로프로세서가 읽어내는 업/다운 버튼이나 노브로 전위차계가변 커패시터와 같은 고가의 노브 기반 아날로그 부품을 교체할 수 있게 되었습니다.이러한 맥락에서 임베디드 시스템은 일반적으로 기존 솔루션보다 복잡하지만, 대부분의 복잡성은 마이크로컨트롤러 자체에 포함되어 있습니다.필요한 추가 구성요소는 거의 없으며 설계 작업의 대부분은 소프트웨어에 있습니다.임베디드 프로세서를 사용하지 않는 새로운 회로의 설계와 구성에 비해 소프트웨어 프로토타입과 테스트가 더 빨라질 수 있습니다.

적용들

애큐폴 전자투표기용[7] 임베디드 컴퓨터 서브어셈블리

임베디드 시스템은 일반적으로 소비자, 산업용, 자동차, 가전, 의료, 통신, 상업용, 항공우주 및 군사용 응용 분야에서 볼 수 있습니다.

통신 시스템은 네트워크를 위한 전화 교환기에서부터 최종 사용자휴대폰에 이르기까지 수많은 임베디드 시스템을 사용합니다.컴퓨터 네트워킹은 전용 라우터네트워크 브리지를 사용하여 데이터를 라우팅합니다.

가전제품에는 MP3 플레이어, 텔레비전 세트, 휴대폰, 비디오 게임기, 디지털 카메라, GPS 수신기, 프린터 등이 포함됩니다.전자레인지, 세탁기, 식기세척기와 같은 가전제품에는 유연성, 효율성 및 기능을 제공하기 위한 내장 시스템이 포함되어 있습니다.첨단 HVAC(Heating, Ventilation, Air Conditioning) 시스템은 네트워크로 연결된 온도 조절 장치를 사용하여 낮과 계절에 따라 변화할 수 있는 온도를 보다 정확하고 효율적으로 제어합니다.홈 오토메이션은 조명, 기후, 보안, 오디오/비주얼, 감시 등을 제어하는 데 사용할 수 있는 유무선 네트워킹을 사용하며, 이 모든 것들은 감지 및 제어를 위해 내장된 장치를 사용합니다.

비행에서 자동차로의 운송 시스템은 점점 더 임베디드 시스템을 사용하고 있습니다.새 비행기는 관성 유도 시스템GPS 수신기와 같은 상당한 안전 요건을 갖춘 첨단 항전 장치를 갖추고 있습니다.우주선은 궤도 수정을 위해 아스트리오닉스 시스템에 의존합니다.브러시리스 DC 모터, 인덕션 모터, DC 모터 등 다양한 전기 모터가 전자 모터 컨트롤러를 사용합니다.자동차, 전기 자동차하이브리드 자동차는 효율성을 극대화하고 오염을 줄이기 위해 임베디드 시스템을 점점 더 많이 사용하고 있습니다.임베디드 시스템을 사용하는 다른 자동차 안전 시스템으로는 ABS(Anti-Lock Brake System), ESC(Electronic Stability Control), TCS(Traction Control) 및 자동 사륜 구동 등이 있습니다.

의료 장비모니터링을 위해 임베디드 시스템을 사용하고, 비침습적 내부 검사를 위해 다양한 의료 영상(양전자 방출 단층 촬영(PET), 단일 광자 방출 컴퓨터 단층 촬영(SPECT), 컴퓨터 단층 촬영(CT) 및 자기 공명 영상(MRI)을 사용합니다.의료 장비에 내장된 시스템은 산업용 컴퓨터로 구동되는 경우가 많습니다.[8]

임베디드 시스템은 항공우주 및 방위 산업에서 안전에 중요한 시스템에 사용됩니다.IoT 모니터링 및 제어 목적으로 온칩 3G 셀룰러 또는 기타 방법을 통해 유선 또는 무선 네트워크에 연결되지 않는 한, 이러한 시스템은 해킹으로부터 격리될 수 있으므로 더욱 안전합니다.[citation needed]화재 안전을 위해 시스템은 더 높은 온도를 처리하고 계속 작동할 수 있는 능력을 갖도록 설계될 수 있습니다.보안을 다루는 데 있어 임베디드 시스템은 자급자족할 수 있고 절단된 전기 및 통신 시스템을 처리할 수 있습니다.

motes라고 불리는 소형 무선 장치들은 네트워크로 연결된 무선 센서입니다.무선 센서 네트워킹은 첨단 집적 회로(IC) 설계를 통해 소형화를 가능하게 하여 전체 무선 서브시스템을 정교한 센서에 결합함으로써 사람들과 회사들이 물리적 세계의 무수히 많은 것들을 측정하고 모니터링 및 제어 시스템을 통해 이 정보에 작용할 수 있게 합니다.이러한 모터는 완전히 자체적으로 장착되며, 일반적으로 배터리를 교체하거나 충전해야 할 때까지 몇 년 동안 배터리 소스가 방전됩니다.

특성.

여러 작업을 위해 설계된 범용 컴퓨터와 달리 임베디드 시스템은 특정 작업을 수행하도록 설계되었습니다.안전 및 사용성과 같은 이유로 충족해야 하는 실시간 성능 제약이 있는 경우도 있고, 성능 요구 사항이 낮거나 없어서 시스템 하드웨어를 단순화하여 비용을 절감할 수 있는 경우도 있습니다.

임베디드 시스템은 항상 독립형 장치가 아닙니다.대부분의 임베디드 시스템은 보다 일반적인 용도로 사용되는 더 큰 장치 내의 작은 부분입니다.예를 들어 깁슨 로봇 기타는 현을 조정하는 내장된 시스템을 갖추고 있지만 로봇 기타의 전체적인 목적은 음악을 연주하는 것입니다.[9]마찬가지로, 자동차에 내장된 시스템은 자동차 자체의 서브시스템으로서 특정한 기능을 제공합니다.

e-con Systems eSOM270 & eSOM300 컴퓨터 온 모듈

임베디드 시스템용으로 작성된 프로그램 명령어를 펌웨어라고 하며 읽기 전용 메모리 또는 플래시 메모리 칩에 저장합니다.적은 메모리, 작거나 존재하지 않는 키보드 또는 화면과 같은 제한된 컴퓨터 하드웨어 리소스로 실행됩니다.

사용자 인터페이스

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

임베디드 시스템은 사용자 인터페이스가 전혀 없는 것부터 하나의 작업을 전담하는 시스템에서 현대의 컴퓨터 데스크톱 운영 체제와 유사한 복잡한 그래픽 사용자 인터페이스에 이르기까지 다양합니다.간단한 내장형 기기는 버튼, 발광 다이오드(LED), 그래픽 또는 문자 액정 디스플레이(LCD)를 간단한 메뉴 시스템과 함께 사용합니다.터치 감지 또는 화면 가장자리 소프트 키가 있는 그래픽 화면을 사용하는 더 정교한 장치는 사용 공간을 최소화하면서 유연성을 제공합니다. 버튼의 의미는 화면에 따라 바뀔 수 있으며 선택에는 원하는 것을 가리키는 자연스러운 동작이 포함됩니다.

일부 시스템은 직렬(RS-232) 또는 네트워크(: 이더넷) 연결을 통해 원격으로 사용자 인터페이스를 제공합니다.이 접근 방식은 임베디드 시스템의 기능을 확장하고 디스플레이 비용을 절감하며 보드 지원 패키지(BSP)를 단순화하며 설계자가 PC에 풍부한 사용자 인터페이스를 구축할 수 있도록 합니다.이것의 좋은 예는 내장된 장치(예: IP 카메라 또는 네트워크 라우터)에서 실행되는 내장된 HTTP 서버의 결합입니다.사용자 인터페이스는 디바이스에 연결된 PC의 웹 브라우저에 표시됩니다.

임베디드 시스템의 프로세서

일반적인 임베디드 컴퓨터와 비교할 때 낮은 전력 소비, 작은 크기, 견고한 작동 범위, 낮은 단위당 비용 등이 대표적인 특성입니다.이는 제한된 처리 리소스를 희생해야 합니다.

임베디드 시스템용으로 수많은 마이크로컨트롤러가 개발되었습니다.범용 마이크로프로세서는 임베디드 시스템에서도 사용되지만 일반적으로 마이크로컨트롤러보다 더 많은 지원 회로가 필요합니다.

기성 컴퓨터 보드

PC/104 및 PC/104+는 작고 부피가 작은 내장형 및 견고한 시스템을 위한 기성 컴퓨터 보드 표준의 예입니다.대부분 x86 기반이며 대부분의 단순한(8/16비트) 임베디드 시스템과 비교하면 여전히 크기는 크지만, 표준 PC와 비교하면 물리적으로 작은 경우가 많습니다.DOS, FreeBSD, Linux, NetBSD 또는 MicroC/OS-II, QNX 또는 VxWorks와 같은 RTOS(embedded real-time operating system)를 사용할 수 있습니다.

작은 크기나 전력 효율이 주요 관심사가 아닌 특정 애플리케이션에서는 사용되는 구성 요소가 범용 x86 개인용 컴퓨터에 사용되는 구성 요소와 호환될 수 있습니다.VIA EPIA 제품군과 같은 보드는 PC 호환성이 뛰어나지만 통합성이 뛰어나거나 물리적으로 더 작거나 다른 특성을 가지고 있어 임베디드 엔지니어들에게 매력적입니다.이 접근 방식의 장점은 일반적인 소프트웨어 개발에 사용되는 것과 동일한 소프트웨어 개발 도구와 함께 저가의 상품 구성 요소를 사용할 수 있다는 것입니다.이러한 방식으로 구축된 시스템은 더 큰 장치에 통합되어 하나의 역할을 수행하기 때문에 여전히 임베디드로 간주됩니다.이러한 접근 방식을 채택할 수 있는 장치의 예로는 애플리케이션에 고유한 코드를 포함하는 ATM(automated teller machine)과 아케이드 기계가 있습니다.

그러나 대부분의 기성 임베디드 시스템 보드는 PC 중심이 아니며 ISAPCI 버스를 사용하지 않습니다.시스템 어 칩 프로세서를 사용하는 경우 개별 구성 요소를 연결하는 표준화된 버스를 사용하면 거의 이점이 없을 수 있으며 하드웨어와 소프트웨어 도구의 환경이 크게 다를 수 있습니다.

하나의 일반적인 디자인 스타일은 명함 크기의 작은 시스템 모듈을 사용하며, ARM 기반 시스템 온 칩 프로세서 및 주변 장치와 같은 고밀도 BGA 칩, 저장을 위한 외장 플래시 메모리 및 런타임 메모리를 위한 DRAM을 보유합니다.모듈 공급업체는 일반적으로 부팅 소프트웨어를 제공하고 일반적으로 Linux 및 일부 실시간 선택을 포함한 운영 체제를 선택할 수 있도록 합니다.이러한 모듈은 전문 테스트 문제에 익숙한 조직에서 대량으로 제조할 수 있으며, 훨씬 적은 용량의 맞춤형 메인보드와 애플리케이션별 외장형 주변기기를 결합할 수 있습니다.이러한 접근 방식의 대표적인 예로는 아두이노(Arduino)와 라즈베리 파이(Raspberry Pi)가 있습니다.

ASIC 및 FPGA SoC 솔루션

SoC(system on chip)는 여러 개의 프로세서, 곱셈기, 캐시, 심지어는 다른 종류의 메모리와 일반적으로 하나의 칩에서 유선 또는 무선 통신을 위한 인터페이스와 같은 다양한 주변 장치로 구성된 완전한 시스템을 포함합니다.종종 그래픽 처리 장치(GPU)와 DSP가 이러한 칩에 포함됩니다.SoC는 애플리케이션별 집적 회로(ASIC)로 구현되거나 일반적으로 재구성될 수 있는 FPGA(Field-Programmable Gate Array)를 사용할 수 있습니다.

ASIC 구현은 휴대 전화스마트폰과 같은 대용량 임베디드 시스템에 공통적으로 적용됩니다.ASIC 또는 FPGA 구현은 바이오닉스에서와 같이 신호 처리 성능, 인터페이스 및 신뢰성에 특별한 요구가 있는 그리 고용량이 아닌 임베디드 시스템에 사용될 수 있습니다.

주변기기

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

임베디드 시스템은 다음과 같은 주변기기를 통해 외부와 대화합니다.

도구들

다른 소프트웨어와 마찬가지로 임베디드 시스템 설계자는 컴파일러, 어셈블러, 디버거를 사용하여 임베디드 시스템 소프트웨어를 개발합니다.그러나 보다 구체적인 도구를 사용할 수도 있습니다.

  • 회로 디버거 또는 에뮬레이터에서(다음 섹션 참조).
  • 프로그램에 체크섬이나 CRC를 추가하기 위한 유틸리티로 내장된 시스템이 프로그램이 유효한지 확인할 수 있습니다.
  • 디지털 신호 처리를 사용하는 시스템의 경우, 개발자들은 수학을 시뮬레이션하기 위해 컴퓨터 노트북을 사용할 수 있습니다.
  • 시스템 수준 모델링 및 시뮬레이션 도구는 설계자가 프로세서, 메모리, DMA, 인터페이스, 버스 및 소프트웨어 동작 흐름과 같은 하드웨어 구성 요소를 사용하여 시스템의 시뮬레이션 모델을 구성 가능한 라이브러리 블록을 사용한 상태도 또는 플로우 다이어그램으로 구성할 수 있도록 도와줍니다.시뮬레이션은 전력 대 성능 절충, 신뢰성 분석 및 병목 분석을 수행하여 적합한 구성요소를 선택하기 위해 수행됩니다.설계자가 아키텍처를 결정하는 데 도움이 되는 일반적인 보고서에는 애플리케이션 대기 시간, 장치 처리량, 장치 활용률, 전체 시스템의 전력 소비량 및 장치 수준의 전력 소비량이 포함됩니다.
  • 모델 기반 개발 도구는 디지털 필터, 모터 제어기, 통신 프로토콜 디코딩 및 멀티 레이트 작업과 같은 구성 요소의 그래픽 데이터 흐름 및 UML 상태 차트 다이어그램을 생성하고 시뮬레이션합니다.
  • 맞춤형 컴파일러와 링커를 사용하여 특수 하드웨어를 최적화할 수 있습니다.
  • 내장된 시스템은 고유의 특수 언어 또는 설계 도구를 갖거나 ForthBasic과 같은 기존 언어에 향상된 기능을 추가할 수 있습니다.
  • 또 다른 대안은 RTOS나 임베디드 운영체제를 추가하는 것입니다.
  • 상태 머신을 기반으로 한 모델링 및 코드 생성 도구

소프트웨어 도구는 다음과 같은 여러 소스에서 제공될 수 있습니다.

  • 임베디드 시장을 전문으로 하는 소프트웨어 회사들
  • GNU 소프트웨어 개발 도구에서 포팅됨
  • 내장형 프로세서가 일반 PC 프로세서와 가까운 관계라면 개인용 컴퓨터 개발 도구를 사용할 수도 있습니다.

임베디드 시스템의 복잡성이 증가함에 따라 상위 수준의 툴과 운영 체제가 기계로 이동하고 있습니다.예를 들어 휴대폰, 개인용 디지털 비서기타 소비자용 컴퓨터는 전자제품 제조업체가 아닌 다른 사람이 구입하거나 제공하는 중요한 소프트웨어를 필요로 하는 경우가 많습니다.이러한 시스템에서는 타사 소프트웨어 공급업체가 대규모 시장에 판매할 수 있도록 Linux, NetBSD, FreeBSD, OSGi 또는 Embedded Java와 같은 개방형 프로그래밍 환경이 필요합니다.

디버깅

임베디드 디버깅은 사용 가능한 설비에 따라 다른 수준으로 수행될 수 있습니다.고려 사항은 다음과 같습니다. 메인 애플리케이션 속도를 늦추는가, 디버깅된 시스템 또는 애플리케이션이 실제 시스템 또는 애플리케이션에 얼마나 가까운가, 디버깅을 위해 설정할 수 있는 트리거(예: 특정 프로그램 카운터 값에 도달했을 때 메모리 검사), 디버깅 프로세스에서 검사할 수 있는 것(예:메모리, 또는 메모리와 레지스터 등만 있습니다.)

가장 간단한 디버깅 기술과 시스템은 대략 다음과 같은 영역으로 분류됩니다.

  • 내장된 운영 체제에서 제공하는 간단한 셸을 사용하는 대화형 상주 디버깅(예: Forth and Basic)
  • 소프트웨어 전용 디버거는 하드웨어를 수정할 필요는 없지만 시간과 저장 공간을 절약하기 위해 기록한 내용을 주의 깊게 제어해야 한다는 장점이 있습니다.[10]
  • 로그 또는 직렬 포트 출력을 사용하여 플래시의 모니터를 사용하거나 이기종 멀티코어 시스템에서도 작동하는 Remedy Debugger와 같은 디버그 서버를 사용하여 작업을 추적하는 외부 디버깅.
  • ICD(In-Circuit Debugger)는 JTAG 또는 Nexus 인터페이스를 통해 마이크로프로세서에 연결되는 하드웨어 장치입니다.[11]이를 통해 마이크로프로세서의 작동을 외부에서 제어할 수 있지만 일반적으로 프로세서의 특정 디버깅 기능으로 제한됩니다.
  • ICE(In Circuit Emulator)는 마이크로프로세서를 시뮬레이션된 등가물로 대체하여 마이크로프로세서의 모든 측면을 완벽하게 제어합니다.
  • 완전한 에뮬레이터는 하드웨어의 모든 측면에 대한 시뮬레이션을 제공하여 모든 측면을 제어 및 수정할 수 있으며 일반 PC에서 디버깅이 가능합니다.단점은 비용과 느린 작동으로 최종 시스템보다 최대 100배 느린 경우도 있습니다.
  • SoC 설계의 경우 FPGA 프로토타입 보드에서 설계를 검증하고 디버깅하는 것이 일반적인 접근 방식입니다.Certus와[12] 같은 도구는 FPGA 구현에 프로브를 삽입하여 신호를 관찰할 수 있도록 합니다.이것은 로직 분석기와 유사한 기능을 가진 구현에서 여러 FPGA에 걸친 하드웨어, 펌웨어 및 소프트웨어 상호 작용을 디버깅하는 데 사용됩니다.

프로그래머는 외부 디버깅에만 국한되지 않는 한 일반적으로 도구를 통해 소프트웨어를 로드하고 실행하며 프로세서에서 실행 중인 코드를 보고 작동을 시작하거나 중지할 수 있습니다.코드 보기는 고급 프로그래밍 언어, 어셈블리 코드 또는 둘 다의 혼합일 수 있습니다.

추적

실시간 운영 체제는 종종 운영 체제 이벤트 추적을 지원합니다.그래픽 보기는 시스템 동작에 대한 기록을 기반으로 호스트 PC 도구에 의해 표시됩니다.추적 기록은 소프트웨어, RTOS 또는 특수 추적 하드웨어에서 수행할 수 있습니다.RTOS 추적을 통해 개발자는 소프트웨어 시스템의 타이밍과 성능 문제를 이해할 수 있으며 높은 수준의 시스템 동작을 잘 이해할 수 있습니다.임베디드 시스템에서 추적 기록은 하드웨어 또는 소프트웨어 솔루션을 사용하여 달성할 수 있습니다.소프트웨어 기반 추적 기록은 특별한 디버깅 하드웨어를 필요로 하지 않으며 배치된 장치에서 추적을 기록하는 데 사용할 수 있지만 CPU 및 RAM 사용량에 영향을 미칠 수 있습니다.[13]RTOS 환경에서 사용되는 소프트웨어 기반 추적 방법의 한 예는 코드의 전략적인 위치에서 운영 체제에 의해 호출되는 빈 매크로를 사용하는 것이며 후크 역할을 하도록 구현될 수 있습니다.

신뢰성.

임베디드 시스템은 오류 없이 몇 년 동안 연속적으로 실행될 것으로 예상되는 시스템에 상주하는 경우가 많으며, 오류가 발생하면 자체적으로 복구되는 경우도 있습니다.따라서 일반적으로 소프트웨어는 개인용 컴퓨터보다 더 신중하게 개발되고 테스트되며 디스크 드라이브, 스위치 또는 버튼과 같은 신뢰할 수 없는 기계적 이동 부품은 피할 수 있습니다.

구체적인 신뢰성 문제는 다음과 같습니다.

  • 수리를 위해 시스템을 안전하게 종료할 수 없거나 너무 액세스할 수 없어 수리할 수 없습니다.우주 시스템, 해저 케이블, 항법 비콘, 시추공 시스템, 자동차 등이 그 예입니다.
  • 안전상의 이유로 시스템을 계속 가동해야 합니다.고장 시 기능 저하는 견딜 수 없을 수 있습니다.운영자가 백업을 선택하는 경우가 많습니다.항공기 항법, 원자로 제어 시스템, 안전에 중요한 화학 공장 제어, 열차 신호 등이 그 예입니다.
  • 시스템을 종료하면 막대한 비용이 손실됩니다.전화 스위치, 공장 제어, 교량 및 엘리베이터 제어, 자금 이체 및 시장조성, 자동 판매 및 서비스.

메모리 누수와 같은 소프트웨어 버그와 하드웨어의 소프트 오류 모두 오류를 복구하기 위해 다양한 기술이 조합되어 사용되기도 합니다.

  • 소프트웨어가 정기적으로 워치독 서브시스템에 통지하지 않는 한 시스템을 재설정하고 재시작하는 워치독 타이머
  • 신뢰할 수 있는 TCB(Computing Base) 아키텍처로 설계하면 매우 안전하고 신뢰할 수 있는 시스템 환경을[14] 보장합니다.
  • 임베디드 시스템용으로 설계된 하이퍼바이저는 손상된 소프트웨어 구성 요소가 다른 서브시스템 또는 권한 있는 수준의 시스템 소프트웨어와 간섭하지 않도록 모든 서브시스템 구성 요소에 대해 안전한 캡슐화를 제공할 수 있습니다.[15]이 캡슐화는 결함이 한 서브시스템에서 다른 서브시스템으로 전파되는 것을 방지하여 신뢰성을 향상시킵니다.이를 통해 장애 감지 시 서브시스템이 자동으로 종료되고 다시 시작될 수도 있습니다.
  • 면역 인식 프로그래밍은 엔지니어가 보다 안정적인 임베디드 시스템 코드를 제작하는 데 도움을 줄 수 있습니다.[16][17]MISRA C/C++와 같은 지침 및 코딩 규칙은 개발자들이 다양한 방식으로 신뢰할 수 있는 휴대용 펌웨어를 생산할 수 있도록 지원하는 것을 목표로 합니다: 일반적으로 런타임 오류(메모리 유출, 잘못된 포인터 사용), 런타임 검사 및 예외 처리(범위/정성 검사, divid-b)로 이어질 수 있는 코딩 관행에 대해 조언하거나 의무화함으로써.y-zero 및 버퍼 인덱스 유효성 검사, 논리 검사의 기본 사례), 루프 경계, 인간-readable의 생성, 잘 설명되고 잘 구조화된 코드, 컴파일러 유도 불일치 또는 측면 effects(express온 평가 순서, 재귀, 특정 유형의 매크로)를 초래할 수 있는 언어 모호성 방지.이러한 규칙은 기능 검증 목적으로 코드 정적 검사기 또는 경계 모델 검사와 함께 사용할 수 있으며 코드 타이밍 속성을 결정하는 데도 도움이 됩니다.[16]

볼륨 높음 대 볼륨 낮음

휴대 전화와 같은 대용량 시스템의 경우 비용 최소화가 일반적으로 주요 설계 고려 사항입니다.엔지니어들은 일반적으로 필요한 기능을 구현하기에 충분한 하드웨어를 선택합니다.

대용량이나 원형 임베디드 시스템의 경우, 범용 컴퓨터는 프로그램을 제한하거나 운영 체제를 RTOS로 대체하여 적용할 수 있습니다.

임베디드 소프트웨어 아키텍처

1978년 미국 전기 제조업체 협회는 단일 보드 컴퓨터, 수치 및 이벤트 기반 컨트롤러와 같은 거의 모든 컴퓨터 기반 컨트롤러를 [18]포함한 프로그래밍 가능 마이크로 컨트롤러 표준인 ICS 3-1978을 발표했습니다.

일반적으로 사용되는 소프트웨어 아키텍처에는 여러 가지 유형이 있습니다.

단순제어루프

이 디자인에서 소프트웨어는 단순히 입력 장치를 모니터링하는 루프를 가지고 있습니다.루프는 서브루틴을 호출하며, 서브루틴은 하드웨어 또는 소프트웨어의 일부를 관리합니다.따라서 단순 제어 루프 또는 프로그래밍된 입력-출력이라고 합니다.

인터럽트 제어 시스템

일부 임베디드 시스템은 대부분 인터럽트에 의해 제어됩니다.이는 시스템에서 수행되는 작업이 다양한 종류의 이벤트에 의해 트리거됨을 의미합니다. 인터럽트는 예를 들어 미리 정의된 간격의 타이머 또는 데이터를 수신하는 직렬 포트 컨트롤러에 의해 생성될 수 있습니다.

이 아키텍처는 이벤트 핸들러에 짧은 대기 시간이 필요하고 이벤트 핸들러가 짧고 간단한 경우에 사용됩니다.이러한 시스템은 주 루프에서도 간단한 작업을 실행하지만 이 작업은 예상치 못한 지연에 그다지 민감하지 않습니다.인터럽트 핸들러가 대기열 구조에 더 긴 작업을 추가하는 경우도 있습니다.나중에 인터럽트 핸들러가 끝나면 이 작업들은 메인 루프에 의해 실행됩니다.이 방법은 시스템을 개별 프로세스가 있는 멀티태스킹 커널에 가깝게 만듭니다.

협력 멀티태스킹

협력 멀티태스킹API에 루프가 숨겨져 있다는 점을 제외하면 단순 제어 루프 체계와 매우 유사합니다.[3][1]프로그래머는 일련의 작업을 정의하고, 각 작업은 실행할 수 있는 고유한 환경을 갖게 됩니다.작업이 유휴 상태일 때 다른 작업에 제어를 전달하는 유휴 루틴을 호출합니다.

새로운 작업을 작성하거나 대기열에 추가하면 새로운 소프트웨어를 추가하는 것이 더 쉽다는 점을 제외하면 장단점은 제어 루프의 장점과 비슷합니다.

선제적인 멀티태스킹 또는 멀티스레딩

이러한 유형의 시스템에서는 인터럽트를 호출하는 타이머를 기반으로 하위 수준의 코드 조각이 작업 또는 스레드 사이를 전환합니다.이 수준은 일반적으로 시스템이 운영 체제 커널을 가지고 있다고 간주되는 수준입니다.기능이 얼마나 필요한지에 따라 개념적으로 병렬로 실행되는 여러 작업을 관리해야 하는 복잡성이 어느 정도 발생합니다.

코드가 잠재적으로 다른 작업의 데이터를 손상시킬 수 있으므로(메모리 관리 장치를 사용하는 시스템은 제외) 프로그램은 신중하게 설계되고 테스트되어야 하며, 메시지 큐, 세마포어 또는 비차단 동기화 방식과 같은 일부 동기화 전략에 의해 공유 데이터에 대한 액세스를 제어해야 합니다.

이러한 복잡성 때문에 조직에서는 기성 RTOS를 사용하는 것이 일반적이며, 이를 통해 애플리케이션 프로그래머들은 운영 체제 서비스보다는 장치 기능에 집중할 수 있습니다.그러나 RTOS를 포함하는 선택은 애플리케이션 개발 프로세스를 시작하기 전에 선택해야 하기 때문에 자체적인 문제를 야기합니다.이러한 타이밍은 개발자들로 하여금 현재 요구사항에 따라 기기에 내장된 운영체제를 선택하도록 강요하기 때문에 향후 옵션을 크게 제한하게 됩니다.[19]

직렬, USB, TCP/IP, Bluetooth, Wireless LAN, 트렁크 라디오, 다중 채널, 데이터 및 음성, 향상된 그래픽, 다중 상태, 다중 스레드, 수많은 대기 상태 등과 같은 주변 장치 및 작업을 관리하기 위한 장치가 필요함에 따라 임베디드 시스템의 복잡성 수준이 지속적으로 증가하고 있습니다.이러한 추세는 RTOS 외에도 임베디드 미들웨어의 도입으로 이어지고 있습니다.

마이크로커넬과 엑소커넬

마이크로커널은 메모리를 할당하고 CPU를 서로 다른 실행 스레드로 전환합니다.사용자 모드 프로세스는 파일 시스템, 네트워크 인터페이스 등 주요 기능을 구현합니다.

엑소커넬은 일반 서브루틴 호출을 통해 효율적으로 통신합니다.시스템의 하드웨어와 모든 소프트웨어는 응용프로그램 프로그래머들이 사용할 수 있고 확장할 수 있습니다.

모놀리식 알맹이

모놀리식 커널은 내장된 환경에 맞게 조정된 정교한 기능을 갖춘 비교적 큰 커널입니다.이것은 프로그래머들에게 리눅스마이크로소프트 윈도우와 같은 데스크톱 운영 체제와 비슷한 환경을 제공하므로 개발에 매우 생산적입니다.단점으로는 하드웨어 리소스가 훨씬 더 많이 필요하고 비용이 많이 드는 경우가 많으며 이러한 커널의 복잡성 때문에 예측 가능성과 신뢰성이 떨어질 수 있습니다.

임베디드 모놀리식 커널의 일반적인 예로는 임베디드 리눅스, VXWorks, 윈도우 CE 등이 있습니다.

하드웨어 비용 증가에도 불구하고, 이러한 유형의 임베디드 시스템은 특히 무선 라우터나 GPS 네비게이션 시스템과 같은 보다 강력한 임베디드 장치에서 인기가 높아지고 있습니다.

추가 소프트웨어 구성 요소

코어 운영 체제 외에도 많은 임베디드 시스템에는 추가적인 상위 계층 소프트웨어 구성 요소가 있습니다.이러한 구성 요소에는 CAN, TCP/IP, FTP, HTTPHTTPS와 같은 네트워킹 프로토콜 스택과 FAT 및 플래시 메모리 관리 시스템과 같은 스토리지 기능이 포함됩니다.내장된 장치에 오디오 및 비디오 기능이 있는 경우 시스템에 적절한 드라이버와 코덱이 표시됩니다.모놀리식 커널의 경우, 이러한 소프트웨어 계층의 다수가 커널에 포함될 수 있습니다.RTOS 범주에서 추가 소프트웨어 구성 요소의 가용성은 상용 제품에 따라 달라집니다.

도메인별 아키텍처

오토사는 자동차 분야에서 임베디드 소프트웨어의 표준 아키텍처입니다.

참고 항목

메모들

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

참고문헌

  1. ^ a b Michael Barr. "Embedded Systems Glossary". Neutrino Technical Library. Retrieved 2007-04-21.
  2. ^ Heath, Steve (2003). Embedded systems design. EDN series for design engineers (2 ed.). Newnes. p. 2. ISBN 978-0-7506-5546-0. An embedded system is a microprocessor based system that is built to control a function or a range of functions.
  3. ^ a b Michael Barr; Anthony J. Massa (2006). "Introduction". Programming embedded systems: with C and GNU development tools. O'Reilly. pp. 1–2. ISBN 978-0-596-00983-0.
  4. ^ Barr, Michael (1 August 2009). "Real men program in C". Embedded Systems Design. TechInsights (United Business Media). p. 2. Retrieved 2009-12-23.
  5. ^ Shirriff, Ken (30 August 2016). "The Surprising Story of the First Microprocessors". IEEE Spectrum. Institute of Electrical and Electronics Engineers. 53 (9): 48–54. doi:10.1109/MSPEC.2016.7551353. S2CID 32003640. Retrieved 13 October 2019.
  6. ^ "1971: Microprocessor Integrates CPU Function onto a Single Chip". The Silicon Engine. Computer History Museum. Retrieved 22 July 2019.
  7. ^ "Electronic Frontier Foundation". Electronic Frontier Foundation.
  8. ^ 임베디드 시스템OEM 솔루션 델.Content.dell.com (2011-01-04).2013-02-06년 회수.
  9. ^ David Carey (2008-04-22). "Under the Hood: Robot Guitar embeds autotuning". Embedded Systems Design. Archived from the original on 2008-07-08.
  10. ^ Tancreti, Matthew; Sundaram, Vinaitheerthan; Bagchi, Saurabh; Eugster, Patrick (2015). "TARDIS". Proceedings of the 14th International Conference on Information Processing in Sensor Networks. IPSN '15. New York, NY, USA: ACM. pp. 286–297. doi:10.1145/2737095.2737096. ISBN 9781450334754. S2CID 10120929.
  11. ^ Tancreti, Matthew; Hossain, Mohammad Sajjad; Bagchi, Saurabh; Raghunathan, Vijay (2011). "Aveksha". Proceedings of the 9th ACM Conference on Embedded Networked Sensor Systems. SenSys '11. New York, NY, USA: ACM. pp. 288–301. doi:10.1145/2070942.2070972. ISBN 9781450307185. S2CID 14769602.
  12. ^ "Tektronix Shakes Up Prototyping, Embedded Instrumentation Boosts Boards to Emulator Status". Electronic Engineering Journal. 2012-10-30. Retrieved 2012-10-30.
  13. ^ Kraft, Johan; Wall, Anders; Kienle, Holger (2010), Barringer, Howard; Falcone, Ylies; Finkbeiner, Bernd; Havelund, Klaus (eds.), "Trace Recording for Embedded Systems: Lessons Learned from Five Industrial Projects", Runtime Verification, Berlin, Heidelberg: Springer Berlin Heidelberg, vol. 6418, pp. 315–329, doi:10.1007/978-3-642-16612-9_24, ISBN 978-3-642-16611-2, retrieved 2022-08-16
  14. ^ Heiser, Gernot (December 2007). "Your System is secure? Prove it!" (PDF). ;login:. 2 (6): 35–8. Archived (PDF) from the original on 2014-11-29.
  15. ^ Moratelli, C; Johann, S; Neves, M; Hessel, F (2016). "Embedded virtualization for the design of secure IoT applications". Proceedings of the 27th International Symposium on Rapid System Prototyping: Shortening the Path from Specification to Prototype. pp. 2–6. doi:10.1145/2990299.2990301. ISBN 9781450345354. S2CID 17466572. Retrieved 2 February 2018.
  16. ^ a b Short, Michael (March 2008). "Development guidelines for dependable real-time embedded systems". 2008 IEEE/ACS International Conference on Computer Systems and Applications. pp. 1032–1039. doi:10.1109/AICCSA.2008.4493674. ISBN 978-1-4244-1967-8. S2CID 14163138.
  17. ^ Motor Industry Software Reliability Association. "MISRA C:2012 Third Edition, First Revision". Retrieved 2022-02-03.
  18. ^ "FAQs: Programmable Controllers" (PDF). Retrieved 2020-01-10.
  19. ^ "Working across Multiple Embedded Platforms" (PDF). clarinox. Archived (PDF) from the original on 2011-02-19. Retrieved 2010-08-17.

추가열람

  • John Catsoulis (May 2005). Designing Embedded Hardware, 2nd Edition. O'Reilly. ISBN 0-596-00755-8.
  • James M. Conrad; Alexander G. Dean (September 2011). Embedded Systems, An Introduction Using the Renesas RX62N Microcontroller. Micrium. ISBN 978-1935-7729-96.
  • Klaus Elk (August 2016). Embedded Software Development for the Internet Of Things, The Basics, The Technologies and Best Practices. CreateSpace Independent Publishing Platform. ISBN 978-1534602533.

외부 링크