[Intel AI SW 아카데미] 임베디드 시스템 기초, GCC 컴파일러

Jimeaning·2024년 2월 8일
0

Intel AIoT

목록 보기
32/38

2024.02.08 (목)

임베디드 시스템

임베디드 시스템이란?

  • 하드웨어와 소프트웨어가 조합되어 특정한 목적을 수행하는 시스템
  • 특정한 기능을 수행하도록 마이크로 프로세서와 입출력 장치를 내장하고, 이를 제어하기 위한 프로그램이 내장되어 있다.
  • 일상생활에서 사용되는 각종 전자기기, 가전제품, 제어장치 등에 사용된다.

임베디드 시스템 응용분야

  • 정보 가전 : 세탁기, 오디오, 인터넷 냉장고, HDTV 등
  • 제어 분야 : 공장 자동화, 가정 자동화, 로봇 제어, 공정 제어 등
  • 정보 단말 : 핸드폰, PDA, 스마트폰, 네비게이션, MP3, PMP, 디지털 카메라 등
  • 네트워크 기기 : 교환기, Router, 공유기, 홈 게이트웨이 등
  • 게임 기기 : 가정용 게임기(PS2, XBox), 지능형 장난감 등
  • 항공/군용 : 비행기, 우주선, 로켓, 야전 이동단말(GPS, GIS)
  • 물류/금융 : ATM, RFID, 물류 단말, 영업 단말 등
  • 차량/교통 : 자동차, ITS 등
  • 사무, 의료 : 전화기, 프린터, Heart pacer, 수술 로봇, 증강현실장비

Ubiquitous Computing이란?

Ubiquitous Computing은 사용자가 네트워크나 컴퓨터를 의식하지 않고 장소에 상관없이 자유롭게 네트워크에 접속할 수 있는 정보통신 환경

임베디드 시스템의 특징

  • 마이크로 프로세서/컨트롤러를 비롯한 하드웨어와 소프트웨어를 내장(embedded)하여 특정한 기능을 수행
  • 수행하는 기능은 미리 정해진다.
  • 소형, 경량, 저전력
  • 가격에 민감하다
  • 안정성이 뛰어나야 한다.
  • Real-time 기능을 필요로 하는 시스템이 많다.

Real-time System

  • 주어진 입력 조건을 주어진 시간 내에 처리하는 시스템
  • 리얼타임 시스템의 종류
    • 하드 리얼타임 시스템
      • 리얼 타임이 보장되지 않으면 시스템에 치명적인 오류를 유발
      • 대부분의 제어용 기기
      • 예) 공장 자동화 등
    • 소프트 리얼타임 시스템
      • 주어진 시간 내에 결과를 출력하지 않아도 시스템 전반에 큰 영향이 없는 시스템
      • 예) 네트워크 장비

임베디드 시스템의 구성

  • 하드웨어
    - 프로세서(컨트롤러), 메모리 장치(ROM, RAM), 입출력 장치(네트워크 장치, 센서, 구동기 등)
  • 소프트웨어
    - 운영체제(OS), 시스템 S/W, 응용 S/W

프로세서

프로세서란?

  • 디지털 시스템의 핵심 부분으로 CPU(Central Processor Unit)라고도 한다.
  • 프로그램을 메모리 장치에서 읽어 연산처리, 비교처리, 데이터 전송, 편집, 변환, 테스트와 분기 등의 데이터 처리와 각종 입출력 장치를 구동시킨다.
  • 제어 장치, 연산 장치, 레지스터와 데이터 버스로 구성된다.

프로세서의 구조

  • 레지스터 (Register)
  • 산술 논리 연산 장치 (ALU : Arithmetic Logic Unit)
  • 제어 장치 (CU : Control Unit)
  • 버스 (BUS)

레지스터

  • 프로세서 내부에서 데이터를 일시적으로 보관하는 기억 장치
    - Flip-flop과 Latch로 구성되어 있다
  • 프로세서 레지스터의 종류
    • 범용 레지스터
      • 프로그램 또는 데이터 처리에 필요한 작업을 수행하기 위해서 사용
    • 제어용 레지스터
      • 프로그램이나 프로세서를 제어
      • 프로그램 카운터(PC) 등
    • 상태 레지스터
      • 프로세서의 상태를 나타낸다.

