본문 바로가기

Study_Embedded/[오제이 튜브의 임베디드 실전 강의]

[오제이 튜브의 임베디드 실전 강의] 1강 임베디드가 뭔가요?

728x90

1. 강의 진행 방향

  • 유튜브에서 무료로 진행. 희망 시 강의료 자율 납부 가능
  • 한번에 최대 1시간 정도 진행
    • 내용이 남으면 다음 시간에 진행

 

2. 큰 그림 그리기

- 큰 그림을 그려야 하는 이유

  • 개발자는 모든 영역을 다 공부할 순 없어 자기만의 개발에 대한 큰 지도가 있어야 함
    • 지도의 뼈대를 세운 후에 연차를 쌓아가며 살을 붙이고 자세히 색칠하는 식으로 발전을 해나가야 함
  • 어떤 것이 중요한지 본인 스스로 판단하고 따로 공부를 하여 본인을 발전해나가는 식으로 개발자로써의 역량을 발전시켜야 함

 

2.1. Embedded 개발의 큰 그림

  • 아래의 내용은 임베디드뿐 아니라 모든 분야의 개발자에게 도움이 될만한 내용

 

  1) 전기전자, 양자역학

출처 : https://librewiki.net/wiki/%EC%A0%84%EC%9E%90

  • 원자 주위를 도는 전자로 인해 전기력 발생 : 이 전기를 인위적으로 발생시켜 컴퓨터 사용
    • 즉 전자가 이동할 때 발생하는 에너지를 활용
    • 발전소에서 가정으로부터 공급되는 220V 교류 전기를 통해 동작
    • 컴퓨터도 깊게 내려가다보면 결국 자연의 법칙에서부터 시작함

 

  2) 반도체, 트랜지스터

 

트랜지스터의 2가지 기능. 출처 : https://www.rohm.co.kr/electronics-basics/transistors/tr_what1

  • 트랜지스터는 전류가 흐를 때는 1, 아닐 때는 0을 표시하는 Switch 역할을 하는 장치
    • 즉 전기를 이용해 2진수를 표현하는 소자
  • 또한 입력된 Analog 신호를 증폭시키는 Amplifier 역할 또한 할 수 있음

 

  3) 2진수, Bool 대수 

  • Bool 대수 : 논리 연산시 사용 -> 참(1), 거짓(0)의 두가지 값만 가짐
    • Boolean type(1 bit)은 integer type(4~8 byte)에 비해 적은 수의 메모리를 차지
    • 또한 Boolean type을 사용하여 true, false를 나타내면 코드의 가독성을 키울 수 있고, gcc 등의 compiler가 위에서 언급한 더 적은 메모리의 사용으로 인해  boolean type을 사용하는 코드를 더 효과적으로 최적화 할 수 있음
  • true, false 외의 다른 상태를 표시해야 할 때는 integer type 사용이 유리

  4) AND, OR, NOT 등등

  • 위의 0, 1과 AND, OR, NOT 등등의 Gate들을 조합해 CPU를 만듦
    • 최근의 CPU에는 수십억개 이상의 트랜지스터가 들어감

 

3. 컴퓨터 구조 

    A. CPU(Central Processing Unit) : 트랜지스터가 집약되어있는, 컴퓨터에서의 모든 연산을 담당하는 장치

  • 계산에 활용되는 Register까지 포함하여 CPU라 칭함 (Register : Data 임시 저장용 장치)
  • 일반적으로 수십 ~ 수백억개의 트랜지스터들로 구성됨
  • 컴퓨터 및 OS에 필요한 명령과 처리를 담당
  • 명령어가 입력되는 순서대로 Data를 처리하는 Serial(순차) 처리 방식에 특화

 

