디바이스 드라이버 설치 관련 질문입니다.
안녕하십니까!
리눅스의 초보가 고수님들께 조언을 듣고자 합니다.
제가 오늘 디바이스 드라이버 실습을 하였습니다.
이전에는 insmod로 모듈을 동적으로 붙여서 디바이스를 사용하였습니다.
이렇게 되면 실행속도가 상승하고 커널의 사이즈가 줄어든다고 말씀해주셨습니다.
오늘은 정적으로 디바이스를 커널에 붙여서 다시 커널을 올려 기기를 재부팅해도
디바이스 드라이브가 붙어있는지 확인해 보았습니다.
컴퓨터의 우분투로
드라이버 파일과 클라이언트 파일을 만들고
이 드라이버 파일을 붙여줄 기기의 커널소스에서
/kernel에 .c파일을 올려주었고
/drivers/char에서 Kconfig에 제 디바이스를 config하였고
/drivers/char에서 Makefile에 제 obj-$에 .o파일을 컴파일 해달라고 하였습니다.
menuconfig에서 제 드라이버를 선택해주었습니다.
그리고 make zImage로 커널을 만들어서 기기에 커널을 삽입해주었습니다.
여기서 갑자기 궁금한 것이 생겼습니다.
질문1)kconfig에서 config옆에 붙여주는 이름은 Makefile이 컴파일 할 때, 찾을 수 있도록 설정해주는 건가요?
질문2)kconfig에서 tristate와 bool의 차이는 뭔가요?
질문3)tristate는 menuconfig에서 드라이버를 설정하기 위해 사용하는 것인가요?
질문4)zImage로 만든 커널에 들어가보니까 .c로 만든 파일에서 지정한 모듈이름으로 mknode를 지정해줘야 하던데 기기에서는 kconfig에서 config, tristate를 전혀 볼 수 없는 것인가요?
댓글 달기