임베디드 시스템

위키百科, 우리 모두의 百科事典.

現代的 임베디드 시스템의 예: ADSL 모뎀 / 라우터 內部. (4) 마이크로프로세서 , (6) RAM , (7) 플래시 메모리 .

임베디드 시스템 ( 英語 : embedded system , 內臟型 시스템)은 機械나 其他 制御 가 必要한 시스템에 對해, 制御를 위한 特定 機能을 遂行하는 컴퓨터 시스템 이자 裝置 內에 存在하는 電子 시스템이다. 卽, 임베디드 시스템은 全體 裝置의 一部分으로 構成되며 制御가 必要한 시스템을 위한 頭腦 役割을 하는 '特定 目的의 컴퓨터 시스템'이다. 個人用 컴퓨터 와 같은 特定되지 않는 一般的인 目的을 遂行하는 '汎用 시스템'과 對比된다. 特定 目的을 遂行하는 컴퓨터 시스템이므로 目的을 設定하고 이를 遂行하는 프로그램 코드를 作成하여 메모리에 記錄하고 이를 읽어들여 動作시키는 方法이 一般的이다.

電子 하드웨어와 機械 部分을 包含하는 全體 裝置의 一部로 소프트웨어가 內藏되었다는 意味에서 임베디드 라는 單語가 使用되었다. 임베디드 시스템은 오늘날 日常 生活에 쓰이는 많은 裝置들을 制御하고 있다. [1]

電子 시스템을 통해 特定 機能을 遂行하는 컴퓨터 시스템이며, 種種 實時間(real-time computing) 計算을 行하는 데 있어 制約을 갖는다. [2] [3]

임베디드 시스템에는 마이크로컨트롤러 (microcontroller)나 DSP (digital signal processor) 等의 프로세서 코어가 裝着될 수 있다. [4]

마이크로컨트롤러는 規模가 작은 시스템에 使用하므로 普通 運營 體制 를 包含하지 않는 傾向이 있다면, 임베디드는 좀 더 規模가 크기 때문에 運營 體制( 윈도우 CE , 또는 리눅스 커널 )가 시스템에 包含된다. 이 運營體制 위에 특수한 機能만을 遂行하도록 應用 프로그램이 裝着되어 動作하는 傾向이있다. 例를 들어 같은 ARM 이라도 마이크로컨트롤러는 한 칩에 메모리( 플래시 , RAM )을 包含하고 其他 하드웨어(타이머, UART, SPI, ADC 等 必要에 따라 裝着)를 包含한다. 여기서 메모리는 容量이 크지 않기 때문에 運營體制를 包含하기에는 限界가 있다. 그러나 임베디드 시스템에서는 하드웨어는 한 칩內에 裝着하지만, 칩 밖에 많은 容量의 메모리를 裝着하고 PCB에서 連結하는 것이 一般的이다. 이것은 시스템이 크기 때문에 容量이 큰 메모리를 시스템에 裝着할 必要性이 있기 때문이다.

一般的으로 "임베디드 시스템"이란 用語는 嚴密하게 定義된 것은 아닌 것이, 大部分의 시스템은 어느 程度의 擴張性 또는 再프로그램 能力을 갖추고 있다. 例를 들어 手帖型 컴퓨터는 임베디드 시스템과 類似한 運營 體制 와 마이컴을 使用할 수 있지만, 다른 應用 프로그램을 읽어들이거나 다른 周邊裝置를 連結하는 것이 許容된다. 더 나아가서 再프로그램性을 主要 機能으로 드러내지 않는 시스템도 普通 소프트웨어 更新을 支援할 必要가 있다. "汎用" 과 "임베디드" 사이의 連續體 속에서 大型 應用 시스템은 한두 가지 機能 專用으로 設計되었다 하더라도 部品 水準에서 汎用 要素를 大部分 가지고 있다.

個人用 컴퓨터 하드 디스크 와 같은 大容量 貯藏裝置 運營 體制 를 內藏하고 있다. 그에 反해, 임베디드 시스템은 運營 體制와 應用 프로그램들이 롬(플래시)에 이미지 形態로 貯藏되어 있다가 始動과 同時에 램 디스크 를 만든 다음, 램 디스크 위에 運營 體制 應用 프로그램 들이 構成되고 구동되는 시스템도 있다.

歷史 [ 編輯 ]