CPU(왼쪽)과 GPU(오른쪽)의 동작 방

 

    B. GPU(Graphic Processor Unit)

  • Graphic 연산을 빠르게 처리한 후 그 결과값을 Monitor에 출력하는 장치
  • 특정 3D 렌더링 작업 속도 단축을 위해 개발된 ASIC였으나,
    시간이 지나며 범용적인 병렬 프로세서로 발전하여 Deep Learning 등의 다양한 분야에서 활용됨

 

    C. Memory : 주 기억 장치(Primary Storage)

  • CPU가 현재 연산하고 있는 Data들을 저장하는 장치
  • 주 기억장치의 종류로는 RAM, ROM이 있다
    • RAM (Random Access Memory) : 보조 기억 저장 장치의 Data (OS, 응용 프로그램 등)을 일정량 복사해
      임시로 저장한 후 CPU에 빠르게 전달하는 역할
    • 전원을 끄면 Data가 사라지는 휘발성을 지님 (이 방식이 속도가 빨라 사용)
    • ROM (Read Only Memory) 저장된 Data를 읽을수만 있고 새로운 값을 쓸 수 없음
    • 전원을 꺼도 Data가 사라지지 않는 비휘발성을 지님
    • BIOS같은, System에 저장하고 변화시키면 안되는 주요 Data를 저장
  • RAM의 용량이 클수록 보조 기억 저장 장치에서 한번에 RAM으로 올릴 수 있는 Data의 양이 늘어나 다중 작업에 유리
  • 보통 CPU와 Memory는 물리적으로 가까운 위치에서 통신을 통해 서로 Data를 주고 받음

 

    D. 보조 기억 저장 장치 (Auxiliary/Secondary Storage) 

  • 물리적인 Disk가 연결되어있는 기억 장치
  • OS. 응용 프로그램 등이 저장됨
  • 보조 기억 저장 장치의 종류로는 HDD, SSD가 있다
    • HDD (Hard Disk Drive) : 지정된 주소로 핀을 통해 직접 이동하는 기계적 매체
    • 무전원으로 20년 정도 보관 가능 : Archiving(장기간 자료 보관)에 유리
    • SSD (Solid - State Drive) : Flash Memory가 발전된 형태
    • 물리적으로 움직이는 부분이 없으며 HDD보다 상대적으로 빠르고 비쌈

HDD(왼쪽)과 SSD(오른쪽)

 

 

[홍정모의 따라하며 배우는 C언어] 0.1-컴퓨터의 구성 요소들 ~ 0.3 운영체제가 해주는 일들

C언어는 Transistor를 개발한 벨 연구소에서 Unix를 만들다 Assembly로의 개발에 한계를 느껴 개발된 언어C++도 이 연구소에서 개발됨OS(Unix)를 만들던 언어이므로 효율성이 높고, OS의 주요 역할이 HW 제

youngseong.tistory.com

 

4. 주요 용어

  • MPU (Micro Processor Unit) : ALU와 레지스터를 한 칩으로 만든 것. 주로 연산을 처리함
  • ex) Intel Core Processor(CPU) 등의 computing device
    • Raspberry Pi는 SBC(Single Board Computer)
    • 그 안에서 Main Processor 역할을 하는 ARM 기반의 Processor들이 MPU

 

 

MCU. 출처 : https://www.linkedin.com/pulse/microprocessors-unraveling-heart-digital-revolution-logeswaran-s-nrsvc/

  • MCU (Micro Controller Unit) : CPU와 Memory, HDD, 입출력 장치들을 한 칩에 모은 것 ex) Arduino
    • 강의 시에는 STM사의 제품을 활용
    • STM ARM Core : ARM사에서 만든 CPU 설계도를 STM사가 사와 그 설계도대로 Core를 설계하고
      Flash Memory, GPIO등의 주변 장치들을 하나의 칩으로 만든 것
    • ARM은 MCU의 설계도를 그리는 회사
  • 범용 컴퓨터 : 특수한 목적을 가지지 않은 일반적인 PC
    • Raspberry Pi는 범용 컴퓨터에서 코딩하는 느낌이 드므로 임베디드 공부에는 추천하지 않음
    • 생략할 수 있는 임베디드적 요소들이 많음. 라즈베리파이는 OS 설치가 가능

 

