Linux Kernel Module Parameters
·
Dev/Linux
1. Module Parameter가 왜 필요한가요?이전 글에서 만든 Hello 모듈은 동작이 고정되어 있었습니다.인사 횟수를 바꾸거나 이름을 바꾸려면 코드를 수정하고 다시 빌드해야 했죠. 실제 드라이버에서는 이런 상황이 자주 생깁니다.GPIO 핀 번호를 하드코딩하지 않고 로드 시 지정하고 싶다.디버그 로그를 켜고 끄고 싶다디바이스 개수나 버퍼 크기를 유연하게 조정하고 싶다이럴 때 Module Parameter를 씁니다.# 파라미터 없이 로드 - 기본값 사용sudo insmode params.ko# 파라미터 지정해서 로드sudo insmode params.ko count=3 name="Hoon" debug=1코드 수정 없이 동작을 바꿀 수 있습니다.2. module_param() 기본 문법module_p..
Linux Kernel Module 개발 입문 - Hello World 부터 시작하기
·
Dev/Linux
1. 커널 모듈이란?Linux 커널은 하나의 거대한 프로그램입니다. 그런데 모든 드라이버를 커널에 정적으로 포함시키면 커널 크기가 엄청나게 커지고, 새 드라이버를 추가할 때마다 커널을 다시 컴파일해야 합니다.이 문제를 해결하는 것이 Kernel Module(커널 모듈) 입니다.커널 모듈 = 실행 중인 커널에 동적으로 추가하거나 제거할 수 있는 코드 조각USB를 꽂으면 드라이버가 자동으로 로드되고, 뽑으면 언로드되는 것이 바로 커널 모듈 덕분입니다.Linux 커널 (실행 중)┌─────────────────────────────────────┐│ Core Kernel ││ ┌──────────┐ ┌──────────┐ ││ │ Module A │ │..