임베디드 시스템, Device Driver 제작 과정 좀 알려주세요!!
과제에 보면.. device driver 제작 과정..
[Procedure]
Device driver의 제작 과정은 아래와 같은 단계로 이루어 진다.
+ Hardware 분석
▪ H/W 벤더에서 제공하는 데이터 쉬트를 이용하여 H/W 분석을 한다. S/W 개발자에
게는 레지스터들의 의미와 쓰임새를 이해하는게 가장 중요하다.
+ Device driver 인터페이스의 설계
▪작성할 device driver를 사용할 응용 프로그램 개발자와의 미팅을 통해 응용 프로그
램과 디바이스 드라이버 사이의 인터페이스를 설계한다.
+ 모듈을 이용한 device driver 제작, 디버깅 및 테스트
▪모듈과 NFS를 이용하여 device driver 코딩과 테스트를 한다. 이 단계에서는 일반적
으로 간단한 테스트용 응용 프로그램을 이용하여 device driver의 정상 작동여부를 테
스트한다.
+ 커널에 device driver 패키징
▪커널 소스에 D/D 소스를 추가하고 사용자가 make menuconfig를 통하여 디바이스
드라이버의 지원 여부를 선택할 수 있도록 최종 패키지 한다.
이라고 되어있는데요.. 보드는 mba2440 사용하구요..
데이터 쉬트 어딨는지도 모르구요 -_-; (홈페이지에 있나..)
응용 프로그램 개발자 그런거 없구요 -_-;
아 bootloader 고치는건 해봤는데요
device driver 이건 어떤 과정으로 만드는거죠?
그냥 헤더파일 c파일 만들어서 (파일명 아무렇게나?)
ads v1.2였나.. 암튼 코딩 프로그램으로 컴파일한다음에
bin 파일 만들어서 보드 flash에 올리면 되는건가여?
아니면 이것도 무슨 부트코드 고쳐야 되나여?
배운게 거의 없어서리.. 흑 미치겠네여
device driver는 OS마다
device driver는 OS마다 구현 방식이 틀리기 때문에 우선 리눅스라는 가정하에 말씀 드리겠습니다.
device driver는 C로 개발이 되며, 컨트롤 하려는 디바이스에 대한 정보를 바탕으로 kernel module programming 하는 것입니다. 어플리케이션에서의 C 프로그래밍과 크게 다를게 없지만, module programming은 main함수 시작하는 대신, module이 insert 되는 시점부터 module_init으로 정의된 함수에서 시작이 되며, module을 내리면, module_exit로 정의된 함수가 호출되면서 종료하게 됩니다. 또한 어플리케이션에서 사용하는 library를 사용할 수 없고, kernel에서 EXPORT한 함수들만 사용하게 되며, header는 개발하려는 kernel에서 해당 source의 include 디렉토리에 있는 것들을 사용하게 됩니다. 물론 makefile에 대한 작성도 module programming 시에는 약간 틀려지게 되는데, 이건 그리 어렵지 않습니다. 좀더 자세한 정보는 책 LDD(Linux Device Driver) 혹은 커널 프로그래밍이란 책이 있는데, 이 두권을 참고하시면, 도움이 되실거 같습니다.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
댓글 달기