最初의 現代의 임베디드 시스템 가운데 하나는 MIT 인스트루멘테이션 硏究所의 찰스 스타크 드레이퍼 가 開發한 아폴로 가이던스 컴퓨터 였다. 當時에 크기와 무게를 줄이기 위해 새로 開發된 모놀리딕 集積 回路를 導入했기 때문에 아폴로 프로젝트에서 이 아폴로 가이던스 컴퓨터는 가장 危險한 物件으로 取扱되었다. 初期 大量 生産된 임베디드 시스템은 1961年에 出市된 美니트맨 미사일 오토네틱스 D-17 가이던스 컴퓨터 였다. 미니트맨 II가 1966年 生産을 始作했을 때, D-17은 最初의 高容量 利用 集積 回路였던 새로운 컴퓨터로 交替되었다.

임베디드 多樣性과 傾向性 [ 編輯 ]

임베디드 시스템은 하나 以上의 州 處理 코어로 制御되는데, 이 코어는 普通 마이크로콘트롤러 또는 디지털 信號 處理 裝置이다. 그러나 特定 任務 專用으로 使用되며, 때로 매우 强力한 演算能力이 要求될 수도 있다. 例를 들어 航空 管制 시스템도 임베디드 시스템으로 보는 것이 有用할 수도 있다. 비록 大型 컴퓨터와 空港, 레이다 網을 잇는 地域 또는 全國 電算網도 動員되지만 말이다. (各各의 레이다는 한 두個씩의 임베디드 시스템을 가지고 있을 것이다.)

임베디드 시스템은 特定 任務에 專念하기 때문에 設計者들이 最適化하여 그 크기와 生産 費用을 줄이고 信賴性과 性能을 向上시킬 수 있다. 어떤 임베디드 시스템은 大量生産되어 規模의 經濟로부터 得을 보기도 한다.

外形的으로 임베디드 시스템의 範圍는 들고 다닐 수 있는 디지털 時計와 MP3 再生裝置부터 커다란 固定 設備, 例를 들어 交通 信號燈, 工場 制御 裝置, 또는 原子力 發電所 制御 시스템에 이른다. 複雜性도 다양하여 簡單히 한個의 마이컴만 使用한 것부터 매우 複雜한, 여러 單位와 周邊裝置, 네트워크를 갖추고 큰 캐비넷 안에 設置되는 것도 있다.

임베디드 시스템의 예 [ 編輯 ]

特徵 [ 編輯 ]

임베디드 시스템은 大槪 低價로 選擇된 機能만을 遂行하도록 設計되어 있으며, 몇몇 機能은 매우 빠른 處理가 必要하며, 다른 機能들은 大部分 速度를 重要하게 여기지 않는 境遇가 많다.

그래서 흔히 임베디드 시스템의 많은 部品들은 性能이 낮은 것들이다. 여기서 느리다는 것은 但只 클럭 速度만을 뜻하는 것은 아니다. 임베디드 시스템의 全體 構造는 單價를 낮추기 위해 汎用 컴퓨터 시스템의 하드웨어 에 비해 意圖的으로 單純化되어 있다. 例를 들어, 임베디드 시스템은 個人用 컴퓨터에서 쓰이는 一般 周邊裝置 인터페이스에 비해 10 24 倍 程度는 느린 直列 버스 方式으로 制御되는 周邊 裝置를 使用하는 境遇가 많다.?

많은 임베디드 시스템이 數百萬 個 規模로 量産되기 때문에, 生産 費用을 줄이는 것이 主要 關心事 中 하나일 수밖에 없다. 몇몇 임베디드 시스템들은 대단한 處理 性能과 資源을 必要로 하지 않기 때문에, 그러한 시스템에는 (相對的으로) 느린 프로세서와 작은 크기의 메모리를 搭載하여 費用을 節減할 수 있다.

하드웨어 裝置의 이나 플래시 메모리 에 內藏하는 소프트웨어 를 일러 펌웨어 라 한다. 임베디드 시스템 上의 프로그램은 大槪 制限된 하드웨어 自願 위에서 實時間 (real-time) 制約 條件을 가지고 動作한다. 시스템 上에 디스크 드라이브나 運營 體制, 키보드나 畵面이 없는 境遇도 많다. 파일 시스템을 가지고 있지 않을 수도 있으며, 플래시 드라이브를 貯藏 媒體로 使用할 수도 있다. 使用者 인터페이스가 있다 하더라도 조그마한 키패드거나 LCD 程度일 수 있다.

