전체 글 300

[Tech, Embedded] FPGA (Field Programmable Gate Array)

FPGA는 고객 또는 설계자가 제조 후 구성할 수 있도록 설계된 직접 회로, 즉 "field-programmable(현장 프로그래밍 가능)"한 회로다. FPGA에는 프로그래밍 가능한 논리 블록 어레이와 재구성 가능한 상호 연결 계층 구조가 포함되어 있어 서로 다른 구성으로 상호 연결할 수 있는 여러 논리 게이트처럼 블록을 함께 배선할 수 있다. 논리 블록은 복잡한 조합 기능을 수행하도록 구성할 수도 있고, AND 및 XOR과 같은 단순한 논리 게이트로 구성할 수도 있다. 대부분의 FPGA에서 이러한 블록에는 단순한 flip-flops(플립플롭) 또는 보다 완전한 메모리 블록일 수 있는 메모리 요소도 포함된다. FPGA의 주요 특징은 재구성이 가능하기 때문에 제조 후에도 다양한 목적과 애플리케이션에 사용할..

[Tech, etc.] CRC32 (Cyclic Redundancy Check 32-bit) - 예

3비트 checksum을 생성하는 CRC3이라는 작은 버전을 사용해 CRC가 어떻게 작동하는지 알아보자. 예시에서는 간단한 4비트 입력 메시지와 4비트 다항식을 사용한다. 원리는 CRC32와 동일하지만 규모만 더 작을 뿐이다. 다항식 선택 : 먼저 CRC3 계산을 위해 4비트 다항식을 선택한다 0xB(2진수로는 1011)을 사용한다. 선행 비트는 항상 1로 가정하며 명시적으로 기록하지 않는다. 입력 데이터 준비 : 입력 데이터가 1101(4비트 메시지)라고 가정하자. CRC3을 수행하려면 이 메시지를 CRC 비트 수(이 경우 3)만큼 환장한다. 메시지 끝에 0을 세 개 추가해 1101 000을 만들면 된다. 나누기 : 이제 2진수의 긴 나눗셈과 유사한 XOR 연산을 사용해 확장된 메시지를 다항식으로 나눈..

[Tech, etc.] CRC32 (Cyclic Redundancy Check 32-bit)

CRC32는 순환 중복 검사 32비트의 약자다. 디지털 네트워크 및 저장 장치에서 원시 데이터의 우발적인 변경을 감지하기 위해 일반적으로 사용되는 오류 감지 코드의 한 유형이다. CRC32의 "32"는 알고리즘이 입력 데이터에서 32비트 해시값(32비트의 고정 크기 문자열)을 생성한다는 것을 나타낸다. CRC 알고리즘은 다항식 나누기를 기반으로 하며, 여기서 나눗셈은 입력 데이터, 제수는 미리 정해진 다항식, 몫은 버려진다. 이 나눗셈의 나머지는 오류를 감지하기 위한 checksum으로 사용되는 CRC 값이다. CRC의 구체적인 공식은 아래와 같은 단계를 포함한다. 초기화 : CRC 레지스터가 모두 1 (0xFFFFFFFF)로 초기화된다. 이는 데이터의 선행 0이 checksum에 영향을 미치지 않도록 ..

[Tech, etc.] NMEA (National Marine Electronics Association)

NMEA는 주로 해양 내비게이션 및 통신 시스템과 관련이 있는 미국해양전자협회(NMEA) 표준을 의미한다. NMEA 표준, 특히 NMEA 0783 및 NMEA 2000 프로토콜은 GPS 및 내비게이션 시스템에서의 유용성으로 인해 항공을 포함한 다양한 분야에서 응용되고 있다. NMEA 0183은 SONAR, GPS receiver 및 기타 다양한 항해 장비와 같은 해양 전자 기기 간의 통신을 위한 표준이다. 직렬 데이터 버스에 대한 전기 신호 요구 사항, 데이터 전송 프로토콜 및 타이밍을 정의한다. 항공 분야에서는 호환되는 장치 간의 GPS 데이터 공유에 NMEA 0183을 사용하여 항공기 시스템이 내비게이션 및 기타 관련 정보를 교환할 수 있다. 더욱 강력하게 업데이트 된 프로토콜인 NMEA 2000은 ..

[Tech, C++] Symbol Table (심볼 테이블)

Symbol Table은 컴파일러와 링커에서 사용하는 데이터 구조로, 프로그램에서 사용되는 식별자(변수 및 함수 이름 등) 목록과 유형, 범위(가시성), 메모리 위치 등 각 식별자에 대한 정보를 담고 있다. Symbol Table은 컴파일러와 링커가 프로그램 전체에서 이러한 식별자에 대한 참조를 해결하는 데 도움이 된다. 디버깅의 맥락에서 디버그 심볼 내의 Symbol Table은 디버거가 메모리 주소 및 기타 로우-레벨 정보를 사람이 읽을 수 있는 식별자에 다시 매핑하는 데 도움이 된다. 이 매핑을 통해 디버거는 변수 값을 표시하고, 코드 한 줄씩 단계별로 살펴보고, 기타 고급 디버깅 기능을 제공할 수 있다. 컴파일할 때 Symbol Table은 컴파일러가 각 함수와 변수가 어디에 정의 되어 있고 어떻..

