2. Bare Metal Embedded System Programming

윰지·2020년 9월 7일
0

ECU SW Programming

목록 보기
2/10

Bare Metal Programming

  • Bare-metal programming is a term for programming that operates without various layers of abstraction
    -> 하드웨어가 직접 소프트웨어를 건드리면서 돌아가는 시스템
    • Without an operating system
    • Without Libraries(ex. Device drivers)
    • Program interacts with a system at the hardware level
  • C or Assembly language programming with Cross compiler
  • Focused on IO device(Sensors, Actuators) control
  • IO interfacing method + controll engineering
    • Memory mapped I/O(우리가 사용하는 보드)
      • Any machine instruction that can access memory can be used to transfer data to or from an I/O device
        -> CPU가 bus를 통해 입출력장치를 어떻게 access하는지
      • Device와 memory가 address space를 공유한다.
      • I/O는 단지 memory read/write하는 것처럼 보인다.
      • No special commands for I/O Large selection of memory access commands available
    • Isolated I/O
      • address space 분리
      • Need I/O or memory select lines
      • Special commands for I/O
    • Direct Memory Access(DMA)
      • CPU가 해야하는 일을 대신 해주는 subsystem
      • DMA Controller
  • IO technique
    모든 제어프로그램은 I/O device를 핸들링해야 한다. I/O device를 기본적으로 접근하는 방법은 memory mapped이다. 이 방식으로 I/O device에 data를 읽고 쓰고 하면서 device를 제어하는데 그런 방식에서 쓰는 tech가 2가지가 있다. Polling과 interrupt가 있다.
    • Programmed
      • polling : 프로세서가 입출력장치를 체크하는 것
    • Interrupt driven
      • interrupt : 입출력장치에서 data 입출력이 끝나면 CPU에게 interrupt를 날린다. CPU는 interrupt를 받자마자 하던 일 중지하고 데이터 확인

=> 원하는 기능을 하기 위해서는 어느 device에 어떤 register에 어떤 값을 세팅시켜줘야 하는지를 알아야하는데 그것만 알아야하는 것이 아니라 그 device에 그 register의 address까지 알고 있어야한다. 그를 constant로 정의해서 포인터 변수에 지정하고 활용해서 특정값을 세팅하는 것이다.

0개의 댓글