2025/03 10

Trace32 디버깅에 대해서

임베디드 시스템을 개발할 때, 코드 디버깅은 필수적인 과정이다. 특히, 실시간 운영체제(RTOS) 기반의 시스템이나 멀티코어 환경에서는 단순한 소프트웨어 디버거로는 한계가 있다. 이때 Lauterbach의 Trace32 같은 강력한 하드웨어 디버거가 필요하다.이번 글에서는 Trace32의 개념, 주요 기능, 실전 활용법을 다룬다.⸻1. Trace32란 무엇인가?Trace32는 독일 Lauterbach사가 개발한 하드웨어 디버거 및 트레이스 분석 도구다. 특히 임베디드 시스템, 멀티코어 프로세서, RTOS 기반 시스템을 디버깅할 때 강력한 성능을 발휘한다. • JTAG 디버깅: 칩 내부를 직접 제어하여 레지스터 및 메모리를 분석 • 트레이스(Trace) 기능: 프로그램 실행 흐름을 기록하고 분석 • RTO..

임베디드 2025.03.23

GDB 디버깅에 대해서

소프트웨어 개발에서 디버깅은 필수적인 과정이다. 특히 시스템 프로그래밍이나 저수준 개발을 할 때는 강력한 디버깅 도구가 필요하다. GNU Debugger(GDB)는 C, C++, 그리고 어셈블리 수준의 디버깅을 지원하는 가장 강력한 도구 중 하나다. 이번 글에서는 GDB의 기본 개념부터 실전 활용까지 다룬다.1. GDB란 무엇인가?GDB(GNU Debugger)는 프로그램 실행을 제어하며, 오류를 분석하고 문제를 해결하는 데 사용되는 디버거다. 주요 기능은 다음과 같다. • 브레이크포인트 설정: 특정 지점에서 실행을 멈추고 상태를 확인 • 단계별 실행(Step-by-step execution): 코드 한 줄씩 실행하며 흐름을 분석 • 메모리 및 변수 검사: 변수 값, 레지스터, 스택 상태 확인 • 어셈블..

임베디드 2025.03.22

Endianess란 무엇일까? Big-Endian 과 Little-Endian

오늘은 컴퓨터 과학에서 자주 등장하는 개념 중 하나인 Endianess에 대해 이야기해보려고 한다. 이름이 조금 낯설게 들릴 수도 있지만, 사실 이건 우리가 컴퓨터로 데이터를 다룰 때 아주 중요한 역할을 하는 개념이다. 그럼 천천히, 쉽게 풀어서 알아보자.1. Endianess가 뭔데?Endianess는 컴퓨터가 데이터를 메모리에 저장하거나 읽을 때, 바이트 순서(byte order)를 어떻게 처리하는지를 나타낸다. 특히 숫자 같은 데이터를 여러 바이트로 쪼개서 저장할 때, 그 바이트들을 어떤 순서로 배치하느냐가 바로 Endianess의 핵심이다.예를 들어, 숫자 0x1234를 생각해보자. 이건 16진수로 표현된 2바이트(16비트) 숫자인데, 바이트 단위로 보면 12와 34로 나뉜다. 이제 이걸 메모리에..

임베디드 2025.03.21

ARM Exception Level(EL) 알아보기(2): EL2(하이퍼바이저)와 EL3(보안 모드)

이전 글에서는 EL0(사용자 모드)와 EL1(커널 모드)에 대해 살펴보았다.이번 글에서는 EL2(하이퍼바이저 모드)와 EL3(보안 모드)의 역할과 동작 방식을 분석해보겠다.⸻1. EL2 – 하이퍼바이저 모드 (Hypervisor Mode)EL2는 가상화를 위한 특수 모드로, EL1에서 실행되는 OS를 여러 개 가상화할 수 있도록 관리한다.예시: KVM, Xen • EL1에서 실행되는 각 OS의 메모리 격리 및 CPU 스케줄링 관리 • EL1 커널이 EL2에 HVC(Hypervisor Call)을 통해 하이퍼바이저 기능을 요청⸻2. EL3 – 보안 모드 (Secure Monitor Mode)EL3는 ARM의 TrustZone 기술과 연계된 최상위 보안 실행 환경으로, 일반 OS가 접근할 수 없는 영역이다...

임베디드 2025.03.19

ARM Exception Level(EL) 알아보기(1): EL의 개념과 EL0~EL1 분석

ARM 아키텍처를 다룰 때 Exception Level(EL) 개념을 이해하는 것은 필수적이다. EL은 CPU의 실행 권한을 계층적으로 나누는 설계 방식으로, 운영체제(OS), 하이퍼바이저, 보안 펌웨어 등이 각자의 역할에 맞게 동작할 수 있도록 한다.이번 글에서는 ARM의 EL 구조를 개괄적으로 살펴보고, EL0(사용자 모드)와 EL1(커널 모드)에 집중하여 설명하겠다.⸻1. Exception Level(EL) 개요ARM 아키텍처(AArch64)에서는 총 4개의 Exception Level(EL0~EL3)을 제공하며, 숫자가 클수록 높은 권한을 갖는다.⸻2. EL0 – 사용자 모드 (User Mode)EL0는 애플리케이션이 실행되는 공간으로, 직접 하드웨어 리소스에 접근할 수 없다.운영체제(OS)가 제..

