반응형

전체 글 821

Embedded Linux: Character Device Driver 작성

Embedded Linux: Character Device Driver 작성Embedded Linux에서 Character Device Driver는 장치와 사용자 공간 간의 데이터 교환을 처리하는 중요한 구성 요소입니다. 이번 포스팅에서는 Character Device Driver가 무엇인지 알아보고, Rockchip RK3399 시스템에서 간단한 Char Driver를 작성하고 테스트하는 방법을 설명하겠습니다.Character Device Driver란 무엇인가?Character Device Driver(문자 장치 드라이버)는 바이트 단위로 데이터를 처리하는 드라이버로, 키보드, 시리얼 포트, 터미널 등과 같은 장치를 제어하는 데 사용됩니다. 특징:순차적으로 데이터를 읽고 쓸 수 있습니다.파일 인터페..

Linux/Kernel Driver 2025.03.17

Zstandard: 고속 압축 알고리즘

Zstandard: 고속 압축 알고리즘1. Zstandard란?Zstandard(Zstd)는 Facebook에서 개발한 고속 무손실 압축 알고리즘으로, LZ77 기반의 압축 방식과 엔트로피 코딩을 결합하여 높은 압축률과 빠른 압축/해제 속도를 제공합니다. 기존의 zlib(gzip)보다 빠르면서도 높은 압축 효율을 제공하여 데이터 저장 및 전송에 유용하게 활용됩니다.Zstandard는 다양한 압축 레벨을 제공하며, 압축 속도와 해제 속도 간의 균형을 조절할 수 있습니다. 기본적으로는 싱글 스레드 기반으로 동작하지만, 멀티 스레드 압축 기능도 지원하여 성능을 극대화할 수 있습니다.2. Zstandard의 주요 특징고속 압축 및 해제: zlib보다 빠르고 효율적인 성능을 제공합니다.가변 압축 레벨: 1~22까..

Android 시스템 부팅 과정 개요

Android 시스템 부팅 과정 개요Android 운영체제는 리눅스 커널을 기반으로 한 복잡한 구조를 가지고 있으며, 시스템이 부팅되는 과정도 여러 단계로 이루어져 있습니다. 본 포스팅에서는 Android 시스템이 전원을 켠 후 정상적으로 동작하기까지의 주요 부팅 과정을 설명하겠습니다. 필요에 따라 AOSP(Android Open Source Project) 코드를 참고하여 설명을 보완하겠습니다.1. Android 부팅 과정 개요Android 시스템의 부팅 과정은 다음과 같이 주요 단계로 구분됩니다.부트로더(Bootloader) 실행커널 및 init 프로세스 실행Zygote 및 System Server 실행애플리케이션 프레임워크 및 런처 실행각 단계는 시스템이 정상적으로 부팅되기 위해 필수적인 역할을 수..

Android/Framework 2025.03.16

Linux Kernel 모듈 기본

Linux Kernel 모듈 기본Kernel 모듈이란 무엇인가?리눅스 커널은 기본적으로 운영 체제의 핵심 기능을 담당합니다. 커널 모듈(Kernel Module)은 커널의 기능을 확장하거나 추가 기능을 제공하기 위해 동적으로 로드되거나 언로드될 수 있는 독립적인 프로그램입니다. 커널 모듈의 가장 큰 장점은 시스템을 재부팅하지 않고도 새로운 기능을 추가하거나 수정할 수 있다는 점입니다.커널 모듈은 주로 다음과 같은 목적으로 사용됩니다:새로운 하드웨어 장치를 지원하기 위해 드라이버를 추가할 때시스템의 특정 동작을 제어하거나 확장할 때커널 기능을 디버깅하거나 테스트할 때간단한 Hello World 모듈 작성 및 로딩이제 Rockchip RK3399 시스템을 기준으로 간단한 "Hello World" 커널 모듈을..

Linux/Kernel Driver 2025.03.16

Brotli 압축 알고리즘

Brotli 압축 알고리즘Brotli는 구글에서 개발한 오픈 소스 압축 알고리즘으로, 특히 웹 환경에서 높은 압축률과 빠른 압축/해제 속도를 제공하는 것으로 알려져 있습니다. 이 알고리즘은 웹 성능 최적화를 위해 WOFF2 폰트 포맷과 HTTP 콘텐츠 인코딩에서 널리 사용됩니다.Brotli의 특징1. 높은 압축률Brotli는 LZ77 기반의 압축 기법과 허프만 코딩을 결합하여 높은 압축률을 제공합니다. 이는 gzip보다 더 나은 압축 성능을 보이며, 특히 텍스트 기반 파일(HTML, CSS, JavaScript)에서 효과적입니다.2. 빠른 압축 및 해제 속도Brotli는 다양한 압축 수준을 제공하며, 높은 수준에서는 압축률이 극대화되지만 속도가 느려질 수 있습니다. 일반적으로 웹 환경에서는 중간 수준의 ..

