inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

한국에서 제일 쉬운 리눅스 커널 강의

실수 방지 드라이버 만들기-3

드라이버 작성 포맷

해결된 질문

90

gus

작성한 질문수 1

0

안녕하세요 선생님,

 

덕분에 linux kernel을 쉽게 접근하여 배우고 있습니다.

debugfs 드라이버 코드 작성하는 것을 보니 어느정도 틀이 있는 것 같더라구요.

(init 처리, set/get 등록)

모든 드라이버 작성이 위와 비슷한 틀로 작성이 되는 것일까요??

c linux Raspberry-Pi 운영체제 arm-architecture asm

답변 2

1

ojtube5

드라이버가 종류가 몇개가 있어요.

하나를 익히면 다른것도 감이 금방와요.

모든게 똑같지는 않지만 큰틀이 비슷해요.

그래서 질문하신 내용이 맞다라고 일단 볼수 있어요.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. gus님.

드라이버 개발은 일정한 패턴이나 구조를 따르기 때문에 비교적 비슷한 형태를 갖추고 있을 수 있지만, 드라이버의 종류나 목적에 따라 구현 방식이 다를 수 있습니다. 질문 주신 debugfs 드라이버의 경우와 같이, 일반적으로는 다음과 같은 주요 구성 요소를 포함하게 됩니다:

  1. 초기화 및 종료 함수: 드라이버가 로드될 때 수행될 초기화 작업과 언로드될 때의 정리 작업을 정의합니다. 이를 위해 보통 module_init()module_exit() 매크로가 자주 사용됩니다.

  2. 파일 연산 구조체: 드라이버에서 제공하는 파일 작업(읽기, 쓰기 등)을 정의하여 커널이 이를 호출할 수 있도록 합니다.

  3. 데이터 등록/설정 기능: 드라이버가 하드웨어와 상호작용하는 방식을 등록합니다. 이를 통해 드라이버는 해당 하드웨어와 연계된 동작(설정 값 변경, 현재 상태 읽기 등)을 처리할 수 있습니다.

  4. 디버깅 및 테스트: debugfs는 주로 디버깅과 모니터링 목적으로 사용되며, 이를 통해 시스템 및 드라이버의 상태를 쉽게 확인할 수 있습니다.

이와 같은 구조는 많은 드라이버 개발에서 공통적으로 사용되지만, 특정 하드웨어나 기능에 따라 추가적인 설정이나 핸들러가 포함될 수 있습니다. 따라서 반드시 모든 드라이버가 동일한 틀을 갖는 것은 아니지만, 개념적으로 비슷한 구조를 취하는 경우가 많습니다.

관련된 더 자세한 설명이나 차이를 알고 싶으시다면, 링크된 드라이버 개발 패턴 및 구조에 대한 토론글을 참조하시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

리눅스로 진행해도 될까요?

0

7

2

민구님 설치시 또 막혀서 질문드려요

0

27

2

git clone 명령어를 어디 터미널에다 붙여넣어야 하나요?

0

32

2

html 파일을 못 불러 옵니다.

0

30

2

26년 1회차 기출 강의

0

48

2

안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.

0

31

1

56강 bcm2835-mailbox.c 파일 질문

0

71

2

'drivers/soc/bcm/bcm2835-power.o 에러 입니다.

0

102

3

라즈베리파이5 도 상관없을까요

0

121

1

ftrace를 사용하면서 궁금한 점.

0

95

2

install.txt를 실행하는 이유에 대해서.

0

105

2

네트워크 연결이 안됩니다

0

125

2

고아(?) 프로세스의 부모 선정이 어떻게 되는지 궁금합니다

0

132

3

arm 아키텍처는 4를 빼는 이유가 무엇일까요

0

184

3

xshell 와이파이 연결이 안됌.

0

217

2

시즌 2, 3 는 언제 수강할 수 있을까요?

0

267

2

current 매크로를 이용할때 sp_el0 를 활용하는 이유

0

213

2

context switching 을 할때 수행되는 asm 코드 관련 문의 드립니다.

0

179

3

라즈베리파이 메모리 사이즈 큰거 사도 될까요?

0

344

1

set_ftrace 질문

2

258

2

강의자료

0

184

2

재 빌드시 변경파일만 반영하지 않고 처음부터 빌드 됩니다.

0

335

1

kernel build 오류

0

309

3

라즈베리파이 용량부족

0

611

3