Linux Kernel Module 개발 입문 - Hello World 부터 시작하기
·
Dev/Linux
1. 커널 모듈이란?Linux 커널은 하나의 거대한 프로그램입니다. 그런데 모든 드라이버를 커널에 정적으로 포함시키면 커널 크기가 엄청나게 커지고, 새 드라이버를 추가할 때마다 커널을 다시 컴파일해야 합니다.이 문제를 해결하는 것이 Kernel Module(커널 모듈) 입니다.커널 모듈 = 실행 중인 커널에 동적으로 추가하거나 제거할 수 있는 코드 조각USB를 꽂으면 드라이버가 자동으로 로드되고, 뽑으면 언로드되는 것이 바로 커널 모듈 덕분입니다.Linux 커널 (실행 중)┌─────────────────────────────────────┐│ Core Kernel ││ ┌──────────┐ ┌──────────┐ ││ │ Module A │ │..
STM32 NVIC, 인터럽트 우선순위 완전 정복
·
TIL
"버튼 누르면 UART 수신이 씹혀요", "두 인터럽트가 동시에 터졌는데 어떻게 되나요?"NVIC를 모르면 반드시 겪는 문제들입니다. 1. 인터럽트가 뭔가요?CPU는 기본적으로 코드를 위에서 아래로 순서대로 실행합니다.그런데 현실에서는 "지금 당장" 처리해야 할 일이 생깁니다.버튼이 눌렸다UART로 데이터가 들어왔다타이머가 만료됐다이럴 때 CPU에게 "하던 일 잠깐 멈추고 이거 먼저 처리해"라고 신호를 보내는 것이 인터럽트 (Interrupt)입니다.일반 실행 흐름:main() ──────────────────────────────────────► [코드 A] [코드 B] [코드 C] [코드 D]인터럽트 발생 시:main() ──────────────┐ ┌──────────..
UART 통신, 제대로 이해하기
·
TIL
임베디드를 시작하면 가장 먼저 만나는 통신 프로토콜, UART. "그냥 시리얼 통신이잖아요"라고 넘기기기엔 아는 만큼 보이는 게 달라집니다. 1. UART가 뭔가요?UART는 Universal Asynchronous Receiver/Transmitter의 약자입니다.이름을 풀어보면 그 자체로 설명이 됩니다.단어의미Universal다양한 디바이스와 호환Asynchronous클럭 신호 없이 통신 (비동기)Receiver/Transmitter송신과 수신을 모두 담당 임베디드 개발을 하다 보면 UART를 가장 먼저, 가장 많이 만납니다. MCU와 PC를 연결해 디버깅 메시지를 출력하거나, 두 MCU끼리 데이터를 주고받을 때 쓰입니다.2. 직렬 vs 병렬 통신 UART를 이해하려면 먼저 직렬(Serial) 통신..