728x90
반응형

분류 전체보기 443

Embedded Linux Kernel 빌드 환경 구축하기

Embedded Linux Kernel 빌드 환경 구축하기Embedded 시스템에서 Linux Kernel을 빌드하고 포팅하는 것은 복잡한 작업일 수 있지만, 올바른 방법을 따르면 비교적 쉽게 설정할 수 있습니다. 이번 포스팅에서는 Rockchip RK3399을 기준으로 Kernel 소스 코드 다운로드부터 빌드 환경 구성까지의 과정을 다룹니다.1. Linux Kernel 빌드 환경 구축Linux Kernel을 빌드하려면 적절한 개발 환경이 필요합니다. 아래는 Ubuntu를 사용하는 경우의 환경 설정 과정입니다.1.1 필수 패키지 설치sudo apt updatesudo apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-de..

Linux/Kernel Driver 2025.03.08

Huffman Coding

Huffman Coding1. 알고리즘 설명허프만 코딩(Huffman Coding)은 무손실 데이터 압축 기법 중 하나로, 가변 길이 인코딩을 활용하여 자주 등장하는 문자에는 짧은 코드를, 드물게 등장하는 문자에는 긴 코드를 할당하는 방식으로 데이터를 압축하는 알고리즘입니다. 이 알고리즘은 1952년 David A. Huffman에 의해 고안되었으며, 최적 접두사 코드(Optimal Prefix Code)를 생성하는 데 사용됩니다.1.1 동작 원리입력 데이터에서 각 문자의 빈도를 계산합니다.빈도수를 기반으로 최소 힙(Min Heap) 구조의 우선순위 큐를 생성합니다.최소 힙에서 두 개의 최소 빈도를 가진 노드를 선택하여 새로운 부모 노드를 생성합니다. 이 부모 노드의 빈도수는 두 자식 노드의 빈도수를 합..

CAN 보안(Security) 및 해킹 대응 기법

CAN 보안(Security) 및 해킹 대응 기법1. 서론CAN(Controller Area Network)은 자동차, 산업용 기기, 로봇 등 다양한 분야에서 사용되는 통신 프로토콜입니다. 그러나 CAN은 보안 기능이 내장되어 있지 않기 때문에 해킹 공격에 취약할 수 있습니다. 이번 글에서는 자동차 CAN 네트워크 보안 위협과 공격 기법을 살펴보고, 보안을 강화하는 방법에 대해 알아보겠습니다.2. 자동차 CAN 네트워크 보안 위협자동차에서 CAN 네트워크는 엔진 제어 장치(ECU), 브레이크 시스템, 조향 장치 등의 중요한 모듈 간 데이터를 주고받는 역할을 합니다. 하지만 CAN 네트워크는 보안 기능이 부족하여 다음과 같은 보안 위협에 노출될 수 있습니다.2.1 CAN 메시지 스니핑(Sniffing)공격..

CAN 통신 2025.03.08

압축 알고리즘의 분류 엔트로피 기반과 사전 기반

압축 알고리즘의 분류: 엔트로피 기반과 사전 기반1. 서론데이터 압축은 디지털 데이터를 보다 효율적으로 저장하고 전송할 수 있도록 변환하는 기술입니다. 압축 알고리즘은 크게 엔트로피 기반(Entropy-based) 압축 알고리즘과 사전 기반(Dictionary-based) 압축 알고리즘으로 나뉩니다. 본 포스팅에서는 이 두 가지 방식의 원리를 설명하고, 각각의 대표적인 알고리즘을 Java와 C 코드 예제와 함께 소개하겠습니다.2. 엔트로피 기반 압축 알고리즘2.1 개념엔트로피 기반 압축 알고리즘은 데이터 내의 통계적 특성을 활용하여 보다 짧은 코드로 데이터를 표현하는 방식입니다. 주어진 데이터에서 특정 기호의 등장 빈도가 높을수록 짧은 코드로 변환하고, 낮을수록 긴 코드로 변환하여 전체적인 데이터 크기를..

CAN과 LIN(Local Interconnect Network) 비교 및 통합

CAN과 LIN(Local Interconnect Network) 비교 및 통합1. 개요자동차 및 산업용 네트워크에서 사용되는 대표적인 통신 방식으로 CAN(Controller Area Network)과 LIN(Local Interconnect Network)이 있습니다. CAN은 높은 신뢰성과 빠른 속도를 요구하는 네트워크에서 사용되며, LIN은 저비용, 저속 통신이 필요한 네트워크에서 주로 사용됩니다. 본 글에서는 CAN과 LIN의 차이점을 설명하고, 두 네트워크를 통합하여 사용하는 방법을 소개하겠습니다.2. CAN과 LIN의 차이점 및 용도2.1 CAN(Controller Area Network)CAN은 Bosch에서 개발한 통신 프로토콜로, 자동차, 산업용 자동화 시스템, 로봇 등의 분야에서 널리..

