베어메탈 프로그래밍 이란

베어 메탈(Bare metal) 프로그래밍이란?

Bare-metal programming is a term for programming that operates without various layers of abstraction

(운영체제와 같은 기본 추상화가 없는 하드웨어 환경, 보통 하나의 무한루프로 실행되는 펌웨어를 만듦)

베어 메탈의 특징

  • OS (Operating System) 사용하지 않음
  • 라이브러리 사용하지 않음
  • 프로그램은 하드웨어 바로 위에 얹어져 있다.

image

  • 주로 C언어 혹은 어셈블리어를 사용해 라이브러리없이 cross compiler만 가지고 프로그래밍한다.
  • 주요 목적 : I/O device (sensors, actuator) control

 

I/O interfacing method

  • Memory mapped I/O
    • 디바이스와 메모리가 address space를 공유한다.
    • Input/Output이 memory read/write와 똑같이 동작
    • no special commands for I/O
    • 대부분의 컴퓨터 시스템이 사용하는 방식
  • Isolated I/O
    • 입출력을 위한 별도의 주소공간이 할당되어 있다.
    • special commands for I/O

BUS : Address lines, Data lines, Control lines

I/O technique

  • Programmed (Polling)
    • 상태 레지스터를 계속 감시하다가 상태가 변경되었을 때 값을 읽어들임
    • CPU가 계속해서 검사함
      • 장점 : 코드를 작성하기 편하고 이해하기 쉽다 (소규모에 적합)
      • 단점 : CPU를 점유하는 시간이 증가해 성능이 감소함, 실행시간이 길고 복잡하면 비효율적임
  • Interrupt driven
    • interrupt가 발생하면 값을 읽어와서 처리
    • 변화를 CPU에 통보함
  • Direct Memory Access (DMA)
    • 주변장치들이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능
    • CPU의 개입없이 I/O 장치와 기억장치 사이의 데이터를 전송하는 접근 방식
      • CPU의 효율을 높일 수 있다
      • 프로그램 실행 중 인터럽트의 발생 횟수를 최소화할 수 있다
      • Cache Coherence 문제를 야기할 수 있다

 

Bare Metal Programming은 주소값에 대한 이해가 중요하다!

Tags: ,

Categories:

Updated: