728x90

임베디드 시스템

- 범용 컴퓨터와 동일한 구조

- HW/SW 구성요소 특징 분석 -> 설계 비용과 시간 등 예측 -> 최적화 작업

- HW, SW를 설계 초기 단계서 부터 같이 고려 필요

임베디드 하드웨어 구성

- Microprocess : cpu 내장하여 데이터 처리

- memory : 데이터 저장

- I/O Device :  입출력 수행하는 주변장치 peripheral로 외부 인터페이스 제공, 특정 기능 수행하는 전용 하드웨어 포함

- HW가 PCB판에 실장 -> embeded system platform

 

임베디드 소프트웨어 구성

- 초기화 코드 : 시스템 초기화 프로그램

- OS : 시스템/슬팽 프로그램 자원 관리

- 라이브러리 : 공용 프로그램 패키지

-> 응용 소프트웨어 : 임베디드 시스템 결정, 시스템 구현하고자하는 특정 용도 프로그램 

=> 메모리에 저장 => 마이크로 프로세서 cpu에서 실행

 

임베디드/범용 유사점

- 프로세서 내장 -> 동일 구조 : 프로세서, 메모리, 입출력 장치 구성

- 하드웨어 성능 향상 + 소프트웨어 유연성 -> 성능,유연 고려한 공조 설계 가능

- SW 사용 -> 시스템 설계, 시간 단축, 업그레이드 용이

 

임베디드와 범용 차이점

- 특정 분야에 최적화 -> 범용성 저하

- 최적화를 통한 성능 향상 -> 시스템 유연성 감소

 

임베디드 하드웨어

1. 마이크로프로세서

- 컴퓨터 동작에 필요한 연산과 제어를 실행하는 하드웨어 -> 단일칩

- CPU + 소용량 메모리 + 필수 입출력 장치로 구성 -> 간단한 시스템 구현 가능

- 외부에 추가적인 메모리와 입출력 장치 더해서 컴퓨터 시스템 구현

 

마이크로 프로세서 내부 CPU

- ALU, 레지스터, 제어 유닛으로 구성

- ALU : 산술 연산, 논리연산, 쉬프트 연산 수행

- 레지스터 : ALU 연산 값 일시 저장

- 제어 유닛 : CPU 회로에 필요한 제어 신호 생성, 명령어 디코더 포함

컴퓨터, 마이크로 프로세서, CPU

주요 레지스터

- 프로그램 카운터 PC : 다음에 실행할 명령어가 저장된 메모리 주소 값, PC 변경하여 프로그램 실행 흐름 제어

- 명령어 레지스터 : 메모리로부터 읽은 명령어 저장. 명령어 레지스터에 저장 -> 제어 신호 생성

- 상태 레지스터 : 연산 결과에 대한 플래그 및 제어 정보 저장, CPU 연산 결과를 검사하여 플래그 형태로 저장 

  * 연산 결과가 0일때 -> 제로 플레그, 표현 범위를 넘길때 -> 오버플로우 플래그

  * 제어정보도 포함 : 인터럽트 활성화 비트

- 스텍 포인터 : 스텍의 데이터 저장 위치 저장 -> 스텍으로 사용하는 메모리 주소값 가리킴.

 * 스텍 : 프로그램 실행에서 중요한 메모리 영역, 임시 데이터 전달이나 함수 파라미터 전달 장소로 활용

 

2. 메모리

- 프로그램과 데이터 저장하는 디바이스

- 프로그램 메모리 : 프로그램 코드 저장

- 데이터 메모리 : 프로그램 실행과 관련된 데이터 저장하는 메모리

- 온칩메모리(마이크로 프로세서 내부) + 오프칩 메모리(마이크로 프로세서 외부) = 시스템 전체 메모리

 

메모리 보관 방식에 따라 분류

- 휘발성 : 전원 중지시 저장 데이터 회손. 데이터 임시 저장 장소. SDRAM

  -> 프로그램에 사용되는 데이터 저장

- 비휘발성 : 훼손되지 않고 정보 유지. 프로그램 코드/영구적 저장하는 데이터의 저장장소. 플래시메모리

  -> 프로그램 저장. 보존되어야 할 데이터나 다음에 반영해야하는 데이터도 저장

 

