블로그 이미지
No pain, no gain!
lepoussin

Tag

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
  • total
  • today
  • yesterday
04-24 22:27
1. 데이터 처리 명령
  1) operand(ALU에서 데이터를 처리할때 사용되는 값)는 레지스터 또는 명령어 내에 포함되어있는 이미디어트(Immediate) 상수만을 사용할 수 있음(직접 메모리 내에 포함되어 있는 데이터를 사용하거나 그 결과를 메모리에 직접 저장할 수 없음)
  2) Load/Store : LDR/STR 명령 사용
    ex) LDR R0, [R4, R5]
    ex) STR R0, [R4, R5]

2. ARM 명령어의 처리 과정과 파이프라인
  1) ARM 명령어 처리 과정 : FETCH → DECODE → EXECUTE → MEMORY → WRITE
    ① FETCH : 명령어 패치
    ② DECODE : 디코드, Reg Select, Reg Read
    ③ EXECUTE : Shift, ALU 연산
    ④ MEMORY : 메모리 액세스
    ⑤ WRITE : 레지스터에 기록
posted by lepoussin
1. ARM
  - 비교적 간단한 개발환경, 간단한 명령어 사용, 적은 전력소모
  - 32비트 RISC 프로세서

2. ARM 아키텍처와 ARM 프로세서
  - v4 : TARM7TDMI, ARM720T, ARM940T, ARM920T, ARM922T
  - v5TE : ARM946E-S, ARM926E-S, XScale
  - v5TEJ : ARM926EJ-S
  - v6 : ARM1136JF-S
  ※ T(16bit Thumb 명령 지원), E(DSP 기능이 확장), J(JAVA 명령 지원), S(합성이 가능한 프로세서)

3. Programmer's 모델
  - 프로그램머가 프로그램을 작성하느데 필요한 각종 정보
  - ARM의 아키텍처를 구분하는 기준
  1) 명령어 : 32bit ARM 명령, 16비트 Thumb 명령(, JAVA 바이트 명령)
  2) 동작모드 : USER(사용자 애플리케이션), IRQ(인터럽트), FIQ(인터럽트), SVC(커널이나 디바이스 드라이브), ABORT(메모리 오류 처리), UNDEF(잘못된 명령어 처리), SYSTEM
  3) 레지스터 : 32bit 길이의 레지스터 총 37개 가짐 - 범용 레지스터 30개(데이터 연산 등), PC 1개, 상태 레지스터 6개
    - ARM 명령 : PC 1개를 포함한 모두 16개의 레지스터를 이용하여 처리(R0~R15(PC) 키워드 부여)
  4) 메모리 구조
    - 읽기/쓰기 : 바이트, 하프워드, 워드 크기로 이루어짐
    - Big-endian, Little-endian을 모두 제어(외부핀 이용)
  5) 예외처리
    - 정상적으로 진행되는 프로그램의 동작을 잠시 멈추고 프로세서의 동작모드를 변환하고 미리 정해진 프로그램을 이용하여 외부의 요청이나 오류에 대한 처리
    - 7가지 정의된 예외처리 : Reset, Undefined Instruction, Software Interrupt, Prefetch Abort, Data Abort, IRQ(Interrupt Request), FIQ(Fast Interrupt Request)
 
posted by lepoussin

* 어떤 용도로 어떤 기능을 갖는 시스템인지 또한 어느 정도의 성능을 가져야 하는지를 먼저 분석

