1. 강의 진행 방향
- 유튜브에서 무료로 진행. 희망 시 강의료 자율 납부 가능
- 한번에 최대 1시간 정도 진행
- 내용이 남으면 다음 시간에 진행
2. 큰 그림 그리기
- 큰 그림을 그려야 하는 이유
- 개발자는 모든 영역을 다 공부할 순 없어 자기만의 개발에 대한 큰 지도가 있어야 함
- 지도의 뼈대를 세운 후에 연차를 쌓아가며 살을 붙이고 자세히 색칠하는 식으로 발전을 해나가야 함
- 어떤 것이 중요한지 본인 스스로 판단하고 따로 공부를 하여 본인을 발전해나가는 식으로 개발자로써의 역량을 발전시켜야 함
2.1. Embedded 개발의 큰 그림
- 아래의 내용은 임베디드뿐 아니라 모든 분야의 개발자에게 도움이 될만한 내용
1) 전기전자, 양자역학
- 원자 주위를 도는 전자로 인해 전기력 발생 : 이 전기를 인위적으로 발생시켜 컴퓨터 사용
- 즉 전자가 이동할 때 발생하는 에너지를 활용
- 발전소에서 가정으로부터 공급되는 220V 교류 전기를 통해 동작
- 컴퓨터도 깊게 내려가다보면 결국 자연의 법칙에서부터 시작함
2) 반도체, 트랜지스터
- 트랜지스터는 전류가 흐를 때는 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(순차) 처리 방식에 특화
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 (Random Access Memory) : 보조 기억 저장 장치의 Data (OS, 응용 프로그램 등)을 일정량 복사해
- 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보다 상대적으로 빠르고 비쌈
- 위 내용 외의 컴퓨터 구성요소 관련 정보 : https://youngseong.tistory.com/2
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 (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. 부품 조사, 선정
- 부품 수급 원활 여부 확인 및 가격 선정
3. PCB 제작
- 위에서 선정한 목적에 맞는 PCB를 만들어야 함
- PCB(Printed Circuit Board) :
- 이 PCB는 Embedded Hardware 개발자의 영역
- 사용할 Main Chip (Ex) ARM Core), 주변 Sensor, Resistor 등 선정
3.1. PCB 제작 상세 과정
1) 회로도 작성
- 부품들 간의 연결과 동작 방법을 적어놓은 그림
- 부품들 간의 관계를 표현한 것이지 실제로 어떤 제품으로 나올지를 표현한 것이 아님
2) Artwork 작업
- 실제 PCB 상의 부품들의 배치 및 연결을 작성
3) Gerber File 생성
- Gerber File : PCB 판을 만드는 기계가 이해하는 파일
- 위의 PCB를 실제로 찍어내기 위한 설계도
- 기계가 이 Gerber File을 읽어 초록색 기판 위에 Artwork 내용대로 인쇄
4) PCB 제작 업체에 전달 : PCB 제작
5) 부품 구입 진행
6) 부품 실장
- 위와 같은 인두기를 통해 부품을 판 위에 납땜해서 올림
- 실장 : 부품을 PCB에 붙이는 작업
7) PCB 수령
- 강의에 활용할 보드는 위의 작업을 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
https://www.rohm.co.kr/electronics-basics/transistors/tr_what1
https://buttercoconut.xyz/157/
https://www.inflearn.com/course/following-c/dashboard
https://mindstation.tistory.com/152
https://www.intel.co.kr/content/www/kr/ko/products/docs/processors/cpu-vs-gpu.html
'Study_Embedded > [오제이 튜브의 임베디드 실전 강의]' 카테고리의 다른 글
[오제이 튜브의 임베디드 실전 강의] 5강 혼자서 임베디드 고수 되는 법 (0) | 2022.01.24 |
---|---|
[오제이 튜브의 임베디드 실전 강의] 3-1강 개발 환경 구축하기, 4강 Hello!! GPIO!! (2) | 2022.01.08 |
[오제이 튜브의 임베디드 실전 강의] 3강 전기 기본 상식 - 모르면 보드 태워먹는다 (0) | 2021.12.02 |
[오제이 튜브의 임베디드 실전 강의] 2강 실무자는 어떻게 칩을 고르나요? (0) | 2021.11.28 |
[오제이 튜브의 임베디드 실전 강의] OT (0) | 2021.11.27 |