Android의 전체 아키텍처 개요

Android의 전체 아키텍처 개요Android는 개방형 모바일 운영체제로, 다양한 하드웨어에서 동작할 수 있도록 여러 계층으로 구성되어 있습니다. 본 포스팅에서는 Android의 전체 아키텍처를 Linux Kernel, HAL(Hardware Abstraction Layer), Native Libraries, Framework, Application Layer로 나누어 설명합니다. 또한, 각 계층의 역할과 AOSP(Android Open Source Project) 코드 일부를 예시로 들어 설명하겠습니다.1. Android 아키텍처 개요Android 아키텍처는 크게 다음과 같은 계층으로 구성됩니다:Linux Kernel: 하드웨어와 직접 상호작용하며 Android 시스템의 기반이 되는 계층HAL (Ha..

Android/Framework 2025.03.15

Embedded Linux에서 Root Filesystem 생성하기

Embedded Linux에서 Root Filesystem 생성하기임베디드 시스템에서 Linux Kernel을 구동하려면 Root Filesystem(이하 Rootfs)이 반드시 필요합니다. Rootfs는 커널이 부팅한 후 시스템 동작에 필요한 기본 파일, 라이브러리, 그리고 실행 파일 등을 포함합니다. 이 글에서는 Rootfs 생성 방법과 최적화, 커스터마이징 방법을 Rockchip RK3399 플랫폼을 기준으로 설명합니다.1. Root Filesystem의 개념Rootfs는 다음과 같은 요소들로 구성됩니다:기본 디렉토리 구조: /bin, /lib, /etc, /dev, /usr, /var 등.필수 파일 및 라이브러리: init 파일, C 표준 라이브러리 등.필수 디바이스 파일: /dev 디렉토리 내의..

Linux/Kernel Driver 2025.03.15

Bzip2 압축 알고리즘

Bzip2 압축 알고리즘1. 개요Bzip2는 무손실 데이터 압축 알고리즘으로, Burrows-Wheeler 변환(BWT)과 무브 투 프론트 변환(MTF) 등의 기법을 활용하여 높은 압축률을 제공합니다. 이 알고리즘은 gzip보다 높은 압축률을 제공하며, 텍스트 파일과 같은 반복 패턴이 많은 데이터에서 특히 효과적입니다.2. Bzip2의 동작 원리Bzip2는 여러 단계의 변환을 거쳐 데이터를 압축합니다. 주요 단계는 다음과 같습니다.2.1 Burrows-Wheeler 변환 (BWT)Burrows-Wheeler 변환은 입력 문자열의 모든 회전(rotation)을 생성한 후 이를 사전 순으로 정렬하고 마지막 열을 추출하는 방식으로 동작합니다. 이 변환을 통해 데이터의 연속적인 패턴이 강조되어 후속 압축 단계에..

Embedded Linux Kernel 설정 - Kernel Configuration

Embedded Linux Kernel 설정: Kernel ConfigurationEmbedded Linux를 개발할 때 가장 중요한 작업 중 하나는 Kernel Configuration입니다. 이 과정은 시스템의 요구사항에 맞는 기능과 드라이버를 선택하여 Kernel 설정 파일(.config)을 작성하고 조정하는 작업을 포함합니다. 이번 포스팅에서는 Rockchip RK3399 플랫폼을 예제로, Embedded 환경에 적합한 Kernel 설정 과정을 설명합니다.Kernel Configuration 기본 개념Kernel Configuration은 Linux 커널이 특정 시스템에 최적화되도록 설정을 조정하는 단계입니다. .config 파일은 이러한 설정의 결과물로, 컴파일 시 커널이 어떤 기능을 포함할지를..

Linux/Kernel Driver 2025.03.14

Deflate 알고리즘 (Gzip, zlib)

Deflate 알고리즘 (Gzip, zlib)1. 개요데이터 압축은 저장 공간 절약과 네트워크 전송 속도 향상을 위해 필수적인 기술입니다. Deflate 알고리즘은 이러한 목적을 위해 설계된 대표적인 압축 알고리즘 중 하나로, Gzip과 zlib 같은 다양한 압축 포맷에서 사용됩니다. 본 글에서는 Deflate 알고리즘의 개념과 Gzip 및 zlib과의 관계를 설명하고, Java와 C를 이용한 구현 예제를 소개하겠습니다.2. Deflate 알고리즘이란?Deflate는 1993년 Phil Katz에 의해 개발된 압축 알고리즘으로, 다음 두 가지 주요 기술을 조합하여 높은 압축률과 빠른 처리 속도를 제공합니다.LZ77(Lempel-Ziv 1977) 압축: 중복된 문자열을 참조하여 데이터를 효율적으로 저장합니..

반응형