JH721 SW자율차 [디바이스 드라이버] //7주차-4

JH·2021년 5월 27일
0

자율 자동차 SW 개발

목록 보기
12/37
post-thumbnail

Null 캐릭터 디바이스 드라이버 구현

캐릭터 디바이스 드라이버의 수현 (책 p.70)
insmod를 하면 하드디스크에 파일로 저장되었던게 memory에 붙음

(책 p.72) -> 드라이버 API
register_chrdev_region()
메이져가 0~255 //이미 많이 사용 중 //겹치지 않는 것이 중요 //지금은 늘어남

실습🐱‍💻

major number 받아오기


major number = 253 번의 장치 번호를 받은 것을 알 수 있다.

mknod

open


open(main 함수안(어플리케이션 안에)) -> libaray(libc) -> S/W Interrupt(제일 밑 바닥 //운영체제가 제공하는 기본함수) -> System call(S/W가 부름) -> VFS(File system: 파일의 이름만 알고 있기 때문에 메이저 번호를 찾아야 됨) -> CHR.Device File(정보들을 찾음) -> Device driver(하드웨어를 찾아감)
드라이버는 혼자 움직을 수 없어서 누군가가 움직여줘야됨(책 p.93)
그런게 open임(총의 방아쇠 역활)
open을 담은 library가 내용 중 (※비상👀)인터럽트(※비상✨) 걸어서 해줌
fd 에서 받아온 open은 file의 임시 번호
uers(APP) -> OS -> device

원래 복사는 2번 이루어 지는데 DirectX(window)/mmap(linux)는 한 번만 복사하면 됨(책.93 참조)

write

read

(책 p.100 참고)

ioctl

  1. 입력받기
  2. Device을 통한 LED control

    (영상은 7주차 파일로 가지고 있음)

etc

빠르게 쓰기
arm-no ~ gcc /dev/SK c 253 0
insmod ./sk.ko
mknod /dev/SK c 253 0
ls /dev -al | grep SK
./sk_app

poll 1대 다// io multiplexing


TIP🤷‍♂️

strace -ls : 운영체제와 무슨 대화를 했는지를 알 수 있는 리눅스 명령어

profile
JH.velog

0개의 댓글