728x90
반응형

2025/03 101

Embedded Linux Kernel: Platform Driver 작성하기

Embedded Linux Kernel: Platform Driver 작성하기임베디드 시스템에서 Linux Kernel을 활용하려면 특정 하드웨어와 연동하기 위한 드라이버 작성이 필수적입니다. 이번 포스팅에서는 Platform Driver 작성, Platform Device와 Driver의 이해, 그리고 Device Tree와 Platform Driver 연동 방법을 Rockchip RK3399 시스템을 예제로 설명하겠습니다.Platform Driver란?Platform Driver는 일반적으로 SoC(System on Chip) 기반 시스템에서 특정 하드웨어를 제어하기 위한 커널 드라이버입니다. Platform Driver는 Platform Device와 매칭되어 동작하며, 이 매칭은 Device Tr..

Linux/Kernel Driver 2025.03.19

압축 알고리즘의 실제 응용

압축 알고리즘의 실제 응용데이터 압축 알고리즘은 디지털 데이터를 효율적으로 저장하고 전송할 수 있도록 도와주는 핵심 기술입니다. 다양한 산업 및 기술 분야에서 압축 알고리즘이 활용되며, 그 적용 방식은 환경과 목적에 따라 달라질 수 있습니다. 이번 글에서는 파일 시스템, 네트워크 데이터 전송, 임베디드 시스템에서의 데이터 압축 활용 방안에 대해 살펴보겠습니다.파일 시스템에서의 압축파일 시스템에서의 압축은 저장 공간을 절약하고, 데이터 접근 속도를 향상시키는 중요한 기법입니다. 운영 체제와 파일 시스템은 다양한 압축 방식을 제공하며, 대표적인 예시는 다음과 같습니다.운영 체제 차원의 파일 압축일부 운영 체제는 파일 시스템 자체에서 압축 기능을 제공합니다. 예를 들어:NTFS 압축 (Windows): NTF..

커스텀 Android 빌드 환경 구성하기

커스텀 Android 빌드 환경 구성하기Android 오픈소스 프로젝트(AOSP)를 활용하여 커스텀 Android 빌드를 구성하는 과정은 다양한 설정과 환경 구성이 필요합니다. 본 포스팅에서는 커스텀 Android 빌드 환경을 구축하는 방법을 단계별로 설명합니다.1. 빌드 환경 준비AOSP를 빌드하기 위해서는 특정한 소프트웨어 패키지가 필요합니다. Ubuntu 20.04 또는 22.04 LTS 환경에서 진행하는 것이 일반적이며, 필요한 패키지는 다음과 같습니다.필수 패키지 설치Ubuntu에서 AOSP 빌드를 위해 필요한 패키지를 설치합니다.sudo apt update && sudo apt upgrade -ysudo apt install -y git-core gnupg flex bison build-ess..

Android/Framework 2025.03.18

Device Driver에서 Sysfs 등록

Device Driver에서 Sysfs 등록Sysfs란?sysfs는 Linux 커널에서 제공하는 가상 파일 시스템으로, 커널 객체의 속성과 정보를 사용자 공간에 노출하기 위해 사용됩니다. 이를 통해 디바이스 드라이버와 사용자 간의 인터페이스를 단순하고 효율적으로 제공할 수 있습니다./sys 디렉토리 아래에 구성된 sysfs는 트리 구조로 이루어져 있으며, 각 노드에 해당하는 디바이스나 커널 객체의 정보를 표현합니다. 디바이스 드라이버 개발자는 sysfs를 통해 사용자 정의 속성을 추가하거나 시스템 속성을 관리할 수 있습니다.Sysfs 등록의 장점가독성: 트리 구조로 조직화되어 있어 정보 접근이 용이합니다.표준화: 통일된 인터페이스로 사용자가 디바이스 상태를 확인하거나 설정을 변경할 수 있습니다.유연성: ..

Linux/Kernel Driver 2025.03.18

압축 알고리즘 성능 비교

압축 알고리즘 성능 비교1. 서론데이터 압축은 저장 공간 절약과 전송 속도 향상을 위해 필수적인 기술입니다. 다양한 압축 알고리즘이 존재하며, 각각의 알고리즘은 특정한 데이터 유형에 따라 성능이 다르게 나타납니다. 본 포스팅에서는 대표적인 압축 알고리즘을 비교하여 압축률, 속도, 그리고 메모리 사용량 측면에서 분석하고, 텍스트, 이미지, 비디오 데이터에 대한 실험 결과를 공유하고자 합니다.2. 비교 대상 압축 알고리즘이번 실험에서는 다음과 같은 대표적인 압축 알고리즘을 비교 대상으로 선정하였습니다.Huffman Coding: 무손실 압축 알고리즘으로, 문자 빈도수를 기반으로 가변 길이 코드를 생성하여 압축을 수행합니다.LZ77 & LZ78: 문자열 내 중복된 패턴을 탐색하여 사전(dictionary)을 ..

Android 빌드 시스템의 구조 (Soong, Makefile)

Android 빌드 시스템의 구조 (Soong, Makefile)개요Android 운영체제는 복잡한 소프트웨어 스택으로 구성되어 있으며, 이를 빌드하는 과정 또한 매우 방대합니다. Android 빌드 시스템은 이러한 빌드 과정을 체계적으로 관리하며, 현재 Soong과 기존의 Makefile 기반 빌드 시스템이 혼용되고 있습니다. 본 포스팅에서는 Android 빌드 시스템의 구조를 살펴보고, Soong과 Makefile을 비교하며 각각의 역할과 동작 방식에 대해 설명합니다.Android 빌드 시스템 개요Android는 초기에는 GNU Make 기반의 빌드 시스템을 사용하였으나, Android 7.0(Nougat)부터는 Soong이라는 새로운 빌드 시스템을 도입하였습니다. 현재 AOSP(Android Ope..

Android/Framework 2025.03.17

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
728x90
반응형