임베디드 시스템은 여러 해에 이르는 오랜 期間 동안 誤謬 없이 安定的으로 돌아가도록 設計된다. 따라서 펌웨어는 個人用 컴퓨터에서 쓰이는 소프트웨어보다 愼重한 開發과 테스트 過程을 거친다. 大部分의 임베디드 시스템은 디스크 드라이브나 스위치, 버튼 等 機械的인 動作으로 損傷을 입을 수 있는 部品의 使用을 避하고 代身 플래시 메모리 같은 物理的 損傷에서 比較的 자유로운 칩 資材를 使用한다.

또한 임베디드 시스템이 適用되는 分野는 石油 試錐孔, 宇宙空間 等 人間이 直接 卽刻的인 制御를 하기 어려운 場所일 수 있다. 따라서 임베디드 시스템은 最惡의 狀況에서도 스스로 다시 起動할 수 있어야 한다. 이러한 應急 復舊는 소프트웨어가 週期的으로 타이머를 건드리지 않으면 컴퓨터를 初期化시키는 왓値毒 타이머 라고 불리는 電子 部品을 통해 이루어진다.

플랫폼 [ 編輯 ]

임베디드 시스템에서 큰 흐름 가운데 하나는 特定 適用 分野에 맞는 IC 들을 하나의 CPU 칩에 集積시킴으로써 別途의 周邊 裝置用 칩을 보드 위에 달지 않아도 되도록 하는 시스템 온 칩 (SoC, System On Chip) 技術이다.

임베디드 시스템에는 ARM , MIPS , 콜드파이어 /68K, PowerPC , x86 , PIC 마이크로컨트롤러 , 8051 等 많은 다양한 CPU 아키텍처 가 使用된다. 이러한 點이 데스크톱 컴퓨터 ( 個人用 컴퓨터 ) 市場과는 大別되는 點이다.

2003年 基準으로, 데스크톱 컴퓨터 市場에선 인텔 / IBM x86 이나 애플 의 매킨토시에서 使用되는 모토로라 / IBM PowerPC 만이 競爭 아키텍처이다.

2006年을 基準, CPU 아키텍처 에서는 ARM 코어가 가장 强勢이다. 이 밖에도 400餘個 以上의 임베디드 시스템에 쓰이는 코어가 있다. 인텔 8051 , PIC 마이크로컨트롤러 , AVR ( ARM 코어 使用) 8비트 等이 市場에서 가장 많이 使用되는 種類이다.

ARM [ 編輯 ]

ARM은 普通 8비트에 비해 高性能에 많이 使用한다. 따라서 리눅스 커널 을 砲팅하여 많이 使用한다. OS를 搭載하기 爲해 ARM 칩 外部에 RAM이나 FLASH을 PCB 床에 裝着한다. 리눅스 開發에 必要한 要素와 ARM과 結合하여 소프트웨어 및 하드웨어가 開發되는 境遇가 一般的이다.

ARM-코어, FLASH, 그리고 RAM을 한 칩에 만들어지면 리눅스 砲팅이 힘들어져 OS없이 全體 시스템을 C言語 等을 動員하여 要求 動作에 맞게 코딩하여 시스템을 構成한다. 이러한 ARM은 8비트 MCU 와 OS를 갖는 임베디드의 中間 性能과 機能을 發揮한다.

運營 體制 [ 編輯 ]

임베디드 시스템은 흔히 運營 體制 를 使用하지 않는 境遇도 많으며, 使用한다 하더라도 윈도우 CE 리눅스 等 임베디드에 맞춰진 運營 體制나 RTOS :國防/航空用 實時間 運營體制(NEOS)를 使用하여 自身의 새로운 시스템에 設定한다. 이는 大槪의 임베디드 시스템의 境遇 CPU나 메모리 資源 等의 構成이 一般 PC 等의 標準的인 플랫폼과는 달리 限界가 있는 시스템으로 一般 個人 컴퓨터用 運營 體制를 使用할 수 없기 때문이다.

開發 道具 및 디버깅 [ 編輯 ]

一般的인 컴퓨터 프로그래머가 그렇듯이, 임베디드 시스템 設計者들도 프로그래밍을 위해 컴파일러 , 어셈블러 디버거 를 使用한다.