산술 논리 연산 장치 (ALU)

  • 산술 연산 수행 (덧셈, 뺄셈 등)
  • 논리 연산 수행 (AND, OR 등)
  • 상태 레지스터 또는 flag 레지스터에 연산 결과 기록 (Carry 발생, overflow 발생 등)

제어 장치 (CU)

  • 명령을 해석하고 실행
  • 명령을 읽고 실행하기 위한 내부 데이터 흐름 제어

프로세서 버스

  • 버스
    • 디지털 회로에서 시스템의 여러 장치들을 연결하는 경로
  • 내부 버스 (Internal Bus)
    • 프로세서 내부에서 레지스터와 ALU 사이의 신호를 교환하고 그 결과를 다시 레지스터에 전달하는 경로
  • 외부 버스 (External Bus)
    • 프로세서와 외부의 기억장치 사이, 프로세서와 I/O 장치 사이에 존재한느 버스
    • 외부버스의 구성
      • 데이터 버스(data bus) : 데이터를 외부 장치에 전달하거나 외부 장치로부터 읽어오는 경로
      • 어드레스 버스(address bus) : 프로세서에서 기억장치나 I/O장치의 주소 정보 전송 경로
      • 제어 버스(control bus) : 프로세서에서 기억장치나 I/O 장치에 입출력 동작을 지시하는 제어 신호를 전송하는 경로

프로세서의 종류

  • i386
    • 오랜 기간의 사용으로 안정성 확보
    • PC와 동일한 개발 환경 구성
  • ARM
    • 간단한 명령어를 사용하고 개발 환경이 간단하다.
    • 전력 소모가 작아서 휴대폰이나 PDA 같은 휴대 단말기에 많이 사용한다
  • PowerPC
    • 강력한 네트워크 기능을 포함한 SoC로 널리 알려졌다
  • M68K
    • 네트워크 장비 및 휴대 단말기에서 많이 사용한다
  • MIPS
    • 고속의 처리 능력
    • 고속 네트워크 장비 등에 많이 사용

파이프라인

  • 프로세서로 가는 명령어들의 움직임 또는 명령어를 수행하기 위해 프로세서에 의해 취해진 산술적인 단계가 연속적이고 겹치는 것을 말한다.
  • 파이프라인이 없으면 하나의 명령을 읽어 와서 요구하는 연산을 수행하고, 다음 명령을 메모리에서 가져온다
  • 파이프라인을 사용하면 프로세서가 산술 연산을 수행하는 동안에 다음 명령어를 메모리에서 가져온다

파이프라인의 장점

  • 명령어를 가져오고 실행하는 단계가 끊임없이 계속된다.
  • 주어진 시간 동안에 수행될 수 있는 명령어의 수가 증가한다.

ARM 명령어 파이프라인의 구조

컴파일 직접 실행하기 - GCC

GCC는 GNU Compiler Collection의 약자이다. GNU 프로젝트의 일환으로 개발되어 널리 쓰이고 있는 컴파일러이다.
컴파일러 : 어떤 프로그래밍 언어로 쓰여진 소스파일을 다른 언어로 바꾸어주는 번역기이다.
ex) C언어 코드를 컴퓨터가 이해할 수 있는 기계어로 바꿔주는 것

ubuntu@ubuntu09:~/linuxC/gcc.d$ vi main.c
  1 #include <stdio.h>
  2 #define BUFFSIZE 100
  3 int main(int argc, char *argv[])
  4 {
  5     int i;
  6     char buf[BUFFSIZE];
  7
  8     while(1)
  9     {
 10         printf("Hello World!\n");
 11     }
 12
 13     return 0;
 14 }
ubuntu@ubuntu09:~/linuxC/gcc.d$ gcc main.c -o main -save-temps
ubuntu@ubuntu09:~/linuxC/gcc.d$ ls -l

아래와 같은 결과가 나옴

total 52
-rwxrwxr-x 1 ubuntu ubuntu 16696  2월  8 10:42 main
-rw-rw-r-- 1 ubuntu ubuntu   163  2월  8 10:42 main.c
-rw-rw-r-- 1 ubuntu ubuntu 16389  2월  8 10:42 main.i
-rw-rw-r-- 1 ubuntu ubuntu  1704  2월  8 10:42 main.o
-rw-rw-r-- 1 ubuntu ubuntu   739  2월  8 10:42 main.s

전역변수

  • 전역변수를 초기화하지 않을 시 대부분 0으로 자동 초기화된다.
    이유는 start 파일과 관련이 있다.
profile
I mean

0개의 댓글