1. AVR (Advanced Virtual Risc)
- Atmel 사에서 개발한 칩으로, ARM Core 시대 이전에 주로 사용되던 칩
- ROM, ERPOM, EEPROM (CPU 동작 시 필요한 보조기억장치)를 사용하지 않은 단일 칩
- Flash Memory를 사용한 최초의 MCU
- Harvard Architecture, Risc Processor 사용
- ISP (In System Programming) 지원
- AVR Chipset 자체에 Flash Memory가 내장되어 있어 별도 외부 Memory 없이 Programming 가능
- SPI, UART 통신 사용
- Ex) Atmega128
- About Atmega128
- Atmega128 : Atmel 사에서 개발한 8 bits MCU
- 128은 Flash Memory size를 의미(128KB)
- Logic 구성 -> Coding -> Compile -> Debug -> ISP를 통한
- ISP(In System Programming) : PCB상의 MCU에 직접 연결하여 Flash Memory, EEPROM 등을 지우거나 Programming 하는 방법
- AVR Studio 사용시 SPI Channel을 통한 Downloader와 JTAG Interface를 통한 2가지 방식의 Debugger가 있다
- JTAG(Joint Test Action Group) : 디지털 회로에서 특정 node의 digital 입출력을 위해 Serial 통신 방식으로 output data를 전송하거나 input data를 수신하는 방식을 의미
Atmega128의 Pinout
- 각 핀들은 1bit의 data를 주변장치와 주고 받는데, CPU는 내부적으로 8bits 단위로 data를 처리하므로 Pin을 8개씩 묶고 A~G 이름을 붙여 사용
- G는 5개만의 Pin을 가짐
- F는 ADC 기능을 함
2. ARM (Advanced Risc Machine)
- 32bits MCU로 가격이 싸고 소비 전력이 적으며 내장 주변장치가 많아 동작 속도가 빠름 : Embedded System에서 많이 사용
- ARM사는 CPU 설계만 하고 다른 제조사에 설계 내용을 IP (Intellectual Property Rights. 지적 재산권) 형태로 판매
- 각 반도체 회사에서 이 설계를 토대로 필요한 I/O 기능과 주변 장치들을 추가해 MCU로 만들어 판매
- 반도체 회사 중에 하나가 STM. 요즘엔 Atmel사에서도 ARM Core를 써서 생산
- Ex) Cortex - M3 (32bits) MPU
- Cortex는 ARM의 제품군, 브랜드 명을 의미
- Cortex - M(MicroProcessor) 0 (8bits) : 초 저가형. 저전력으로 주로 MCU에 사용
- Cortex - A(Application) : 고성능에 초점. AP(Application Processor)에 사용
- Cortex - R(Real - Time) : 고성능 실시간 처리 목표
- Cache Memory를 내장하고 있음
- Cache Memory : 메인 메모리와 CPU간의 데이터 속도 향상을 위한 중간 버퍼 역할을 하는 CPU 내 또는 외에 존재하는 메모리로
- 자주 쓰이는 데이터들을 미리 저장해두는 좀더 빠른 메모리이다
- 캐시는 잠시 저장해둔다는 의미
- Pipeline 처리 방식
- Pipeline : 한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조
- 여러 단계가 서로 동시에, 또는 병렬적으로 수행될 수 있어 효율성을 향상시킬 수 있다
- STM32F103C8T6
- STM32 (Device Family) : ARM -based 32bits MCU. 단순 naming
- F (Product Type) : General Purpose
- 저전력은 L1, 범용은 F1, 고성능은 F2
- 103 (Device Family) : Performance Line
- C (Pin count) : 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. Chip의 모양) : LQFP Package
- H : BGA, Y : WLCSP64
- LQFP (Low - profile Quad Flat Package) : 부품의 Pin이 4면으로 돌출된 표면 실장 IC Package 형태
- 6 (Temperature Range) : -40 ~ +85°C
- 7 : -40 ~ +105°C
- Cortex - M3 CPU
- AVR vs ARM
1. Architecture
- ARM : Pure Harvard Architecture
- Program Instruction과 Data를 완전히 구분하여 각자의 Memory Bus가 있음
- AVR : Modified Harvard Architecture
- Pure 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 장치부터 Server까지 다양한 분야에 활용
- Cortex - M : 저전력, 주로 MCU에 사용
- AVR은 Cortex - M 보다도 간단함
- Cortex - A : AP(Application Processor)에 사용
4. Price
- ARM은 제조 회사가 아닌 IP를 파는 회사로, 개발 비용이 적게 들어 가격이 싸짐
- CPU를 설계하는데 굉장히 많은 시간과 노력이 드는데 ARM사에서는 다 개발해놓고 설계도만 비용을 받고 팜
- 따라서 직접 CPU를 개발하는 것 보다 가격이 쌈
- 또한 구조가 전부 Module 형식으로 구성되어있어 간단함
- 관련 용어
1. Flash Memory
- EEPROM의 일종으로, 기존의 EERPOM과 달리 여러 구역으로 구성된 Block 내에서 읽기/쓰기 가능
- EEPROM은 byte 단위로 data 처리
- 용량이 크고 읽기 속도가 빠르며 HDD보다 충격에 강함 : 배터리 사용 제품에 많이 사용
- 단 정전기에 약함
- 비휘발성 저장장치라는 점에서 ROM의 성격을 가지며 읽기/쓰기가 가능하다는 점에서 RAM의 성격을 가짐
- Flash Memory의 종류로는 NOR / NAND Flash Memory가 있다
- NOR Flash Memory : 속도가 빠른 대신 저용량. ROM과 같은 구조를 가지며 코드 실행에 사용됨. 1byte 단위의 읽기/쓰기
- NOR Flash Memory : 속도는 느리지만 대용량. 데이터 저장에 사용되며 요즘 대부분 사용함. HHD처럼 Block 단위의 읽기/쓰기
2. Von Neumann / Harvard Architecture
- Von Neumann Architecture : CPU와 Memory를 최초로 분리시킨 Computer Architeture
- Harvard Architecture : 시간이 지날수록 Program이 복잡해져 Data Memory와 Instruction(Programm Memory)가 한 Bus로 들어가 Memory에 병목 현상 발생
- 이를 해결하고자 Program Memory(Bus)와 Data Memory(Bus)를 구분한 Architecture.
- Von Neumann Architecture와 달리 CPU가 Instruction과 Data에 동시 접근 가능
- 현재는 위처럼 CPU 외부적으로는 Von Neumann, 내부적으로는 Harvard Architecture를 적용하여 속도를 높임
3. CISC / RISC
CISC (Complex Instruction Set Computer)
- 복잡하고 기능이 많은 Instruction들로 구성
- 이러한 명령어를 이해하기 위해 Processor의 HW가 복잡하나 Programming 하기에는 편리
- 또한 저장공간이 RISC에 비해 상대적으로 작음
- Ex) Intel 사의 x86 Series (32bits)
- x86은 32bits(Embedded System 에 적합), x64는 64bits (Universal Computer에 적합)
RISC (Reduced Instruction Set Computer)
- 단순하고 적은 갯수의 Instruction들로 구성
- 기능을 일일히 명령하며 알려줘야 하므로 Software(Compiler)가 복잡함
- CPU Instruction의 개수를 줄여 HW 구조를 단순하게 만드는 방식
- 모든 명령어들의 길이가 같아 처리 속도가 빠름
- Ex) ARM : Embedded System에서 많이 사용
- Protocol 용어
- Protocol : Device 간의 통신 시 교환하는 Data의 형식에 대한 상호 합의가 필요한데, 이 형식을 규정한 것
- 즉 통신 규약 및 약속을 뜻함
1. SPI (Serial Peripheral Interface)
- I2C, UART와 같은 Serial(직렬) 통신 방식 중 하나로 MCU, Shift Register, SD Card 등의 소형 주변 장치 사이에 Data를 전송하는 Protocol
- 1대 다수의 통신이 가능한 동기식 통신 방식
- 통신하는 Device가 늘어날 수록 연결 선도 늘어난다는 단점이 있음
- 통신 채널을 하나만 가진다
- Shift Register로만 구성되어 있으며 Shift Register가 Buffer 역할을 함
- Chip과 Chip 사이처럼 RS232에 비해 짧은 거리의 통신에 사용
- I2C에 비해 상대적으로 속도가 빠르고 구조(Data Frame)가 단순함
- Sensor와 통신시 많이 사용
2. I2C (Inter - Integrated Circuit), TWI (Two Wire Interface)
- 동기식 통신 방식으로, 2개의 선만으로 Serial 통신을 함
- 다수의 Device에 2개의 선만으로 신호를 전달할 수 있음
- SPI에 비해 상대적으로 속도가 느림
- 저속의 주변기기 연결을 위해 사용
- Sensor 신호의 입력이나 제어용으로 많이 사용
- I2C는 필립스에서 개발한 Protocol인데, 이 등록상표명을 피하기 위해 Atmel 등의 회사에서는 TWI라는 이름을 사용
- 두 Interface는 매우 유사하며 서로 대부분 호환이 됨
3. UART (Universial Asynchronous Recevier / Transmitter)
- 비동기 모드로써 사용되는 Serial 통신으로, Parallel Data의 형태를 Serial 방식으로 전환하여 Data를 전송하는 Protocol
- Parallel 통신은 근거리에서 대용량의 Data 전송에 유리
- CPU-Memory간 같이 근거리의 대용량 Data를 한번에 전송해야 하는 Computer 부품 간의 통신은 Parallel 통신 사용
- Serial 통신은 장거리의 고속 통신에 유리
- Computer와 주변 기기 연결과 같이 먼 거리에서의 Data 전송 시 장치 간의 통신에는 Serial 통신 사용
- 자료 형태나 전송 속도를 직접 구성할 수 있고 실제 전기 신호 수준과 방식이 일반적으로 UART 바깥단의 특정 Driver Circuit을 통해 관리받는다는 뜻
- 일반적으로 RS-232. RS-485 등과 같은 통신 표준과 함께 사용
- 비동기 통신이므로 동기 신호가 전달되지 않는다. 따라서 보내는 쪽과 받는 쪽에서 Data 전송 속도를 Baud Rate로 정해야 한다
- USART는 여기에 동기 신호를 추가적으로 사용
4. RS232 (Recommended Standard) / 485
- IBM 호환 PC에서 쓰이는 통신 규격으로, 1:1 Serial Interface 중 하나
- MPU와 외부 장치간의 연결처럼 통신거리가 먼 경우 주로 사용
- 1과 0을 전송하는데 -12V(0), 12V(1)을 사용
- UART / RS232 / 485 차이
- UART는 TTL Level Serial Port
- TTL (Transistor Transistor Logic) : 0V를 Low로, 3.3V / 5V를 High 신호로 사용
- RS-232는 RS-232 Level Serial Port
- UART와 RS232는 기준 전압을 빼고 모두 동일하다
- UART : 0V -> 0, 3.3또는5V -> 1. 0.4V 정도의 Noise Margin을 가짐
- RS-232 : 12V -> 0, -12V ->1. 2V 정도의 Noise Margin을 가짐
- RS-232는 보드 사이에 신호를 전달하기 위해 Voltage를 올려 멀리 안정적으로 보내는 것을 목적으로 함
- RS-232는 TTL Level보다 더 높은 전압으로 더 먼거리의 통신이 가능
- PCB 내에서는 TTL을 사용하기도 하나 보드 외부와의 통신 시는 RS232 통신을 사용
- RS-485는 RS-232의 짧은 전송 거리와 낮은 전송 속도를 보완하기위해 만들어진 Protocol
- RS-232보다 조금 더 먼거리의 통신이 가능하다
- 또한 RS-232는 1:1 통신만을 지원하는데 반해 RS-485는 최대 32개 Device와의 통신이 가능하다
- 또한 하나의 Port에 여러 Recevier 장비의 연결이 가능하다 (하나의 Master Device에 최대 32개의 Slave Device 와의 Data 송수신 가능)
- 장거리 및 전기적 Noise가 많은 환경에서 효과적인 사용 가능
5. TCP (Transmission Control Protocol), UDP (User Diagram Protocol)
- TCP : Server와 Client 간에 Data를 신뢰성 있게 전달하기 위해 만들어진 Protocol으로, 신뢰성 / 무결성을 보장하는 연결을 통해 Data를 안전하게 전송
- Data 전송 전 아래와 같이 연결을 먼저 만드는 연결 지향 Protocol 으로, 아래와 같이 Transmission Control을 위한 작업을 함
- Host (받을 대상)가 Service 가능 (연결 가능) 상태인지 확인 밑 연결을 수립하는 역할
- 전송을 제어해주는 정보를 Packet에 추가해주는 역할
- 작은 단위로 쪼개진 Packet들을 재조립하고 손상되거나 손실된 Packet을 재요청 함
- Packet : Network Data의 기본 단위
- 전송 계층에서 사용하는 Protocol으로, 목적 장치까지 전송한 Packet을 상위의 특정 응용 Protocol에게 전달
- 전송 계층 : 송신자와 수신자를 연결하는 통신 계층으로, Data의 전달을 담당
- TCP/IP : IP 주소를 이용한 TCP 통신. (TCP는 IP의 상위 Protocol). 송신자가 수신자에게 IP를 사용하여 최대한 빠르게 Packet을 전송하면 TCP를 활용해 Packet을 정상적으로 수신받음
- IP (Internet Protocol) : Internet에 연결되어 있는 Network 상의 모든 Device들을 식별할 수 있도록 각각의 Device에 부여되는 고유 번호. Internet 상의 모든 Host들의 고유한 주소
- IP가 TCP 통신에 비해 빠름 (Packet들을 대상 주소로 가장 효율적인 방법으로 전송함)
- TCP와 IP는 각각 담당하는 작업이 다르나 같은 결과를 목표로 하므로 한 명칭으로 불리기도 함
- UDP :
- TCP는 Data 통신 시 확인 msg를 받은 후 전송하고, UDP는 확인 과정 없이 단방향으로 전송함
- TCP는 속도보다 신뢰성이 더 중요할 때, UDP는 신뢰성보다 속도가 더 중요할 때 사용
- 관련 용어
- Node : Network에 연결된 모든 종류의 Device
- Host : Network에 접속하고 다른 Host와 통신할 수 있는 Node. IP 주소가 할당되어있다
- Client : Network Process나 다른 Computer의 Data, Service 또는 Resource에 Access하는 Computer 또는 Process
- Server : Network 상의 다른 Computer 또는 Process가 Access할 수 있는 Data, Service 또는 Resource를 제공하는 Computer 또는 Process
- 특정 User에 대한 Local Host는 해당 사용자가 작업 중인 Computer. Remote Host는 Network 상에 있는 임의의 다른 Host 이름. 모든 Host가 Client 또는 Server 역할을 할 수 있다
- Network : 둘 이상의 Host 및 이들 사이의 연결 Link 조합. Network를 구성하는 Hardware를 Physical Network라 하고 전체 또는 일부의 하나 이상의 Physical Network에 있는 추상적 구조를 Logical Network이라 함
- Interface :
- Interface Program은 Logical Network를 Physical Network로 변환함
- Process : 실행 중인 Program을 의미. Computer에서 활동 중인 요소로, Terminal, File, 기타 I/O 장치는 각기 다른 Process를 통해 통신함. 즉 Network 통신은 Process 간 통신
- Port : Network를 통해 Data를 주고받는 Process를 식별하기 위해 Host 내부적으로 Process가 할당받는 고유한 값. 보통 Server는 하나의 Port를 할당받는다
- 즉 Port는 Process에 대한 논리적 연결 지점. Data는 Port 혹은 Socket을 통해 Process 사이에서 전송되며, 각 Port는 Data 송수신을 위한 Queue를 제공한다
- 한 Host 내에서 Network 통신 중인 Process를 식별하기 위한 값이므로 기본적으로는 같은 Host 내에서 서로 다른 Process가 동일한 Port Number를 가질 수 없다
- Port는 Data 수신자 뿐만 아니라 발신자도 할당받아야 함
- Socket : Software로 작성된 추상적인 개념의 통신 접속점으로, Process가 Network를 통해서 Data를 주고받기 위해 반드시 열어야 하는 일종의 창구 역할. Data 송수신부 모두가 Socket을 열어야 함
- Socket을 열기 위해선 Host에 할당된 IP 주소, Port Number, Protocol 등이 필요하며 이 세 가지가 Socket을 정의한다.
- 하나의 Process는 위 세 가지를 동일하게 가지는 다수의 Socket을 가질 수 있다.
- 두 Socket이 연결되면 서로 다른 Process끼리 Data를 전달할 수 있음
- Socket은 상대방에게 Data를 보내거나 받는 역할을 하며, 연결을 수동적으로 기다리느냐(Server), 능동적으로 연결하냐(Client)를 기준으로 Server와 Client로 구분된다
- Socket은 두 application port 간의 communication link의 unique한 endpoint를 나타낸다
- Port는 TCP/IP Host에서의 application process를 나타낸다
6. CAN (Controller Area Network)
- 차량 내에서 Host Computer 없이 MCU나 Device간의 통신을 위해 설계된 표준 통신 규격
- 연결할 Module이 추가될 때 마다 연결 선을 추가해야 했던 UART의 단점을 보완하고자 개발됨
- 통신 장치들을 Parallel로 연결하여 각 장치들이 하나의 Node를 공유함으로써 Data를 주고받음
- Host : Internet을 통해 다른 Computer들과 쌍방향 통신이 가능한 Computer
- localhost (127.0.0.1) : Loopback 주소로써, Network 상에서 자신의 컴퓨터를 나타내는 가상의 IP 주소이다.
- 127.0.0.1은 예약된 IP 주소로 Intetnet 상에서 일반 IP로는 쓰일 수 없는 주소값이다
- OS가 가상으로 지원하며, Device를 통하지 않고 SW 적으로 처리된다
- 보통 Application Test나 같은 Computer 내에서 다른 Application끼리 통신하기 위해 사용한다
- 각 Controller들 간의 통신을 위해 주로 사용되는 Non - Host 방식의 Message 기반 Network Protocol
- 즉 Node의 Address에 의해 Data가 교환되는 것이 아니라 Messgae의 우선 순위에 따라 ID를 할당하고 그를 통해 Messgae를 구별
- 임의 Node가 Message를 전송하면 나머지 Node들은 그 Message가 자신에게 필요한지를 판단 (ID 기반)후 필요 여부에 따라 받아들이거나 무시함
7. Rosserial
- ROS 상에서의 제어기와의 Message 통신을 위해 중계자 역할을 수행하는 ROS Package
- MCU에서 사용한 Data를 ROS Message로 변환하는 역할
- rosserial은 Serial로 Message를 8bits씩 전송
- Float 64를 지원하지 않음
- Embedded System은 Serial 통신 시 기본적으로 UART 통신을 사용하는데, UART 통신은 115200bps와 같은 속도 사용 시 Message의 개수가 많아지면 응답 및 처리속도가 느려짐
참고 자료 :
https://youngseong.tistory.com/45
https://youngseong.tistory.com/3
http://contents.kocw.or.kr/contents4/document/lec/2013/Mokwon/Moonsangook/4.pdf
https://ko.serial-cable.com/info/difference-of-uart-serial-and-rs232-serial-30244548.html
https://www.inforad.co.kr/single-post/rs-485
https://blog.naver.com/suresofttech/220793847337
https://ko.wikipedia.org/wiki/CAN_%EB%B2%84%EC%8A%A4
https://electronic-king.tistory.com/18
https://guslabview.tistory.com/84
'Study_Embedded' 카테고리의 다른 글
Jetson Nano 'System throttled due to Over-Current 관련 (0) | 2023.09.08 |
---|---|
USB, COM 포트 차이 (0) | 2023.02.13 |
임베디드 시스템이란? (0) | 2022.07.23 |
[용어 공부] 펌웨어(Firmware)란 (0) | 2021.09.05 |