리눅스 運營 體制 開發環境 [ 編輯 ]

리눅스 커널 基盤의 運營 體制 를 使用할 境遇, 開發 道具는 普通 GNU gcc 을 使用한다.

gcc는 소스를 웹사이트에서 가져온 뒤, 目的 CPU에 맞추어 컴파일하면 gcc 關聯 道具를 生成할 수 있다. 目的 CPU을 設定하고 make을 使用하면 該當 CPU의 크로스 컴파일러 gcc 關聯 實行 파일을 얻을 수 있다.

gcc를 使用할 때, 프로그램 開發에서 다음 2가지 方式의 開發道具를 使用한다:

위의 이클립스 를 使用하기 위해 開發環境은 리눅스 PC 의 X-윈도우에서 主로 行해진다.

gcc를 윈도우에서 實行할 境遇, 時그윈 上에서 實行되도록 gcc을 컴파일하면 된다.

커널 開發 [ 編輯 ]

커널이 動作할 때, 內部의 狀態를 標示하는 가장 一般的인 方法은 C言語 커널函數 printk 을 使用하여 外部의 通信라인으로 標示하는 方法이 있다.

專用 CPU의 에뮬레이션 道具가 있다면 커널의 디버깅의 便利性을 얻을 수 있다.

應用 프로그램 開發 [ 編輯 ]

이클립스는 디버깅 道具로 GDB 을 使用할 수 있다. 리눅스 應用 프로그램을 디버깅할 때, GDB 서버를 타킷 보드에 設置하고 이클립스와 連結하면 이더넷 等의 通信을 통해 디버깅이 可能하다.

윈도우 CE 開發環境 [ 編輯 ]

윈도우 CE 는 윈도우 PC에서 動作하고 비주얼 스튜디오 開發環境에서 이루어진다. 初期의 環境은 커널(윈도우 CE 플랫폼 빌더)과 應用 프로그램 開發(임베디드 비주얼 C++)李 다른 道具를 使用했다. 以後 커널 컴파일과 應用 프로그램 開發이 비주얼 스튜디오 에 統合하여 開發한다. 윈도우 CE와 PC 윈도우 應用 프로그램은 差異가 있으므로 비주얼 스튜디오 의 設定은 달라야 한다. 윈도우 CE用 開發 道具를 設置해야 한다.

윈도우 임베디드 컴팩트 7 設置 예:

  1. 비주얼 스튜디오 2008 프로페셔널 設置
  2. 비주얼 스튜디오 2008 서비스 팩 1 設置
  3. 選擇 事項 : 마이크로소프트 익스프레션 블렌드 3 設置
  4. 윈도우 임베디드 컴팩트 7 設置
  5. 윈도우 임베디드 컴팩트 7 업데이트 設置

順序로 設置한다.

기타 傾向 [ 編輯 ]

디버깅 人서킷 에뮬레이터 等의 디버거(디버깅 프로그램)를 利用하여 이루어진다.

임베디드 시스템 設計者는 一般的인 소프트웨어 프로그래머가 흔히 使用하지 않는 道具들도 가끔 利用한다.

  • 몇몇 設計者들은 데이터 파일을 코드로 變換하는 유틸리티를 使用하여 프로그램에 여러 類型의 데이터를 包含시키기도 한다.
  • 大部分의 設計者들은 프로그램에 체크섬(Check Sum)을 더하는 유틸리티 프로그램을 利用하여 프로그램이 遂行된 以後의 無結成을 檢査한다.

같이 보기 [ 編輯 ]

各州 [ 編輯 ]

  1. Michael Barr; Anthony J. Massa (2006). 〈Introduction〉. 《Programming embedded systems: with C and GNU development tools》 . O'Reilly. 1?2쪽. ISBN   978-0-596-00983-0 .  
  2. Michael Barr . “Embedded Systems Glossary” . 《Neutrino Technical Library》. 2013年 6月 25日에 原本 文書 에서 保存된 文書 . 2007年 4月 21日에 確認함 .  
  3. Heath, Steve (2003). 《Embedded systems design》 . EDN series for design engineers 2板. Newnes. 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.  
  4. Giovino, Bill. “Micro controller.com ? Embedded Systems supersite” .  

外部 링크 [ 編輯 ]

  • (英語) Designing Embedded Hardware John Catsoulis, O'Reilly, May 2005, ISBN   0-596-00755-8 .