1. 임베디드 하드웨어의 설계
  1) 프로세서 선정
    - ARM : 간단한 명령어 사용, 개발 환경 용이, 적은 전력 소모, 보통 휴대 단말기에 사용
    - MIPS : 고속 처리, 고속 네트워크 장비 등에 많이 사용
    - i386 : 안전성 확보, PC와 동일한 개발 환경
    - Power PC : 강력한 네트워크 기능을 포함한 SoC
  2) 메모리 선정
    - 코드 및 데이터 저장용 메모리(ROM) : EEPROM(소용량), NOR 플래시(저용량), NAND 플래시(고용량)
    - 프로그램의 구동 중에 사용되는 메모리 : SDRAM(많이 사용)
  3) 주변 장치 선정 : 개발할려는 시스템의 용도와 특성에 맞게 주변 장치를 선정 ex) 휴대폰 : LCD 제어기, 터치 제어기
  4) 회로도 설계
    - 선정된 여러 하드웨어를 논리적으로 서로 연결한 도면을 그리는 작업
    - 툴(Tool)을 이용하여 설계 ex) OrCAD, PowerLogic, Mentor, PCAD, CADSTAR, CSiEDA5 등
  5) PCB 설계
    - 설계한 회로도를 바탕으로 실제 부품을 배치하고 각 신호를 물리적으로 연결하는 작업
    - 툴을 이용하여 설계 ex) PowerPCB등
  6) 하드웨어 조립 및 시험

2. 임베디드 소프트웨어 설계
  1) 소프트웨어 사양 결정
  2) 임베디드 운영체제 : 시스템의 기능이 복잡해지고 여러가지 일을 동시에 처리하기 위해 사용
    - RTOS : Hard RTOS, Soft RTOS - 실시간 처리가 보장되지 않을 시 시스템에 대한 영향 정도에 따라 구분
      ⑴ 주어진 입력 조건을 이용하여 한계 시간 내에 처리하여 결과를 얻어내야만 하는 경우
      ⑵ 멀티쓰레드(Multi-thread)와 선점성(preemptive) 지원, 시간 제약성과 신뢰성 중요
    - Non-RTOS : 선점성 지원 안함. but, 멀티프로세싱은 지원
  3) 운영체제와 커널 포팅
    - 커널 포팅(이식) : 선정된 운영체제의 커널이 개발할려는 시스템에서 동작할 수 있도록 운영체제의 각종 기능 처리 등을 구현하여 운영체제의 스케쥴러가 정상적으로 동작할 수 있도록 하는 과정
  4) 디바이스 드라이버 포팅
    - 디바이스(Device) : 입출력 장치
    - 디바이스 드라이버 : 디바이스 제어, 정형화된 인터페이스 제공
  5) 애플리케이션 개발

3. 임베디드 소프트웨어 개발환경
  1) 교차(Cross) 개발환경
    ※ 네이티브(Native) 컴파일러 : 개인용 PC에서 동작하는 프로그램을 PC에서 동작하는 컴파일러를 이용하여 개발하여 실행
    - 호스트(HOST) 시스템 : 개발환경을 가지고 있는 PC
    - 타깃(TARGET) 시스템 : 개발하고자 하는 제품
    - IDE(Integraded Development Environment) 활용
  2) 디버그 인터페이스
    - 디버깅 : 타깃 시스템을 실행하면서 프로그램의 실행 상태, 메모리, 변수 등을 프로그래머가 확인하거나 제어하면서 오류를 찾아 수정하는 동작
    - ICE 장비, 디버거 사용

posted by lepoussin
1. 시스템 버스
  - 데이터 버스(data bus)
  - 어드레스 버스(address bus)
  - 제어 버스(control bus)
  1) 마스터(Master) : 데이터를 요구하는 구동 주체 ex) DMA 제어기
  2) 슬레이브(Slave) : 이에 응답하는 메모리나 입출력 장치

2. 폰노이만 버스 구조
  - 명령어와 데이터를 위한 메모리 인터페이스가 하나만 존재하는 구조
  - 명령어를 읽을 때 데이터를 읽거나 쓸 수 없다.
  - 버스 구조가 단순하여 하드웨어 설계하기 편함
  - ex) 대부분의 IBM 계열, ARM7 등