5. Embedded가 차지하는 영역

- 임베디드 시스템 (Embedded System)

  • 어떤 특수한 작업에 특화되어있는 장치
    • Ex) 온도 측정, 체중 측정 후 Server에 전달
  • 어떤 제품안에 특정한 기능을 수행하기 위해 포함된 시스템 
  • 컴퓨터의 하드웨어와 소프트웨어가 조합되어 특정한 목적을 수행
  • 시스템을 하드웨어로 구현하면 수정 / 업그레이드가 어려우므로 주로 소프트웨어로 구현
  • MPU에서 특정 기능을 수행하는 소프트웨어 : 임베디드 소프트웨어
  • 가전제품, 교통카드 단말기, 공장 자동화 시스템, 비행기, IOT기기 등의 여러 분야에 사용됨

 

- 임베디드 개발자와 타 개발자의 차이

  • Web/ AI Programming 등은 범용 컴퓨터에서 동작하는 Program을 만듦
    • OS - Operating System, 즉 운영체제가 있는 환경
  • Embedded Programming은 특수한 목적을 가진 기계에서 동작하는 Program을 만듦
    • 코드 작성 -> Compile -> 기계에 코드를 올림
  • 임베디드 개발자는 OS가 없는 환경에서 동작할 Program을 개발
    • 가끔 OS까지 구현해야 하는 경우도 있다

 

6. 제품이 나오기까지의 과정

1. 기획

  • 개발할 제품 선정

2. 부품 조사, 선정

  • 부품 수급 원활 여부 확인 및 가격 선정

 

PCB. 출처 : https://en.wikipedia.org/wiki/Printed_circuit_board

3. PCB 제작

  • 위에서 선정한 목적에 맞는 PCB를 만들어야 함
  • PCB(Printed Circuit Board) 
    • 이 PCB는 Embedded Hardware 개발자의 영역
    • 사용할 Main Chip (Ex) ARM Core), 주변 Sensor, Resistor 등 선정

3.1. PCB 제작 상세 과정

회로도. 출처 : https://ko.wikipedia.org/wiki/%ED%9A%8C%EB%A1%9C%EB%8F%84

  1) 회로도 작성

  • 부품들 간의 연결과 동작 방법을 적어놓은 그림
  • 부품들 간의 관계를 표현한 것이지 실제로 어떤 제품으로 나올지를 표현한 것이 아님

회로도. 부품들 간의 관계를 표현

  2) Artwork 작업

  • 실제 PCB 상의 부품들의 배치 및 연결을 작성

Artwork. PCB 상 실제 배치와 연결을 나타냄

  3) Gerber File 생성

PCB. 출처 : https://en.wikipedia.org/wiki/Printed_circuit_board

  • Gerber File : PCB 판을 만드는 기계가 이해하는 파일
    • 위의 PCB를 실제로 찍어내기 위한 설계도
  • 기계가 이 Gerber File을 읽어 초록색 기판 위에 Artwork 내용대로 인쇄

  4) PCB 제작 업체에 전달 : PCB 제작

 

  5) 부품 구입 진행

 

  6) 부품 실장 

인두기. 출처 : https://m.navimro.com/g/56252

  • 위와 같은 인두기를 통해 부품을 판 위에 납땜해서 올림
    • 실장 : 부품을 PCB에 붙이는 작업

  7) PCB 수령

 

강의에 활용할 STM32F103C8T6 보드. 출처 : https://vctec.co.kr/product/stm32f103c8t6-%EA%B0%9C%EB%B0%9C%EB%B3%B4%EB%93%9C-stm32f103c8t6-board/20912/

  • 강의에 활용할 보드는 위의 작업을 Hareware 개발자가 다 한 제품
    • 가운데 있는게 Main Chip
  • 우리는 이 보드 위에 Programming을 함