임베디드 메모리

- 가격은 비싸나 크기 작고, 가볍고, 전력 적고, 소음/발열없는 플래시 메모리 주로 사용

- 설계 목표 : 메모리 접근 시작을 줄이고 용량을 키워야 함

- ALU에 가까울수록 고속 메모리, 멀어질 수록 대용량 메모리를 계층적 사용 -> 최적 메모리 설계

- 여러 프로그램 사용시 한 메모리를 공동 사용. 각 프로그램은 물리 메모리를 자신혼자쓰는것 처럼 실행

  -> 가상 메모리

- 메모리 보호작업 : 메모리 공간을 타 프로그램의 불법적 접근 방지 -> 독립적 실행과 보안성 보장

- 가상 메모리 + 메모리 보호 작업 -> 하드웨어 자원으로 운영체제의 소프트웨어에서 수행

 

3. 입출력 장치

- CPU 계산 부담을 줄이기 위해 하드웨어 주변장치라 불림

- 특정 기능을 하드웨어로 구성 -> 마이크로 프로세서 처리 성능 향상

- 마이크로 프로세서 내부에 포함(on-chip 디바이스)

- 외부에 ASIC 형태로 추가하여 (off-chip 디바이스) 마이크로 프로세서에 연결 사용

- 오브칩 구현 : 프로세서 보드와 별도로 입출력 장치 보드를 추가하여 사용

 

입출력 장치 형태

- 메모리 보호 작업 : 범용 입출력장치, 타이머, ADC, USART 등

- 부가기능 입출력 장치 : 이더넷 컨트롤러, 오디오 컨트롤러, USB 컨트롤러 등

 

4. 마이크로 프로세서 기본 기능

- 프로그램 : 특정 작업을 위한 명령들을 논리적 순서로 배열. 메모리에 저장됨.

- 프로그램 메모리에 저장된 프로그램 실행

- 결과를 데이터 메모리에 저장하거나 출력장치를 통해 외부로 출력

- 프로그램에 포함된 명령들을 정해진순서로 실행

 

명령어 실행 절차

- instruction fetch : 메모리에서 명령어를 읽어와 제어 유닛 명령 레지스터에 저장

- instruction decoding : 제어 유닛에서 명령어 디코더로 명령어를 해석하여 제어 신호를 생성

- data fetching : 명령 실행에 필요한 데이터를 데이터 메모리나 레지스터 등 데이터 저장 장소에서 가져옴

- data processing : ALU에서 데이터 처리

- result storing, write back : 결과를 레지스터나 데이터 메모리에 저장

 

마이크로 프로세서 명령 실행 흐름(기본 동작)

- 프로그램 메모리에서 명령어 읽음

- PC가 명령 주소값 가짐

- 명령어 레지스터에 명령어 저장

- 명령어 디코더가 번역

- 제어 신호 출력

- 데이터 필요 시 읽어옴

- 읽은 데이터로 ALU 연산/작업수행

- 레지스터/메모리 저장

5. 마이크로 프로세서 분류

- 데이터 처리 단위 : 4비트, 8비트, 16비트, 32비트 등

- 명령어 구조

    RISC Reduced Introduction Set Computer : 명령어 구조가 간단. 동일 작업에 간단한 여러 명령어 사용

    CISC Complext Introduction Set Computer : 명령어 구조가 복잡. 동일 작업에 복잡한 명령어 적은수 사용

- 메모리 연결 방식 : CPU와 메모리 연결 형태

     폰노이만 구조 : 프로그램과 데이터 입출력 경로가 동일

     하버드 구조 : 프로그램과 데이터 입출력 경로가 분리

- 사용 용도

   MCU Micro Controller Unit : 제어용 프로세서, 비트 단위 연산 명령어가 다양하고, 인터럽트가 빠르게 처리

   ASP Application Service Procsessor : 특정 용도에 최적화된 프로세서 -> 그래픽, 자바, 네트워크, 크립토 프로세서 등

   MPU Micro Processing Unit : 계산용 프로세서, 고성능 ALU 여러개 보유 -> 고속 계산 가능

   DSP Digital Signal Processor : 디지털 신호 처리 전용 프로세서

                                           MAC(음성/영상 데이터 처리) + FPU(부동수소수점 연산기)로 구성

   임베디드 프로세서 : 소형, 저소비 전력에 최적화 된 프로세서

 

