임베디드 시스템
- 범용 컴퓨터와 동일한 구조
- 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 회로에 필요한 제어 신호 생성, 명령어 디코더 포함
주요 레지스터
- 프로그램 카운터 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. 응용 프로그램
- 시스템 구체적인 구닝을 구현한 프로그램
- 시스템 사용 목적에 맞춰 최적화 되어야 함
- 적절한 라이브러리 선택하여 개발시간과 비용 절약필요
'컴퓨터과학 > 임베디드' 카테고리의 다른 글
ARM을 활용한 임베디드 시스템 설계 6 - 레지스터 (0) | 2020.05.04 |
---|---|
ARM을 활용한 임베디드 시스템 설계 5 - 메모리 (0) | 2020.05.03 |
ARM을 활용한 임베디드 시스템 설계 4 - ARM 프로세서 구조 (0) | 2020.05.03 |
ARM을 활용한 임베디드 시스템 설계 3 - 개발 (0) | 2020.05.03 |
ARM을 활용한 임베디드 시스템 설계 1 - 개요 (0) | 2020.05.03 |