8) 기본 Test

  • 동작 여부, Short 발생 여부 등 확인
  • 잘못된게 있으면 점퍼를 뜀
    • 잘못된 부분을 피해 연결

  9) Software올려 Test

  • 단순한 문자열 출력 등을 통해 Test

 

  10) 특정 부품 호환 Test

  • 통신해야 할 여러 Sensor 등 과의 정상 통신 여부 확인
  • 시간이 꽤 걸리고 쉽지 않은 작업
  • 이 과정에서 Software만의 결함이 아닌 Hardware의 결함으로 인해 문제가 발생할 수도 있음
    • 따라서 Embedded 개발자는 H/W를 어느정도 볼 줄 알고 간단한 H/W Debugging도 할 줄 알아야 함

 

4. 완전한 Program 구현

  • 강의에서 시작하는 부분
    • 강의 시에는 위의 과정들이 완료된 개발 Board에 Programming을 진행
    • 완전한 Program을 구현해 올리기만 하면 됨
  • 대부분의 Embedded 교육이 이 과정에서부터 시작
    • 위의 과정은 돈이 많이 듦 : 실무를 통해 배울 수 있음
    • 제대로 된 Embedded 공부에 취직이 가장 적합한 이유

 

 

 


위 내용의 모든 출처는 유튜버 '[오제이 튜브]OJ Tube' 님께 있습니다.

 

https://www.youtube.com/watch?v=hB5CafwlJLg&list=PLz--ENLG_8TNjRg1OtyFBvUyV4PHaKwmu&index=2 

 

 

참고 자료 : 

https://librewiki.net/wiki/%EC%A0%84%EC%9E%90

 

전자

전자(電子, 영어: electron 일렉트론)는 기본 입자의 하나로, 양성자, 중성자로 구성된 원자핵과 함께 원자를 구성하는 입자이다. 음(-)전하를 띠며, 전하량의 크기는 양성자와 같다. 전기라는 현상

librewiki.net

 

https://www.rohm.co.kr/electronics-basics/transistors/tr_what1

 

트랜지스터 히스토리:전자 기초 지식 | 로옴 주식회사 - ROHM Semiconductor

트랜지스터는 크게 NPN형과 PNP형의 2종류로 분류할 수 있습니다. 오른쪽 그림과 같이, 회로 상에서 콜렉터 단자측으로 전류가 입력되는지, 출력되는지에 따라 분류합니다. 입력 신호에 따라 스위

www.rohm.co.kr

 

https://buttercoconut.xyz/157/

 

간단하게 보는 CPU와 GPU의 연산 차이 - Coconut

이번에는 요근래 하드웨어들의 스펙이 급등하면서 생기는 현상 중 병렬 프로그래밍의 본좌인 GPU와 그에 비교되는 CPU의 차이를 예전에 만들었던 PPT를 참고하여 글을 써보았습니다. 일단 기본적

buttercoconut.xyz

 

https://www.inflearn.com/course/following-c/dashboard

 

홍정모의 따라하며 배우는 C언어 강의 | 홍정모 - 인프런

홍정모 | '따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 프로그래밍 인생, 한 단계 업그

www.inflearn.com

 

https://mindstation.tistory.com/152

 

컴퓨터 주기억장치 & 보조기억장치 란...무엇인가

컴퓨터에 있어 기억장치는 필요한 정보를 보관하고, 저장하는 매우 중요한 장치 중 하나 입니다. CPU의 저장장치 레지스터가 있고, CPU의 명령이나, 자료를 일시적으로 저장하는 캐시가 있습니다.

mindstation.tistory.com

 

https://www.intel.co.kr/content/www/kr/ko/products/docs/processors/cpu-vs-gpu.html

 

CPU와 GPU 비교: 차이점은 무엇입니까?

CPU와 GPU의 차이점을 살펴보고 딥 러닝 및 AI를 가속하는 각각의 사용 사례와 아키텍처 이점 및 역할을 알아보십시오.

www.intel.co.kr