3. 하버드 버스 구조
  - 명령어와 데이터를 위한 메모리 인터페이스가 분리된 구조
  - 명령어를 읽을 때도 데이터를 읽거나 쓸 수 있고, 데이터를 읽고 쓰는 동안에도 명령을 읽을 수 있다.
  - 폰노이만 버스 구조보다 성능이 우수하지만 버스 구조가 복잡하여 하드웨어 설계하기에는 어려움
  - ex) 대부분의 ARM9, ARM10, ARM11, XScale 등
posted by lepoussin
1. 입출력 장치 제어
  1) I/O 맵 방식(I/O-mapped peripheral)
    - 입출력 장치 전용의 주소 공간을 확보
    - in 또는 out과 같은 별도의 명령 사용
  2) 메모리 맵 방식(Memory mapped peripheral)
    - 메모리의 일부를 입출력 장치 공간으로 할당
    - 주의사항 : I/O 영역 변수는 volatile 타입으로 선언, I/O 영역은 Non-cacheable로 설정

2. 입출력 장치의 자원관리
  - 입출력 장치로 입력 또는 출력 되는 데이터를 프로세서와 메모리 사이에 주고 받는 방법
  1) 폴링(Polling) 방식 : 프로세서가 하나의 프로그램이나 장치들이 어떤 상태에 있는지를 지속적으로 검사하는 방식
  2) 인터럽트 : 외부의 입출력 장치에서 프로세서에게 처리를 요청하면 프로세서는 현재 처리하고 있는 프로그램
을 일시적으로 멈추고 입출력 처리하는 방식
    - 프로세서는  한 번에 한 개의 명령만을 수행 → 모든 작업이 동시에 수행되는 것처럼 보이게 할 수 있음(멀티태스킹)
    - 인터럽트 제어기 : 여러 개의 입출력 장치로부터 구동되는 인터럽트를 효과적으로 처리하기 위한 장치
      ⑴ 마스크(Mask) 레지스터 : 여러 입출력 장치의 인터럽트에 대한 사용여부를 제어위한 레지스터
      ⑵ 펜딩(Pending) 레지스터 : 어떤 인터럽트가 발생되었는지를 저장
      ⑶ 과정
        ① 마스크 레지스터에 의하여 사용하도록 설정된 인터럽트 중 하나라도 인터럽트가 발생하면 프로세서로 인터럽트 요청 신호(IRQ)가 구동
        ② 프로세서는 인터럽트를 인지하여 처리하기 전에 펜딩 레지스터를 검사하여 발생된 인터럽트 중 우선순위가 가장 높은 인터럽트를 처리
    - 모든 인터럽트 발생은 프로세스에 하드웨어적으로 알려짐
    - 인터럽트 발생 시, 사용자 프로그램의 개입없이 정해진 절차에 의해서 정해진 위치에 있는 명령이나 주소정보를 이용하여 실제 인터럽트를 서비스 하는 절차(ISR : Interrupt Service Routine)가 있는 위치로 분기한 다음 발생된 인터럽트의 처리 여부를 결정하고 해당 입출력 동작 수행
    - 인터럽트 벡터(Vector) : 인터럽트 발생시 프로세서가 처리하기 위한 명령 또는 주소가 저장된 공간
      ⑴ 고정 인터럽트 방식(Fixed Interrupt) : 인터럽트가 발생하면 처리할 주소가 고정
      ⑵ 벡터 인터럽트 방식(Vectored Interrupt) : 주변 장치가 인터럽트를 처리할 주소를 제공하는 방식으로 서로 다른 벡터 주소를 가짐
  3) DMA(Direct Memory Access) : 프로세서의 개입 없이 입출력 장치와 기억장치 사이에 데이터를 전송하는 방식
    - 프로세서 → DMA 제어기 : 전송할 데이터가 저장된 주기억 장치의 시작 주소, 입출력 장치의 주소, 전송할 데이터의 크기 및 제어 정보
    - DMA 제어기 : 프로세서나 다른 버스 마스터가 주기억장치를 액세스하지 않는 동안에 시스템 버스를 사용하여 데이터를 전송하는 제어기
   
posted by lepoussin