초짜 시스템 프로그래머입니다.

tempman의 이미지

약 반년전에 회사에 입사해서 시스템 프로그래머로 일을 하게 되었습니다.
아무것도 모를 때, 이곳에 질문 글을 올려서 큰 도움이 되었었는데,
한번 더 도움을 받고자 글을 올리게 되었습니다.

현재 회사에서 하는 업무는 디바이스 드라이버 제작입니다. 아직 일이 많지 않아서 다양한 디바이스 드라이버를 제작하지는 못했지만 이전보다는 어느정도 이해하고 있습니다. 아직 거의 레퍼런스 코드들을 참조해가며 제작하기는 하지만요.

그런데, 디바이스 드라이버뿐만 아니라 다양한 경험도 해보고 싶습니다.
디바이스 드라이버는 업무를 하면서 계속 경험을 쌓을 수 있고 다른 경험을 해보고 싶습니다.
누군가에게 저는 시스템 프로그래머입니다 라고 소개를 할려면 어떤 경험들을 해보면 좋을까요?
조금 구체적인 경험 예를 들어 'sensor의 device driver 제작'과 같이 작은 프로젝트 단위로 구체적으로 말씀해주시면 더욱 감사할 것 같습니다!

제가 여전히 아는 것이 없어서 명확히 질문을 못 드리는 것 같습니다.
선배님들의 도움을 부탁드립니다.

rexos33의 이미지

커널 디바이스 드라이버도 일종의 OOP 개념을 녹여 HAL 지원을 제대로 하면 다양한 H/W 플랫폼을 싱글 소스코드로 통합이 될 수 있습니다. 현재 담당하는 영역에서 확실하게 H/W 플랫폼 의존성을 줄이는 작업을 할 수 있겠죠.

그리고 좀 더 선진화된 디바이스 드라이버 작업을 하는 것도 좋습니다.
가령 작성한 디바이스 드라이버의 상태를 알기 위해서 procfs 및 sysfs 등을 지원하면 실시간 상태를 알 수 있고 또한 런-타임에 속성 및 동작 상태를 변경할 수 있겠죠.

최종적으로는 libudev 라이브러리리를 제대로 지원하면 좋겠죠.
(예제: https://gavv.github.io/articles/libudev-usb )
물론 개발 시스템에서 장치를 실시간 인식할때도 udev를 이용하는 것도 훌륭하겠죠.

디바이스 드라이버 말고 살짝 다른 부분으로 시선을 돌리면...
시스템 상태 모니터링을 실시간으로 하고자 노력한다면 nagios 같은 것을 지원해본다거나 MQTT/AQTT 등을 지원해서 클라우드 서비스를 지원해본다 거나 하는 것도 재미있겠죠.

모두들 행복하세요~