임베디드 2025.03.18

Flash 메모리: 대용량 비휘발성 저장 장치

임베디드 시스템에서 데이터를 저장하는 방식은 다양하지만, 대용량 데이터 저장과 빠른 읽기/쓰기 성능이 필요한 경우 가장 많이 사용되는 것이 Flash 메모리이다.Flash 메모리는 스마트폰, 자동차 ECU, 산업용 컨트롤러, IoT 기기 등 다양한 임베디드 시스템에서 핵심적인 역할을 한다. 이번 글에서는 Flash 메모리의 개념, 특징, 동작 원리, 그리고 임베디드 시스템에서의 활용 방안을 살펴보겠다.⸻1. Flash 메모리란?Flash 메모리는 전원이 꺼져도 데이터를 유지할 수 있는 비휘발성 메모리의 한 종류로, 빠른 읽기/쓰기 속도와 대용량 저장이 가능하다는 장점이 있다.EEPROM과 마찬가지로 Floating Gate MOSFET(플로팅 게이트 트랜지스터)을 기반으로 데이터를 저장하지만, 구조적으로..

임베디드 2025.03.17

EEPROM: 대표적인 비휘발성 메모리

임베디드 시스템에서 데이터를 저장할 때, 시스템이 전원을 꺼도 유지되어야 하는 정보들이 있다. 예를 들어, 장치의 설정 값, 로그 데이터, 고유한 식별 번호 등이 이에 해당한다. 이를 위해 사용되는 대표적인 비휘발성 메모리 중 하나가 EEPROM(Electrically Erasable Programmable Read-Only Memory)이다.이번 글에서는 EEPROM의 개념, 특징, 동작 원리, 그리고 임베디드 시스템에서의 활용 방안을 살펴보겠다.⸻1. EEPROM이란?**EEPROM(Electrically Erasable Programmable Read-Only Memory)**은 전기적으로 데이터를 지우고 다시 기록할 수 있는 비휘발성 메모리이다.과거에는 PROM(Programmable ROM)이나..

임베디드 2025.03.15

UART (Universal Asynchronous Receiver/Transmitter) 통신의 이해

임베디드 시스템에서 MCU와 주변 장치 간의 데이터를 주고받는 방식은 여러 가지가 있다. 그중에서 UART (Universal Asynchronous Receiver/Transmitter) 는 가장 기본적이고 널리 사용되는 비동기 직렬 통신 방식이다. 이번 글에서는 UART의 개념, 동작 방식, 프로토콜 구조, 그리고 실제 활용 사례를 살펴보자.⸻1. UART란 무엇인가?UART는 비동기식 직렬 통신 방식으로, 별도의 클럭 신호 없이 송신 장치와 수신 장치가 서로 동일한 전송 속도(baud rate) 로 데이터를 주고받는 방식이다.UART의 특징 • 클럭 신호 없이(비동기식) 데이터 전송 • 2개의 신호선(TX, RX)만 사용 • 1:1 연결 방식 (일반적으로 다중 장치 연결 불가능) • 풀 듀플렉스(F..

임베디드 2025.03.13

I²C (Inter-Integrated Circuit) 통신의 이해

임베디드 시스템에서 여러 장치가 데이터를 주고받는 방법에는 여러 가지가 있다. 그중에서도 I²C(Inter-Integrated Circuit) 는 적은 핀 수로 다중 장치를 연결할 수 있는 직렬 통신 방식으로, 센서, 메모리, 디스플레이 등 다양한 주변 장치에서 널리 사용된다. 이번 글에서는 I²C의 기본 개념, 동작 방식, 프로토콜 구조, 그리고 활용 사례를 살펴보자.⸻1. I²C란 무엇인가?I²C는 **필립스(현 NXP)**가 개발한 동기식 직렬 통신 프로토콜로, 두 개의 신호선만으로 여러 개의 장치를 연결할 수 있는 간단하면서도 강력한 방식이다.I²C의 특징 • 2개의 신호선(SDA, SCL)만 사용 • 마스터-슬레이브 구조 • 한 개의 버스에 여러 슬레이브 장치 연결 가능 • 클럭 신호(SCL)를..

임베디드 2025.03.12

SPI (Serial Peripheral Interface) 통신의 이해

임베디드 시스템과 마이크로컨트롤러(MCU)에서 주변 장치와 데이터를 주고받는 방법에는 여러 가지가 있다. 그중에서 SPI(Serial Peripheral Interface)는 높은 속도와 간단한 구조를 가진 직렬 통신 프로토콜로 널리 사용된다. 이번 글에서는 SPI의 기본 개념, 동작 방식, 그리고 실제 적용 사례를 살펴보자.⸻1. SPI란 무엇인가?SPI는 풀 듀플렉스(Full-Duplex) 방식의 동기식 직렬 통신 프로토콜이다. 1980년대 Motorola에서 개발한 이 프로토콜은 센서, 디스플레이, 메모리 등의 주변 장치와 마이크로컨트롤러 간의 데이터 교환을 용이하게 한다.SPI의 특징 • 클럭 신호(Synchronous Clock) 기반 통신 • 마스터-슬레이브 구조 • 풀 듀플렉스 전송 가능 •..

임베디드 2025.03.11