카테고리
생활코딩

raspberry pi4 bluetooth pairing with cli

살다 보면 터미널로 블루투스 페이링을 할 필요가 있다. bluetoothctl가 제공하는 scan on, pair, trust, connect로 가능하다. 처음 블루투스를 실행하면 잘 안되는데, 여기를 참조했다. ExecStart에 옵션을 잘 넣어주면 된다.

카테고리
생활코딩

xbox 360 드라이버 만지기1

내 라즈베리 파이에 usb 타입 xbox360 패드를 붙여 보고싶다. 리눅스 커널 xpad.c에 마이크로소프트 거의 모든 제품 usb vendor, product id가 등록되어 있다. xpad.c가 조금 복작하여 usb 인터럽트 사용 방법을 잘 이해할 수 없다. 키 입력 설정을 어떻게 할지는 나중 문제고… usb-skeletion.c 문서 역시 어렵다. 여기는 인터럽트 대신 대용량 데이터 전송을 목표로 했다. 그 중 가장 […]

카테고리
책과 영화

리눅스 커널의 구조와 원리

isbn: 9791158391980 저자가 디버깅, 커널을 강조하다보니, 제목이 너무 길어졌다. 다행히 초심자가 쉽게 이해할 수 있는 내용이다. 책 2권이다 보니 사기 아까웠지만, 읽고나면 살만한 책이다. 이 책이 자세하게 설명하여 커널이 어떻게 동작하는지 알 수 있다. 내용이 인터넷에도 있겠지만, 내가 찾는 수고를 저자가 했고, 틀린 내용을 저자가 걸러줬다. 이렇게 보면 지출할 만한 가격이다. 20년 전 리눅스를 시작하려 […]

카테고리
생활코딩

spinlock, mutex 실습

모듈을 로딩하면 kernel thread부터 만들어야 한다. 같은 책 초반에 나왔는데, 다시 보니 기억할 수 없다. 스레드를 만든 후 함수와 데이터를 넘겨야 하는데, 데이터가 void 포인터다. struct로 캐스팅 하고 싶은데, 에러가 났다. kernel 코드를 보고 괄호를 몇 번 붙였다. 아! ㅅㅂ. 구글 찾아보기보다 시(간)성비가 더 좋다. spinlock을 만든 후 초기화 하지 않으면, 사용할 수 없다. kernel에 […]

카테고리
생활코딩

timer 실습

kernel timer를 실습했다. callback 함수 argrument로 timer를 가지고 있는 구조체 데이터를 전달할 수 있다. work queue와 같은 방식이다. 커널 특정 버전부터 이런 식으로 변경되었는 듯 하다. 타이머가 만료되면 다시 등록하도록 했다. https://embetronicx.com/tutorials/linux/device-drivers/using-kernel-timer-in-linux-device-driver/ https://stackoverflow.com/questions/14953871/how-to-pass-custom-argument-to-linux-timers-function