반응형

2025/03 101

DMA(Direct Memory Access) 처리: 개념과 사용법, 그리고 RK3399 예제

DMA(Direct Memory Access) 처리: 개념과 사용법, 그리고 RK3399 예제DMA란 무엇인가?DMA(Direct Memory Access)는 CPU의 개입을 최소화하여 메모리와 주변 장치 간에 데이터를 직접 전송할 수 있는 기능입니다. 이를 통해 데이터 전송 속도를 대폭 향상시키고 CPU의 부하를 줄일 수 있습니다. DMA는 고속 데이터 전송이 필요한 임베디드 시스템에서 필수적인 기능으로 사용됩니다.DMA의 작동 원리CPU는 DMA 컨트롤러에 데이터 전송 작업을 요청합니다.DMA 컨트롤러는 데이터 소스와 목적지 주소를 설정합니다.데이터 전송이 진행되며, CPU는 다른 작업을 수행할 수 있습니다.전송 완료 시 DMA 컨트롤러는 인터럽트를 통해 CPU에 완료를 알립니다.이와 같은 방식으로 ..

Linux/Kernel Driver 2025.03.25

IoT 시스템 아키텍처: 디바이스 <-> AWS IoT 서버 간 데이터 흐름

IoT 시스템 아키텍처: 디바이스 AWS IoT 서버 간 데이터 흐름1. 서론사물인터넷(IoT, Internet of Things)은 다양한 물리적 장치들이 인터넷을 통해 데이터를 교환하고 상호 작용하는 기술입니다. AWS IoT는 이러한 IoT 디바이스를 효과적으로 관리하고 데이터를 처리할 수 있도록 지원하는 클라우드 기반 서비스입니다. 본 포스팅에서는 IoT 시스템 아키텍처와 디바이스에서 AWS IoT 서버까지의 데이터 흐름에 대해 상세히 설명하겠습니다.2. IoT 시스템의 기본 구성 요소IoT 시스템은 여러 구성 요소로 이루어져 있으며, 각각의 요소들은 서로 데이터를 주고받으며 특정한 역할을 수행합니다.2.1 IoT 디바이스 (Edge Devices)IoT 디바이스는 센서나 액추에이터를 통해 물리..

AWS IoT 2025.03.24

Android HAL과 Binder IPC 이해하기

Android HAL과 Binder IPC 이해하기1. 서론Android 시스템의 가장 중요한 특징 중 하나는 계층화된 아키텍처입니다. 이 아키텍처는 앱 개발자와 하드웨어 제조사가 서로 독립적으로 개발을 진행할 수 있도록 합니다. 특히, HAL(Hardware Abstraction Layer)과 Binder IPC(Inter-Process Communication)는 Android 프레임워크와 하드웨어 간의 원활한 연동을 가능하게 하는 핵심 요소입니다.본 글에서는 HAL의 역할과 구조를 설명하고, Binder IPC가 HAL과 상위 프레임워크 간의 통신을 어떻게 처리하는지에 대해 AOSP 코드를 활용하여 살펴보겠습니다.2. HAL(Hardware Abstraction Layer)이란?2.1 HAL의 역할..

Android/Framework 2025.03.24

Interrupt Handling in Embedded Linux