CAN 통신 2025.03.07

Embedded Linux Kernel의 개요

Embedded Linux Kernel의 개요Embedded Linux란 무엇인가?임베디드 리눅스(Embedded Linux)는 리눅스 커널을 기반으로 한 운영체제로, 임베디드 시스템에서 작동하도록 설계되었습니다. 임베디드 시스템은 일반적으로 특정 작업을 수행하기 위해 최적화된 하드웨어와 소프트웨어로 구성된 시스템으로, 가전제품, IoT 기기, 자동차, 산업용 기기 등에 널리 사용됩니다.임베디드 리눅스는 커스터마이징이 용이하며, 오픈 소스 커뮤니티의 지원을 받아 빠르게 개발되고 있습니다. 이를 통해 제조업체는 시스템 요구 사항에 맞게 운영체제를 조정하여 다양한 환경에서 사용 가능합니다.Embedded Linux Kernel의 역할과 구조역할임베디드 리눅스 커널은 시스템의 핵심 기능을 수행하며, 다음과 같..

Linux/Kernel Driver 2025.03.07

C 표준 API 최적화 및 성능 개선 방법

C 표준 API 최적화 및 성능 개선 방법C 언어에서 표준 API(Standard API)는 운영체제와 하드웨어에 독립적인 방식으로 다양한 기능을 제공하는 중요한 도구입니다. 하지만 무분별한 사용은 성능 저하를 초래할 수 있습니다. 본 포스팅에서는 C 표준 API를 최적화하고 성능을 향상시키는 방법에 대해 설명합니다.1. 표준 API 사용 시 성능 고려 사항C 표준 API는 범용성을 위해 설계되었지만, 일부 함수는 성능 저하를 일으킬 수 있습니다. 따라서 API를 사용할 때 다음 요소를 고려해야 합니다.함수 호출 비용: 빈번한 함수 호출은 성능 저하를 유발할 수 있습니다.메모리 사용: 불필요한 메모리 할당을 최소화해야 합니다.입출력(I/O) 성능: 파일이나 콘솔 입출력은 비용이 크므로 효율적인 방법을 사..

C 언어 표준 API 활용 예제

C 언어 표준 API 활용 예제C 언어를 사용한 실제 프로젝트에서는 표준 API를 적절히 활용하는 것이 코드의 품질과 효율성을 높이는 핵심 요소입니다. 이번 포스팅에서는 자주 사용되는 표준 API와 함께 활용 예제를 살펴보겠습니다.1. 문자열 처리 API (string.h)C에서 문자열을 다룰 때 가장 많이 사용하는 라이브러리는 string.h입니다. 대표적으로 strlen, strcpy, strcmp 등의 함수가 있습니다.문자열 길이 계산 (strlen)#include #include int main() { char str[] = "Hello, World!"; printf("문자열 길이: %lu\n", strlen(str)); return 0;}문자열 복사 (strcpy)#include..

CAN 리버스 엔지니어링 (자동차 및 산업용 기기 분석)

CAN 리버스 엔지니어링 (자동차 및 산업용 기기 분석)1. CAN 리버스 엔지니어링이란?CAN(Controller Area Network) 통신은 자동차, 산업용 기기, 로봇 등의 다양한 분야에서 널리 사용되는 직렬 통신 방식입니다. 하지만 제조사들은 CAN 메시지의 의미를 공개하지 않는 경우가 많아 특정 기기나 자동차의 동작을 분석하려면 리버스 엔지니어링이 필요합니다.CAN 리버스 엔지니어링이란, 캡처된 CAN 데이터에서 의미 있는 정보를 추출하고, 특정 메시지가 어떤 역할을 하는지 분석하는 과정을 의미합니다. 이를 통해 차량의 속도, RPM, 센서 데이터 등을 해석하거나, 특정 제어 신호를 찾을 수 있습니다.2. CAN 데이터 스니핑 기법2.1 CAN 데이터 캡처 도구CAN 데이터를 캡처하기 위해서..

CAN 통신 2025.03.06

C11 표준의 새로운 기능 및 개선된 라이브러리 함수

C11 표준의 새로운 기능 및 개선된 라이브러리 함수C11(ISO/IEC 9899:2011)은 C 언어의 최신 표준 중 하나로, 이전 C99 표준에서 다양한 기능이 개선되고 새로운 기능이 추가되었습니다. 이번 포스팅에서는 C11의 주요 개선 사항과 새로운 라이브러리 함수에 대해 예제와 함께 살펴보겠습니다.1. _Generic을 이용한 제네릭 프로그래밍C11에서는 _Generic 키워드를 도입하여 컴파일 타임에 타입을 판별할 수 있도록 하였습니다. 이를 이용하면 간단한 제네릭 함수를 구현할 수 있습니다.예제: _Generic을 활용한 제네릭 매크로#include #define type_print(x) _Generic((x), \ int: "정수", \ double: "실수", \ char*..

728x90
반응형