0. 큰 그림을 반드시 그려야 하는 이유
- 큰 그림 : 나만의 개념을 잡고 그 개념들이 조각조각 분산되어 있는 것이 아니라 서로 연결되어 있는 것을 의미
- 큰 그림을 그릴 줄 알면 다양한 문제점을 만나더라도 쉽게 해결을 할 수 있음
- Ex 1) NPM, PIP, Apt-get, 마켓 플레이스
- 모두 어떤 프로그램을 저장소에서 다운받을 수 있는 기능 -> 이 개념을 잡고 있으면 다양한 것을 해결할 수 있음
- 저장소와 관련된 문제 파악 및 해결 가능
- 무엇을 배우던 간에 큰 그림을 그려야 함
- 위와 같은 큰 그림을 머리 속에 하나씩 그려가야 함
- 문제를 만날 때 마다 해결하기가 쉬워짐
- Ex 2) Visual Studio Code와 Visual Studio의 차이점
- 둘 모두 개발 Tool
- 개발 Tool : 메모장 + Compiler + 사용자가 개발하기 편한 기능들
- Visual Studio에는 Compiler가 포함되어 있으나
Visual Studio Code에는 포함되어 있지 않아 별도 설치 및 설정 작업 필요 (JSON을 사용해서 설정 작업)- JSON (Javascript Object Notation) : 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 Data Format
(Data 표현 방법) - Javascript에서 Object를 만들 때 사용하는 표현식을 의미 -> Javascript의 Object 형식을 기반으로 만들어짐
- 사람과 기계 모두 이해하기 쉽고 용량이 작음
- 특정 언어나 플렛폼에 종속되지 않음
- Data를 받아서 객체나 변수로 할당해서 사용하기 위해 씀
- JSON (Javascript Object Notation) : 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 Data Format
- 큰 그림이 있다면 위의 Compiler가 있고 없을 때의 차이점과 사용 방법을 알 수 있다
- C언어로 코드를 짜면 Linux용은 Linux에서만, Windows용은 Windows에서만 동작
-> QT 크로스 플랫폼은 환경에 상관 없이 동작 - Class간 동작은 시그널 슬롯을 사용해야 함
1. Chip 선택 시 고려사항
- 강의에 사용할 Chip은 MCU
- MCU : CPU + Memory + I/O 장치를 하나의 Chip으로 모은 장치
1) 양산 / Sample 여부에 따른 고려사항
A. 양산형
- 단가
- 보통 Arm Core Chip이 저렴함
- 원활 수급 가능 여부
- 안정성(사람들이 많이 사용해봤는가) : Embedded 제품은 한번 나오면 최소 2년 정도는 동작해야 함
- 보통 산업용 Chip을 씀 : 안정성이 보장되고 악조건에서도 잘 견딤
- 조건(용도) 적합 여부 : 성능, 소비 전력(배터리로 돌아가는 제품일 경우 특히 중요) 등
- 구현의 용이성 : Sample Board가 있는가, 만들어진 회로도가 있는가
- 위가 있으면 개발 기간을 단축시킬 수 있고 개발 비용을 절감할 수 있음
B. Sample, 과제용
- 단가보다는 빠르게 구현하는 것이 목표인 경우
- 쉽게 구현할 수 있는가
- Sample Board가 있는가
- Chip 주변의 Module이 구하기 쉬운가
- Main Chip과 함께 어떤 기능을 할 수 있는 Module을 의미
- 모듈(Module) : 독립되어 있는 하나의 소프트웨어 또는 하드웨어 단위
2. Chip 심화 내용 : AVR vs ARM
2.1. AVR(Advanced Virtual Risc)
- Atmel사에서 만든 칩. ARM Core 시대 이전에 주요 Chip
- ROM, EPROM, EEPROM(CPU 동작시 필요한 별도의 저장장치)을 사용하지 않은 최초의 단일 Chip
- 대신 Flash Memory를 사용
- 즉 Flash Memory를 사용한 최초의 MCU
- Flash Memory : EEPROM처럼 전기적으로 data를 저장하고 지울 수 있는 비휘발성 메모리 칩
byte 단위로 data를 처리하는 EEPROM과 달리 block 단위로 data를 처리함 (USB, SSD 형태)- 용량이 크며 읽기/쓰기 속도가 빠르고 내구성이 뛰어나 배터리로 동작하는 장치에서 저장 장치로 주로 사용
- 단 수명이 EEPROM에 비해선 짧음
- 전원 없이 data 보존이 가능하다는 점에서 ROM의 성격을 가지며 읽기/쓰기가 가능하다는 점에서 RAM의 성격을 가짐
- Flash Memory의 종류로는 NOR / NAND Flash Memory가 있다
- NOR Flash Memory : 속도가 빠른 대신 저용량.
ROM과 같은 구조를 가지며 코드 실행에 사용됨. 1byte 단위의 읽기/쓰기 - NOR Flash Memory : 속도는 느리지만 대용량.
Data 저장에 사용되며 요즘 대부분 사용함. HHD처럼 Block 단위의 읽기/쓰기
- NOR Flash Memory : 속도가 빠른 대신 저용량.
- Harvard Architecture, Risc processor 사용
- Harvard Architecture
- Program Memory와 Data Memory를 구분하여 각자의 Memory Bus가 있음
- 또한 CPU가 Instruction과 Data에 동시 접근 가능
- Von Neumann Architecture는 둘이 묶여있다
- Von Neumann Architecture : CPU와 Memory를 최초로 분리시킨 Computer Architecture
- Data Memory와 Program Memory(Instruction)가 한 Bus로 들어가는데, 시간이 지날수록 Program이 복잡해져 Memory에서 병목 현상 발생
- 이를 해결하고자 둘의 Bus를 구분한 Architecture가 Harvard Architecture
- Risc (Reduced Instruction Set Computer)
- 단순하고 적은 개수의 Instruction들로 구성
- 기능을 일일히 명령하며 알려줘야 하므로 Software(Compiler)가 복잡해짐
- Ex) 4 x 4 -> 4를 4번 더하라고 일일히 알려줘야 함
- CPU Instruction의 개수를 줄여 Hardware 구조를 단순하게 만드는 방식
- 모든 명령어들의 길이가 같으므로 처리속도가 빠름
- 단순 명령을 여러번 반복하므로 다수의 레지스터 필요 -> ARM, AVR계열
- Cisc (Complex Instruction Set Computer)
- 복잡하고 기능이 많은 Instruction들로 구성
- Ex) 4 x 4를 한번에 수행 가능
- 하드웨어적으로는 복잡하나 프로그래밍 하기에는 편리 -> Intel의 x86 Series
- x86 architecture는 32bits, x64는 64bits
- x86는 Embedded System에, x64는 Universal Computer에 적합
- ISP(In System Programming) 지원
- PCB상의 MCU에 직접 연결하여 Flash Memory, EEPROM 등을 지우거나 Programming 하는 방법
- AVR chipset 자체에 Flash Memory가 내장되어 있어 별도의 외부 memory 없이 프로그래밍 가능
- SPI, UART 통신 사용
- SPI (Serial Peripheral Interface) : I2C, CAN, UART와 같은 시리얼 통신(직렬 통신) 방식 중 한가지로, MCU, Shift Register, SD카드 등의 소형 주변 장치 사이에 데이터를 전송 하는 프로토콜
- UART (범용 비동기화 송수신기: Universal Asynchronous Receiver/Transmitter) : 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 프로토콜
- C언어에 최적화되게 끔 제작이 되어 C언어 처리를 강력하게 지원
- 대부분 C언어로 임베디드 개발을 하는 원인
- 대표적으로 ATmega128이 있다
- Atmega128 : Atmel 사에서 개발한 8 bits MCU
- 128 : Flash Memory size를 의미(128KB)
- Logic 구성 -> Coding -> Compile -> Debug -> ISP를 통한 Program 삽입
- AVR Studio 사용시 SPI Channel을 통한 Downloader와 JTAG Interface를 통한 2가지 방식의 Debugger가 있다
- JTAG(Joint Test Action Group) : 디지털 회로에서 특정 node의 digital 입출력을 위해 Serial 통신 방식으로 output data를 전송하거나 input data를 수신하는 방식을 의미
- 각 핀들은 1bit의 data를 주변장치와 주고 받음
- CPU는 내부적으로 8bits 단위로 data를 처리하므로 Pin을 8개씩 묶고 A~G 이름을 붙여 사용
- G는 5개만의 Pin을 가짐
- F는 ADC 기능을 함
2.2. ARM(Advanced Risc Machine)
- 32bits MCU로 가격이 싸고 소비 전력이 적고 내장된 주변장치가 많아 동작 속도가 빠름
-> 임베디드 시스템에서 많이 사용- 32 bits : CPU가 한번에 가져올 수 있는 Data의 양
- ARM사에서는 CPU 설계만 하고 타 제조사에 설계 내용을 IP(Intellectual Property Rights. 지적 재산권)형태로 판매
- 각 반도체 회사에서 이 설계를 토대로 만들고 필요한 I/O 기능과 주변 장치들을 추가해서 MCU로 만들어 판매
- 반도체 회사중에 하나가 STM : 강의에서 사용하는 Chip의 회사
- 요즘은 Atmel에서도 ARM Core를 써서 생산함
- ARM은 8bit MCU부터 DSP 시장까지 점령
- DSP(Digital Signal Processor. 디지털 신호 처리 장치) : 디지털 신호 처리를 위해 특별히 제작된 MPU
- 특히 실시간 운영 체제 계산에 사용된다.
- MCU : CPU + Memory + I/O 장치들의 집합
- DSP : MCU의 역할 중 하나에 특화된 장치 (ADC 동작)
- DSP 기능을 사용하기 위해 MCU를 선택
- DSP(Digital Signal Processor. 디지털 신호 처리 장치) : 디지털 신호 처리를 위해 특별히 제작된 MPU
2.2.1. ARM Core의 종류
- A, R, M으로 시리즈가 나뉨
- A(Application) : 고성능. AP(Application Processor)에 사용
- R : 고성능 실시간 처리 목표
- M(Microprocessor 0), L : 저가형. AVR이 이 시리즈보다도 간단함
- Cortex - M3 (32 bits) MPU : 산업 현장에서 자주 사용하는 대표적인 제품
- 강의에서 사용하는 제품
- STM32F103C8T6 / STM32F103VET6 의 2가지 제품군이 있다
- 2005년 Open Flatform (리눅스, 안드로이드, 오락기, 네트워크 장비 등) : Cortex-A
- 고성능에 초점
- 2009년 초 저가형 : Cortex - M0 (8 bits)
- 2010년 부동소수점 연산장치 내장 : Cortex - M4 (32 bits)
- 2012년 초저전력형 : Cortex - M0+ 시리즈
- 핸드폰등에서 실시간 처리, 성능 좋음 : Cortex - M7 (32 bits)
- 숫자가 높을 수록 성능이 좋다
- 반도체 생산 회사들 : STM, Atmel, NXP, TI 등
3. AVR vs ARM
1) Architecture
- AVR : Modified Harvard Architecture
- Pure Harvard Architecture처럼 Program Instruction과 Data를 구분하여 Memory에 저장하기는 하나
특정 명령어를 통해 Program Memory를 Data Memory처럼 접근할 수 있음 - 즉 Program Instruction과 Data의 접근 방식에서 차이를 가짐
- Pure Harvard Architecture처럼 Program Instruction과 Data를 구분하여 Memory에 저장하기는 하나
- ARM : Pure Harvard Architecture
- Pure Harvard Architecture는 program instruction과 data를 완전히 구분하여 각자의 memory bus가 있음
- Instruction fetch나 data 접근 시 서로 건드리지 않음
- Instruction fetch : Instruction이 memory에서 CPU로 넘어가는 과정
- Modified Harvard Architecture도 program instruction과 data를 구분하여 memory에 저장하기는 하나 특정 명령어를 통해 Program memory를 data memory처럼 접근할 수 있음
- 즉 둘은 Program Instruction과 Data의 접근 방식에서 차이를 가짐
2) Size
- AVR : 8~16bits(보통 data path로 8bits 사용)
- ARM : 8, 32, 64bits(주로 32, 64bits 사용)
3) Applied Area
- AVR : Real Time Control이나 Power Efficiency가 중요한 분야
- Architecture나 execution이 비교적 단순하여 저전력 소모
- ARM : 확장성을 가져 Mobile 장치부터 서버까지 다양한 분야에 활용
- Cortex - M : 저전력. 주로 MCU에서 사용됨
- AVR은 Cortex-M 보다도 간단함
- Cortex - A : AP(Application Processor)에 사용
3.1. ARM이 대세인 이유
1) 제조 회사가 아님
- 라이센스를 받아서 동일하게 사용, 개발비용이 적게 들어서 가격이 싸짐
- CPU를 설계하는데 굉장히 많은 시간과 노력이 듦. ARM사에서는 다 개발해놓고 설계도만
비용을 받고 팜 -> 그걸 반도체 회사들이 가져다가 씀 -> 직접 CPU를 개발하는 것 보다 가격이 쌈
2) 가격이 쌈
- ARM이 AVR에 비해 가격이 쌈
- 구조가 전부 Module 형식으로 구성되어있어 간단 + 위의 이유
3) 소비 전력이 적음
- 배터리로 구동하는 기계에서 많이 사용
4) Chip 면적이 작음
- 적은 트렌지스터 사용. 소형화에 유리, 발열 문제도 적음
5) 고성능 32bit Risc processor : Cache Memory 내장, Pipeline 처리방식
- Cache Memory : 메인 메모리와 CPU간의 데이터 속도 향상을 위한 중간 버퍼 역할을 하는, CPU 내 또는 외에 존재하는 메모리
- 자주 쓰이는 데이터들을 미리 저장해두는 좀더 빠른 메모리. 캐시는 잠시 저장해둔다는 의미
- Pipeline : 한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조.
- 여러 단계가 서로 동시에, 또는 병렬적으로 수행될 수 있어 효율성을 향상시킬 수 있다
3.2. STM사 제품 보는 방법
Ex) STM32F103C8T6
- STM32 (Device Family) : ARM - based 32bit MCU. 그냥 네이밍
- F (Product Type) : General Purpose.
- 저전력은 L1, 범용은 F1, 고성능은 F2
- 103 (Device Subfamily) : Performance Line
- C (Pin count) : 물리적인 Pin의 갯수. 48/49 pins.
- R : 64 pins, V : 100 pins, Z : 144 pins. pin의 수가 많으면 GPIO 등의 기능이 더 많아짐
- 8 (Flash Memory Size) : 65KB
- C : 256KB, D : 384KB, E : 512KB
- T (Package. 칩의 모양) : LQFP Package라는 뜻
- H : BGA, Y = WLCSP64
- LQFP(Low-profile Quad Flat Package) : 부품의 핀이 4면으로 돌출된 표면 실장 IC 패키지 형태
- 6 (Temperature Range) : -40 ~ +85°C
- 7 : -40 ~ +105°C
- Cortex - M3 CPU
- STM32F103RCT6xxx
- STM32 : 위와 동일
- F : 위와 동일
- 103 : 위와 동일
- R : 64 pins
- C : 256KB
- T : 위와 동일
- 6 : 위와 동일
- xxx (Options) : Programmed Parts
- TR : Tape and Real
* 강의 최종 목표 : 고추 건조기 제작
- FND Module을 제어하고 Switch를 돌려서 숫자 표현 및 온도센서 (Analog to Digital) 사용
- 보드에서 드라이기를 다 제어할 순 없음
- DC to AC Converter (5VDC -> 220VAC)를 드라이기에 연결하여 온도에 따른 동작 제어
- GPIO 제어, Analog 신호 받아 해석, 온도 센서 사용, SPI, I2C 등의 각종 통신 사용
- 추후 강의 목표
- 기본 전기 상식
- Data Sheet 보는 법
- 회로도 보는 법
- 오실로스코프 사용법
- 테스터기 사용법
3. etc
- BSP (Board Support Package) : Driver를 제어하는 Kernel같은 부분. OS가 특정 장치와 통신하기 위해 BSP를 이용해 data 처리
- OS를 load하기 위한 최소한의 장치를 지원하고, HW를 동작시키기 위한 Embedded Software 묶음
- OS 바로 밑에서 동작
- Firmware : 칩 내부에서 동작하는 매우 작은 Software
- 특정 Device에서 동작
위 내용의 모든 출처는 유튜버 '[오제이 튜브]OJ Tube' 님께 있습니다.
https://www.youtube.com/watch?v=a8cXa2AhrYI
참고 자료 :
https://m.blog.naver.com/mincoding/221753880584
ARM Core에 대해서 (Cortex란)
ARM(Advanced RISC Machines) 프로세서의 시장 역사 1. 8051계열, AVR과 PIC 마이크로프로...
blog.naver.com
https://youngseong.tistory.com/220
About AVR, ARM Processor, and Protocol
1. AVR (Advanced Virtual Risc)Atmel 사에서 개발한 칩으로, ARM Core 시대 이전에 주로 사용되던 칩ROM, ERPOM, EEPROM (CPU 동작 시 필요한 보조기억장치)를 사용하지 않은 단일 칩Flash Memory를 사용한 최초의 MCUHar
youngseong.tistory.com
'Study_Embedded > [오제이 튜브의 임베디드 실전 강의]' 카테고리의 다른 글
[오제이 튜브의 임베디드 실전 강의] 5강 혼자서 임베디드 고수 되는 법 (0) | 2022.01.24 |
---|---|
[오제이 튜브의 임베디드 실전 강의] 3-1강 개발 환경 구축하기, 4강 Hello!! GPIO!! (2) | 2022.01.08 |
[오제이 튜브의 임베디드 실전 강의] 3강 전기 기본 상식 - 모르면 보드 태워먹는다 (0) | 2021.12.02 |
[오제이 튜브의 임베디드 실전 강의] 1강 임베디드가 뭔가요? (0) | 2021.11.28 |
[오제이 튜브의 임베디드 실전 강의] OT (0) | 2021.11.27 |