6. 상용 마이크로 프로세서

 32 비트

  - 인텔 x86 프로세서 : 인텔 범용 컴퓨터용 프로세서. 소형화와 소비전력을 줄여 임베디드 프로세서로 사용되기도함

  - ARM 프로세서 : 임베디드 프로세서 시장 점유율이 높음. 소비전력이 작으나 높은 성능 대부분 모바일 장치서 사용

  8 비트

   - 현재 임베디드 시스템은 32비트 프로세서가 주로쓰나 8비트도 수요가 유지됨

   - PIC 프로세서, AVR 프로세서, 8051 프로세서 : 구조가 간단, 가격대비 성능 우수 -> 소형 디지털 시스템과 간단제어

   - DSP : TI사의 TMS 시리즈. 시장에서 쓰이는 대부분의 DSP 프로세서

 

임베디드 소프트웨어

1. 초기화 코드

2. 운영체제

3. 라이브러리

4. 응용 프로그램

 

1. 초기화 코드

초기화 코드

- 주로 하드웨어 초기화 작업을 실행하는 프로그램

- 스타트업 프로그램, 부트코드, 부트로더라 불림

 

초기화 코드

- 어셈블리 코드로 됨 -> 직접 응용프로그램/운영체제 실행하여 실행환경 구축

- 하드웨어와 밀접하게 관련됨. 하드웨어 설계 완료 후 HW에 적합하도록 기존 초기화 코드 수정 작업 필요

- 위치 :  임베디드 시스템 메모리 하위번지에 위치

- 기능 : 하드웨어 자가진단 및 초기화, 운영체제 구동에 필요한 시스템 파라미터 설정, 운영체제 메모리 로딩 후 실행

 

대표적인 초기화 코드

- 범용 리눅스 부트로더 : LILO, GRUB 등

- 임베디드용 부트로더 : blob, U-Boot, Bootlr, ARMBoot 등

 

2. 운영 체제

임베디드 소프트웨어 구현 방법

- 순차적 프로그램 : 단순하고 순차적 기능 구현 -> 초기 임베디드 시스템에 많이 쓰임

- 운영체제 : 멀티태스킹, 멀티프로그램실행, 네트워크, 멀티미디어 제어

 

초기 임베디드 시스템 : 순차적 프로그램 방식 구현, 입출력 장치의 이벤트 처리 요청 ->예외처리로 실시간 처리

임베디드 발전 : 내부기능, 사용자외부와 인터페이스 다양/복잡 -> 순차적 처리 방법 한계 -> 운영체제 사용

운영체제 기반

- 다양한 입출력 장치 수용, 효율적 관리

- 시스템 동작 안정성 향상

- 실시간 요구 충족

- 개발 시간 단축 및 편한 유지보수

 

무료 : 원가 절감 -> 리눅스 : 실시간 성 향상 노력, 안전 보안 지속 개선 -> 많이 활용

상용 : 실시간성과 원활한 기술 지원

자체 개발 : 회사에서 자체 필요로 개발

 

3. 라이브러리

- 응용 프로그램들에서 공통적으로 사용되는 프로그램 모듈들의 집합

- 멀티미디어, 그래픽 처리, 데이터베이스, 웹서비스, 사용자 인터페이스 - 응용프로그램 개발에 많이 쓰임

-> 운영체제와 응용프로그램 사이에있어 미들웨어 라고도 함.

- 잘 정의된 프로그램을 재사용하여 개발시간과 비용 절약 가능. 오픈소스로 공개됨

 

4. 응용 프로그램

- 시스템 구체적인 구닝을 구현한 프로그램

- 시스템 사용 목적에 맞춰 최적화 되어야 함

- 적절한 라이브러리 선택하여 개발시간과 비용 절약필요

300x250

+ Recent posts