본문 바로가기

임베디드 개발/펌웨어109

CRC-16-CCITT CRC-16-CCITT의 다항식(Polynomial)은 아래와 같다. XMODEM, YMODEM 등에 쓰이는 방식이다.   이 다항식의 16진수 표현표준 노멀 는 0x1021이며, 리버스 폴리는 0x8408이다. RefIn = false, RefOut = false 조건으로 대부분의 SW 구현에서 노멀 폴리인 0x1021을 사용한다.      CRC-16-CCITT 함수 uint16_t crc16_ccitt(const uint8_t* data, size_t length) { uint16_t crc = 0x0000; while (length--) { crc ^= (*data++)  CRC-16-CCITT (XMODEM) 표준의 초기값인 SEED는 0x0000이고 Final XOR도 0x0000이다.   .. 2023. 5. 7.
CRC-32 CRC (Cyclic Redundancy Check) 는 데이터 전송 과정에서 오류를 검출하거나 파일의 무결성을 검증하기 위한 방법으로, 그 과정에서 여러 종류의 다항식이 쓰일 수 있는 데 가장 널리 사용되는 CRC 다항식은 CRC-16-CCITT와 CRC-32이다. CRC 다항식 종류 : https://en.wikipedia.org/wiki/Cyclic_redundancy_check   그 중 CRC-32의 다항식(Polynomial)은 아래와 같다.이 다항식을 16진수로 표현한게 0x04C11DB7이고, reverse한 값이 0xEDB88320이다. 다항식을 16진수로 표현하는 방법은 먼저 x의 차수에 해당하는 비트에 1을 쓴다. 나머지 비트는 0으로 한다.그럼 바이너리로 아래처럼 되는데 이걸 31번.. 2023. 5. 7.
Online CRC 계산 사이트 CRC 계산 사이트 https://crccalc.com/?crc=01020304&method=crc32&datatype=hex http://www.sunshine2k.de/coding/javascript/crc/crc_js.html https://www.lammertbies.nl/comm/info/crc-calculation 파일 CRC 계산 사이트 https://emn178.github.io/online-tools/crc32_checksum.html https://simplycalc.com/crc32-file.php 2023. 5. 7.
TFTP 프로토콜 TFTP 프로토콜 HTML 삽입 미리보기할 수 없는 소스 Trivial File Transfer Protocol의 약자로, 인터넷 프로토콜 스위트(IP Suite)*의 일부로서 파일 전송 프로토콜이다. TFTP는 TCP/IP 프로토콜 스택을 기반으로 하며, 그 중 UDP(User Datagram Protocol)를 이용하여 작동한다. 기본적으로 UDP 포트 69번을 사용하며, 전송할 파일의 이름과 위치를 포함하는 요청 메시지를 TFTP 서버에 보낸다. 이후 TFTP 서버는 파일을 찾아서 클라이언트에게 전송하는데, 전송 과정에서는 오류 검사와 재전송을 처리하는 기능이 내장되어 있다. TFTP는 파일 전송 속도가 느리고 오류 처리 기능이 FTP와 비교해 상대적으로 취약하다는 단점이 있지만, 작은 파일을 빠르.. 2023. 4. 10.
SoC와 MCU의 차이 SoC(System-on-a-Chip)와 MCU(Microcontroller Unit)는 모두 하드웨어와 소프트웨어의 기능을 모두 포함하는 집적회로이지만 둘은 목적과 구성, 사용 분야 등에서 차이가 있다. SoC는 CPU, GPU, 메모리, 입출력(I/O) 인터페이스, 네트워크, 그래픽 처리 장치 등을 포함하고 있으며, 대규모 응용 프로그램을 수행할 수 있는 미니어처화된 컴퓨터 시스템이다. 대표적으로 모바일 기기, 스마트폰, 태블릿, IoT 디바이스, 자동차 시스템 등에서 사용된다. 반면에 MCU는 CPU, 메모리, 입출력(I/O) 인터페이스, 타이머, 카운터, ADC 등의 기능을 포함하고 있으며, 대개 저전력, 실시간 제어, 데이터 수집 및 처리와 같은 임베디드 시스템에서 사용된다. 즉, SoC는 주로.. 2023. 4. 9.
SBC(Single-Board Computer) SBC는 Single-Board Computer의 약자로, 컴퓨터의 모든 기능이 하나의 PCB(Printed Circuit Board)에 탑재된 컴퓨터를 말한다. SBC는 일반적인 데스크탑 컴퓨터와 비교하여 크기가 작고 저전력이며, 대개 리눅스나 다른 임베디드 운영체제를 사용하한다. 비교적 저렴한 가격과 다양한 입출력(I/O) 핀을 가지고 있어 다양한 외부 디바이스 및 센서와의 연결이 용이하여 개인용 컴퓨터, 교육 및 학습용, 임베디드 시스템 등 다양한 분야에서 쓰인다. 일반적으로 SBC(Single-Board Computer)에는 SoC(System-on-a-Chip)가 탑재된다. SoC는 단일 실리콘 칩에 CPU, GPU, 메모리, 입출력(I/O) 인터페이스, 네트워크, 그래픽 처리 장치 등을 포함하.. 2023. 4. 9.
Analog Multiplexer/Demultiplexer 아날로그 멀티플렉서(Multiplexer) 및 디멀티플렉서(Demultiplexer)는 다수의 아날로그 입력 신호 중에서 하나를 선택하거나 분배하기 위해 사용되는 IC칩이다. 디지털 멀티플렉서랑 똑같다, 다수의 입력 신호 중에서 하나의 출력 신호를 선택하는 역할을 한다. 다만 신호가 아날로그인 것이다. 입력 신호는 멀티플렉서의 선택 입력에 의해 선택되는데, 선택 입력(Sx Pin)은 이진 형태로 구성된다. 2의 n승 개의 입력이 있는 멀티플렉서는 n개의 선택 입력이 필요하다. 선택 입력을 이용해 하나의 입력을 선택하고 출력으로 전달하므로 멀티플렉서는 다수의 입력 신호를 단일 출력 신호로 변환하는 기능을 수행한다. 반면 디멀티플렉서는 반대로 하나의 입력 신호를 선택 입력을 통해 다수의 출력 신호 중 하나로.. 2023. 3. 31.
CAN FD, TDC (Transmitter Delay Compensation) CAN FD 사용시 Data bitrate 2Mbps까진 괜찮았지만 그 이상으로 고속 통신하려면 CAN FD 컨트롤러에 TDC 설정이 필요하다. transmitter delay compensation (TDC) At bit-rates higher than 1 Mbit/s in the data phase of CAN FD frames the transmitting node has to compensate the TD when comparing its transmitted bits to the delayed received bits. TDC mechanism defines a secondary sample point SSP. When it is used, the transmitter ignores bit e.. 2023. 3. 31.
소수점이하 값 정수형으로 얻는법 소수점 이하 값을 정수형으로 얻으려면, 원하는 소수점 자리수만큼 10의 거듭제곱을 곱하고 나머지연산을 하면된다. int main() { float pie = 3.141592; printf("%d.%d", (int)pie, (int)(pie*1000000) % 1000000); return 0; } 다른 예시 byte를 KB 또는 MB로 변환하는건데, a/b의 소수점 이하 둘째자리 까지의 값을 정수형으로 알고 싶으면 a*10^2/b 하면된다. 그 이하는 버림. #include void printSizeInKBorMB(int byte) { int size; int decimal; char unit; if (byte < 1024 * 1024) { // 1MB 미만 size = byte / 1024; decim.. 2023. 3. 31.
NTP 서버에서 시간 받아오기 UTC UTC (Coordinated Universal Time)는 지구상의 시간 표준을 정의하기 위한 국제 표준 시간으로, 국제원자시(TAI)를 기반으로 하되, 지구의 자전 속도 등에 따라 발생하는 차이를 보정하기 위해 윤초(Leap Second)를 삽입하여 보정된다. 국제 원자시란 세슘 원자의 진동 주파수를 기준으로 시간을 계산하며, 세계 각지의 원자 시계들의 평균값을 취하여 UTC가 유지된다. UTC는 24시간을 기준으로 하며, 1시간은 60분으로 구성되고, 1분은 다시 60초로 구성되어 있다. 이러한 시간 단위들은 세계 각지에서 일관되게 사용된다. 아래 Unix Time, Windows Time, NTP time 전부 UTC를 기반으로 한다. Unix Time Unix Time은 컴퓨터 시스템에서.. 2023. 3. 31.