Interrupt Handling in Embedded LinuxEmbedded Linux에서 인터럽트는 하드웨어 이벤트를 처리하는 중요한 메커니즘입니다. 이번 포스팅에서는 Linux에서 인터럽트 처리에 대한 개념을 이해하고, Rockchip RK3399를 기준으로 인터럽트 기반 드라이버를 작성하는 방법을 단계별로 살펴보겠습니다.1. Linux에서 인터럽트 처리 이해1.1 인터럽트의 개념인터럽트는 하드웨어 또는 소프트웨어에서 발생하는 이벤트를 커널이 처리하도록 알리는 메커니즘입니다. 하드웨어 인터럽트는 CPU에 신호를 보내 특정 이벤트를 처리하도록 요청합니다.인터럽트의 주요 용어IRQ (Interrupt Request): 하드웨어 디바이스가 CPU에 이벤트를 알리는 신호.ISR (Interrupt Ser..

Linux/Kernel Driver 2025.03.24

AWS IoT에서 MQTT, HTTP, WebSocket을 이용한 통신 개요

AWS IoT에서 MQTT, HTTP, WebSocket을 이용한 통신 개요1. 서론AWS IoT는 다양한 프로토콜을 지원하여 디바이스와 클라우드 간의 원활한 통신을 가능하게 합니다. 이 중에서 MQTT, HTTP, WebSocket은 가장 널리 사용되는 주요 프로토콜입니다. 각 프로토콜은 서로 다른 특성과 장점을 가지며, 사용자의 요구 사항에 맞게 선택할 수 있습니다.본 포스팅에서는 AWS IoT에서 지원하는 MQTT, HTTP, WebSocket 프로토콜에 대한 개요와 각각의 특징, 활용 방안에 대해 설명하겠습니다.2. AWS IoT에서의 프로토콜 개요AWS IoT Core는 클라우드와 디바이스 간의 연결을 위해 다음과 같은 주요 프로토콜을 지원합니다:MQTT(Message Queuing Teleme..

AWS IoT 2025.03.23

HIDL과 AIDL의 차이

HIDL과 AIDL의 차이Android 시스템에서 프로세스 간 통신(IPC, Inter-Process Communication)은 필수적인 요소입니다. Android에서는 이를 위해 AIDL(Android Interface Definition Language)과 HIDL(Hardware Interface Definition Language)이라는 두 가지 주요 인터페이스 정의 언어를 제공합니다. 이 두 기술은 목적과 사용 방식에서 차이가 있으며, Android 프레임워크와 하드웨어 간의 연결을 담당하는 중요한 역할을 합니다. 이번 포스팅에서는 AIDL과 HIDL의 차이를 설명하고, 각각의 동작 방식과 실제 AOSP 코드 예제를 통해 비교해 보겠습니다.1. AIDL(Android Interface Defi..

Android/Framework 2025.03.23

USB Device Driver 작성 및 Linux Kernel에서 USB 인터페이스 사용 방법

USB Device Driver 작성 및 Linux Kernel에서 USB 인터페이스 사용 방법이 글에서는 Embedded Linux 환경에서 USB Device Driver를 작성하고, Linux Kernel에서 USB 인터페이스를 사용하는 방법을 설명합니다. 또한, USB Touch Device를 예제로 들어 Input Report를 처리하는 방법까지 다룹니다. 이번 예제는 Rockchip RK3399 기반 시스템을 기준으로 작성되었습니다.1. USB Device Driver란?USB(Device Driver)는 USB 장치를 제어하고 커널과 사용자 공간에서 데이터를 주고받기 위한 소프트웨어 계층입니다. 이를 통해 USB 장치가 시스템에서 정상적으로 동작하도록 합니다.USB 장치 드라이버는 보통 아래..

Linux/Kernel Driver 2025.03.23

AWS IoT Device Management

AWS IoT Device Management1. 개요AWS IoT Device Management는 대규모 IoT 디바이스를 안전하게 등록, 모니터링 및 관리할 수 있도록 지원하는 AWS의 서비스입니다. IoT 환경에서는 수천 개에서 수백만 개의 디바이스를 운영해야 할 수도 있으며, 이를 효율적으로 관리하지 않으면 운영의 복잡성이 증가하고 보안 위협이 발생할 가능성이 높아집니다. AWS IoT Device Management는 이러한 문제를 해결하기 위해 제공되는 강력한 솔루션입니다.이 글에서는 AWS IoT Device Management의 주요 기능, 사용 방법 및 실제 활용 사례를 설명합니다.2. AWS IoT Device Management의 주요 기능AWS IoT Device Managemen..

AWS IoT 2025.03.22

HIDL(HAL Interface Definition Language) 개념과 구조

HIDL(HAL Interface Definition Language) 개념과 구조1. 개요Android에서 하드웨어 추상화 계층(Hardware Abstraction Layer, HAL)은 하드웨어와 상위 애플리케이션 및 시스템 서비스를 연결하는 중요한 역할을 합니다. Android 8.0(Oreo)부터 도입된 HIDL(HAL Interface Definition Language)은 기존 HAL 구조를 대체하며, 보다 명확하고 안정적인 인터페이스를 제공하기 위한 시스템입니다.본 포스팅에서는 HIDL의 개념과 구조를 설명하고, AOSP(Android Open Source Project) 코드 예제를 통해 이해를 돕도록 하겠습니다.2. HIDL의 필요성기존의 HAL 구현 방식은 C/C++을 기반으로 하며,..

Android/Framework 2025.03.22

USART Driver 작성 및 Linux Kernel에서의 USART 인터페이스 사용 방법

USART Driver 작성 및 Linux Kernel에서의 USART 인터페이스 사용 방법개요USART(Universal Synchronous/Asynchronous Receiver-Transmitter)는 임베디드 시스템에서 중요한 직렬 통신 인터페이스입니다. 이번 포스팅에서는 Rockchip RK3399 플랫폼을 기준으로, Linux Kernel에서 USART 드라이버를 작성하고, 이를 통해 데이터를 읽고 쓰는 방법을 알아보겠습니다.USART란?USART는 직렬 통신을 지원하는 하드웨어 모듈로, 동기 및 비동기 통신을 모두 지원합니다. 동기 통신은 별도의 클럭 신호를 사용하며, 비동기 통신은 스타트와 스톱 비트를 활용합니다. USART는 주로 센서, 디버깅, 데이터 로깅 등의 목적으로 사용됩니다.주..

Linux/Kernel Driver 2025.03.22
728x90
반응형