반응형

2025/03 101

Device Tree의 이해

Device Tree의 이해Embedded Linux Kernel을 다룰 때, Device Tree는 하드웨어와 소프트웨어를 연결하는 중요한 역할을 합니다. 이번 포스팅에서는 Device Tree의 개념과 기본 구조, 그리고 작성법에 대해 Rockchip RK3399 시스템을 기준으로 예제와 함께 살펴보겠습니다.Device Tree란 무엇인가?Device Tree는 하드웨어의 구성을 소프트웨어에 설명하기 위해 사용되는 데이터 구조입니다. 이는 특히 ARM 기반의 SoC(System on Chip)에서 널리 사용됩니다. 전통적으로 하드웨어 구성은 C 코드로 작성되었지만, 하드웨어가 복잡해지면서 유지보수가 어려워졌습니다. 이에 따라 하드웨어 정보를 독립적인 데이터 파일로 분리한 Device Tree가 도입되..

Linux/Kernel Driver 2025.03.10

Embedded Linux 부트 프로세스 이해하기

Embedded Linux 부트 프로세스 이해하기Embedded Linux를 사용하는 시스템에서 부팅 프로세스를 이해하는 것은 시스템의 안정성과 성능을 최적화하는 데 매우 중요합니다. 이번 포스팅에서는 U-Boot, Bootloader, Kernel, Rootfs 간의 관계와 부팅 과정을 Rockchip RK3399 시스템을 기준으로 분석하겠습니다.Embedded Linux 부트 프로세스란?Embedded Linux 부트 프로세스는 전원이 켜진 후 시스템이 운영체제를 로드하고 실행하기까지의 과정을 말합니다. 이 과정은 아래와 같은 주요 단계로 나뉩니다:Boot ROM: 초기 하드웨어 초기화 및 부트로더 로드.Bootloader (U-Boot): 커널과 Rootfs 로드.Linux Kernel: 운영체제 ..

Linux/Kernel Driver 2025.03.09

압축 알고리즘 Run-Length Encoding (RLE)

압축 알고리즘 Run-Length Encoding (RLE)1. 개요Run-Length Encoding(RLE)은 데이터 압축 기법 중 하나로, 연속적으로 반복되는 데이터를 효율적으로 저장하는 방식입니다. 특히 이미지, 텍스트 및 신호 데이터와 같이 동일한 값이 연속적으로 나타나는 데이터에서 높은 압축 효율을 보입니다.2. 원리 및 구조RLE의 기본 원리는 동일한 문자가 연속적으로 나타날 경우, 해당 문자와 반복 횟수를 함께 저장하는 것입니다. 예를 들어, 다음과 같은 문자열이 있다고 가정합니다.AAABBBCCDAA이 문자열을 RLE 방식으로 인코딩하면 다음과 같이 표현할 수 있습니다.A3B3C2D1A2이러한 방식으로 데이터를 압축하면, 데이터의 크기를 줄일 수 있습니다. 그러나 모든 경우에서 압축 효율..

CAN을 활용한 실시간 제어 시스템

CAN을 활용한 실시간 제어 시스템1. 개요CAN(Controller Area Network)은 실시간 제어 시스템에서 널리 사용되는 통신 프로토콜입니다. 자동차, 산업 자동화, 로봇 공학 등에서 빠르고 신뢰할 수 있는 데이터 교환이 필요할 때 CAN이 효과적으로 활용됩니다. 이번 글에서는 CAN을 활용한 실시간 제어 시스템의 개념과 사용법, 산업 자동화 및 로봇 제어에서의 적용 사례, 그리고 CANopen을 이용한 모터 및 서보 제어 방법을 살펴보겠습니다.2. 실시간 제어가 필요한 환경에서의 CAN 사용법2.1 실시간 제어 시스템이란?실시간 제어 시스템은 입력 데이터를 수집하고 빠르게 처리한 후 즉각적인 출력을 제공해야 하는 시스템을 의미합니다. 이러한 시스템에서는 데이터 전송 지연이나 패킷 손실이 발..

CAN/CAN 기초 2025.03.09

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/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/CAN 기초 2025.03.07

Embedded Linux Kernel의 개요

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

Linux/Kernel Driver 2025.03.07
반응형