도와주세요!!
글 수 15,339
2003.04.03 14:11:41 (*.186.48.184)
6706
: 그렇군요...쯧쯧... 근데 그러면 개발자들이 어떠한 장치를 하나 달려고 한다
: 면 모든 커널을 다 뒤져야 하는거예요?
꼭 그렇지는 않습니다.
저희도 디바이스 드라이버 만들때 가급적 기존 커널의 디바이스 드라이버를
사용합니다.
이것 저것 만들다 보니 실제로 내부 아키텍쳐를 공부하는 것이 아니라면
실제 IO와 인터럽트 관련 부분만 바꾸면 됩니다.
: 혹시 기억하실지 모르겠는데.. 제가 FIFO를 달아서 외부 입력을 받아서 저장
: 하고 싶거든요 외부에서 입력을 받아오는게 너무 어렵습니다..
FIFO 라면 제가 알기로 그냥 메모리 읽고 쓰듯이 하시면 될 듯한데요...
어떤 FIFO를 쓰시는 지 잘 모르니...
: FIFO를 CS4영역으로 메모리를 할당하게 해서 외부 데이타를 읽어오려고 했는
: 데... 정말 쉽지가 않은것 같아요.
: 죄송한데 몇가지 질문 드리고 싶습니다.
:
: 1. 커널안에 drivers 디렉토리에 거의 대부분의 장치드라이버의 디바이스 드라
: 이버가 전부 존재하는건가요? 아님 필수적인 것들만 일부 있는건가요?
저희가 제공하는 커널은 원래 pc에서 사용하는 커널입니다.
원래는 보드에 맞게 필요없는 것은 제거해서 제공해야 하는데
조금 귀찮고 또한 다른 용도의 디바이스 드라이버를 만들려면 소스가 있는게
좋다고 생각해서 제거는 안했읍니다.
하지만 저희가 패치한 ( 판매하는 확장 보드 ) 말고는
상당부분이 i386 것입니다.
그러므로 당연히 이용하시려면 암용으로 패치 하셔야 하죠..
저희가 하는 것 처럼요...
:
: 2.혹시 FIFO에서 사용가능한 디바이스 드라이버는 없는건가요?
글쎄요.. 뒤져 보지 않아서리...
제가 보기에는 다음과 같은 디바이스 드라이버를 만드는 것이 좋을 듯 싶네요
그냥 다른 기능은 없에고요..
mmap 를 io 영역으로 매핑하는 것과
ioctl 에 부가적인 기능을 지원하는
것으로요..
어플리케이션에서 가장 빠르게 접근할수 있는 방법이죠
read나 write 같은 기타 함수는 굳이 구현할 필요가 없을것 같네요
: 3.디바이스드라이버 모듈로 추가 할 경우 커널은 전혀 손대지 않아도 되는건가
: 요? 다른 어떠한 조치는 필요하지 않은건가요?
디바이스 드라이버 모듈을 어떻게 만드는 가에 따라 달라지니다.
하드웨어 주소를 가상 주소로 매핑하는 것을 ioremap 같은 함수를 쓰면
전혀 손대지 않아도 되고요..
그렇지 않다면 매핑 부분을 추가하셔야 합니다.
이지보드의 경우 arch/arm/mach-sa1100.ezboard.c
에 있읍니다.
: 면 모든 커널을 다 뒤져야 하는거예요?
꼭 그렇지는 않습니다.
저희도 디바이스 드라이버 만들때 가급적 기존 커널의 디바이스 드라이버를
사용합니다.
이것 저것 만들다 보니 실제로 내부 아키텍쳐를 공부하는 것이 아니라면
실제 IO와 인터럽트 관련 부분만 바꾸면 됩니다.
: 혹시 기억하실지 모르겠는데.. 제가 FIFO를 달아서 외부 입력을 받아서 저장
: 하고 싶거든요 외부에서 입력을 받아오는게 너무 어렵습니다..
FIFO 라면 제가 알기로 그냥 메모리 읽고 쓰듯이 하시면 될 듯한데요...
어떤 FIFO를 쓰시는 지 잘 모르니...
: FIFO를 CS4영역으로 메모리를 할당하게 해서 외부 데이타를 읽어오려고 했는
: 데... 정말 쉽지가 않은것 같아요.
: 죄송한데 몇가지 질문 드리고 싶습니다.
:
: 1. 커널안에 drivers 디렉토리에 거의 대부분의 장치드라이버의 디바이스 드라
: 이버가 전부 존재하는건가요? 아님 필수적인 것들만 일부 있는건가요?
저희가 제공하는 커널은 원래 pc에서 사용하는 커널입니다.
원래는 보드에 맞게 필요없는 것은 제거해서 제공해야 하는데
조금 귀찮고 또한 다른 용도의 디바이스 드라이버를 만들려면 소스가 있는게
좋다고 생각해서 제거는 안했읍니다.
하지만 저희가 패치한 ( 판매하는 확장 보드 ) 말고는
상당부분이 i386 것입니다.
그러므로 당연히 이용하시려면 암용으로 패치 하셔야 하죠..
저희가 하는 것 처럼요...
:
: 2.혹시 FIFO에서 사용가능한 디바이스 드라이버는 없는건가요?
글쎄요.. 뒤져 보지 않아서리...
제가 보기에는 다음과 같은 디바이스 드라이버를 만드는 것이 좋을 듯 싶네요
그냥 다른 기능은 없에고요..
mmap 를 io 영역으로 매핑하는 것과
ioctl 에 부가적인 기능을 지원하는
것으로요..
어플리케이션에서 가장 빠르게 접근할수 있는 방법이죠
read나 write 같은 기타 함수는 굳이 구현할 필요가 없을것 같네요
: 3.디바이스드라이버 모듈로 추가 할 경우 커널은 전혀 손대지 않아도 되는건가
: 요? 다른 어떠한 조치는 필요하지 않은건가요?
디바이스 드라이버 모듈을 어떻게 만드는 가에 따라 달라지니다.
하드웨어 주소를 가상 주소로 매핑하는 것을 ioremap 같은 함수를 쓰면
전혀 손대지 않아도 되고요..
그렇지 않다면 매핑 부분을 추가하셔야 합니다.
이지보드의 경우 arch/arm/mach-sa1100.ezboard.c
에 있읍니다.