[Tech, Network] Ethernet (이더넷)

Ethernet은 LAN(근거리 통신망), MAN(대도시 지역 네트워크), WAN(광역 통신망)에서 일반적으로 사용되는 컴퓨터 네트워킹 기술 제품군이다. 1970년대 제록스 코퍼레이션의 팔로알토 연구 센터(PARC)에서 처음 개발됐으며, 이후 유선 네트워크에서 장치를 연결하는 데 가장 널리 사용되는 방법이 됐다. Ethernet이 널리 채택된 이유는 신뢰성, 설치 용이성, 간단한 홈 네트워크에서 대규머 엔터프라이즈 및 인터넷 인프라 네트워크까지 확장할 수 있는 능력 때문이다. Ethernet은 네트워크의 물리적 계층(Physical layer), MAC(Media Access Control) 하위 계층을 통합하는 데이터 링크 계층(Data Link Layer) 프로토콜, 공통 주소 지정 형식에 대한 여러..

[Tech, C++] Debugging Symbols (디버깅 심볼)

Debugging Symbols은 컴파일 과정에서 프로그램의 바이너리에 추가되는 정보로, 바이너리 명령어를 원래 소스 코드에 다시 매핑하는 역할을 한다. 이러한 심볼에는 변수 이름, 함수 이름, 줄 번호와 같은 세부 정보가 포함된다. 디버거 및 기타 도구는 이를 통해 개발자에게 사람이 읽기 쉬운 형태의 프로그램을 표시해 프로그램의 동작을 분석하고 문제를 쉽게 식별할 수 있다. 아래와 같은 C++ 프로그램이 있다고 가정하자. // main.cpp #include void printMessage() { std::cout

[Tech, Interview] Complex Hardware Interfaces

Complex Hardware Interfaces (복잡한 하드웨어 인터페이스)는 센서와 작동기부터 맞춤형 FPGA (Field-Programmable Gate Array) 또는 ASIC (Application-Specific Integrated Circuit) 솔루션과 같은 더 복잡한 장치에 이르기까지 다양한 하드웨어 구성 요소와 소프트웨어의 상호 작용을 의미한다. 복잡한 하드웨어 인터페이스를 다루는 작업에는 다음과 연관이 있다. 하드웨어의 사양과 제약 조건의 이해 하드웨어와 통신하기 위한 드라이버 밎 API를 개발하거나 활용 소프트웨어가 속도, 전력 소비, 데이터 처리량 등 하드웨어의 작동 매개변수를 처리할 수 있는지 확인

[Tech, Interview] Hard and Soft Real-Time Systems

Hard Real-Time : 이러한 시스스템에서는 작업의 정확성이 논리적 결과뿐만 아니라 전달된 시간에 따라 달라지는 엄격한 시간 제약이 있다. 기한을 놓치면 시스템 장애 또는 용납할 수 없는 결과를 초래할 수 있다. 예를 들어, 자동차 안전 시스템에서는 안전을 보장하기 위해 센서 입력에 대한 응답이 미리 정해진 시간 내에 이루어져야 한다. Soft Real-Time : 이러한 시스템에서도 시간 제약이 있지만 기한에 더 유연하다. 기한을 놓치면 시스템 성능이 저하되지만 장애로 이어지지는 않는다. 스트리밍 동영샹 재생을 예로 들 수 있는데, 가끔 지연이 발생해도 품질에 영향을 줄 수는 있지만 서비스가 중단되지는 않는다.

[Tech, etc.] Byteflight

Byteflight은 자동차 부품 간의 안전에 중요하고 내결함성을 갖춘 현대화된 전자 통신 수단에 대한 필요성을 해결하기 위해 BMW와 파트너인 Motorola, Elmos Semiconductor 및 Infineon이 만든 자동차 데이터 버스다. 메시지 지향 포로토콜(Message-oriented protocol)로 FlexRay의 전신인 Byteflight은 순수 이벤트 트리거형 데이터베이스의 결함을 피하기 위해 동기/비동기 하이브리드형 TDMA 기반 데이터 전송 수단을 사용한다. Byteflight 용어로는 데이터 프레임(data frame)을 전신(전보, telegraph)라 한다. 전신은 6개의 주요 비트를 포함하는 시작 시퀀스로 시작한다. 이 시작 시퀀스 뒤에는 1바이트 메시지 식별자가 이어진..