pci 개발... 도대체.. 어떻게...

헤라크의 이미지

혹시 pci express 관련 하여 개발 하신 분 있으신가요?

아... 막막합니다.ㅠㅠ

pci express의 마스터모드 또는 슬레이브 모드로 동작하는 방법이 있다는데..

아.. 정말 모르겠습니다...

리눅스에서 pci express 디바이스 드라이버 어떻게 구현하는지

조언 좀 부탁드립니다...

아~ 정말 아무것도 모르고 도전하는게 재미있긴하지만

너무 안보이니까 막막하네요

저에게 구원의 손길을 부탁드립니다!!!

rexos33의 이미지

위치는 "커널소스/Documentation/PCIEBUS-HOWTO.txt" 입니다.

본인 생각으로는 어떤 디바이스인지는 모르겠으나 PCIe와 PCI 장치 드라이버는 그다지 다를 것 같지 않습니다.

모두들 행복하세요~

헤라크의 이미지

표준이 적혀있는 문서 찾아서 읽어보겠습니다 고맙습니다^^

stypr의 이미지

가장 좋은 방법은 남이 이미 짜놓은 코드를 보는 것입니다. 사용하시는 OS 의 PCI 드라이버 소스들을 보세요.

헤라크의 이미지

PCI - PCI 브릿지 드라이버를 어디서 구할 수 있을까요..ㅠㅠ

답변 주셔서 고맙습니다.

stypr의 이미지

음... 저도 PCI 관련 (특히 linux 는 내부적으로 모르는지라) 에 취약한지라 자세히는 답변 드릴 수 없어서 죄송합니다. ㅋ 리눅스에서는 PCI - PCI 브릿지 드라이버는 소스트리 drivers/pci/ 밑에 존재하구요. 별도로 .c 파일로 떨구져 있는 것이 아니라 하나의 PCI 드라이버 안에 포함되어 있기 때문에 코드를 잘 쫒아 가셔야 합니다. Device class 가 BRIDGE 인 경우를 처리하는 코드를 유심히 보시면 됩니다.

PS. PCI 드라이버는 제가 알기로 리눅스에서 가장 복작한 드라이버 중 하나로 알고 있습니다. :-) 워낙 많이 사용되고 변종 밑 하드웨어들이 많은지라..

헤라크의 이미지

이미 포함 되어 있다는 말씀이시군요!!!

고맙습니다!!! 한번 살펴 보겠습니다!!!

jeongheumjo의 이미지

그 회사 제품중에 PCI 드라이버를 쉽게 개발할 수 있는게 있어요
윈도우, 리눅스, VxWorks 등 다양한 OS 상에서 쉽게 드라이버를 생성해줘요..
상용이라서 돈 주고 사야 하는 것인데, 급할 때는 이걸 사서 쓰는 것도 방법이예요..
저는 그걸 평가판으로 사용해봤는데 드라이버 개발 전에 하드웨어 검증용으로는 최고입니다.
하드웨어가 검증이 되면 걱정없이 소프트웨어만 개발하면 되니까요..
소프트웨어를 개발할 때도 평가판에서 만져본 레지스터들이 바로 프로그램 대상이니까 소프트웨어 개발할 때도 도움이 많이되고,
특히 평가판에서 만들어낸 소스코드를 그대로 실제 코드에 사용할 수도 있습니다.
물론 전체 소스가 생성되는 것은 아니고 커널 부분의 핵심 코드는 라이브러리로 되어있어서 그런 부분은 다시 개발해야 합니다.
이상 저의 경험담이었습돠..

헤라크의 이미지

그 프로그램 이름이 무엇인가요??

아~ 한줄기 희망이!!

고맙습니다!!!

jeongheumjo의 이미지

http://jungo.com/st/download.html

사이트가 바뀌어서 제가 찾은 페이지는 위에있는데 제품 설명과 메뉴얼을 찾아보면 있을겁니다.
메뉴얼과 동영상 데모를 보면 사용법을 알기 쉽습니다.

제품이름이 VxWorks를 개발한 WindRiver 와 똑같습니다. 재밌는 건 두 단어가 중간에 사용되는 대문자가 다르다는 것입니다. D 냐 R 이냐

이렇게 홍보해주면 평가판으로 도움받은 것에 대한 보답은 되겠다는 생각이드네요..
저는 이 회사와 무관합니다....

헤라크의 이미지

고맙습니다 윈도우 드라이버도 아마 만들게 될거 같은데요

좋은 정보 고맙습니다^^

rainroot의 이미지


예전 3년전인가? pci-X to pci-e 브릿지를 사용한적이 있습니다. 칩셋이름은 기억이 안나는데 인텔계열이 었습니다.

그 당시에는 저도 pci에 대한 개념이 없어서 무지 힘들었는데요.

제가 사용했더 H/W의 구조는 (개발보드 pci-x)<--(pcix to pcie)-->(pcie 인텔서버보드) 이런 식으로 되어 있었습니다.

그림이 좀 이상하지만 자세히 보면 지금 구현하시고자 하는거랑 비슷할 듯 합니다.

-----------------------------------------------------------------------------------------------------------
이제 개념을 설명해 드리겠습니다. PCI는 data를 전송하는 interface입니다. 그러므로 해당 interface의 spac(프로토콜)이 존재하지요.
pcie 역시 pci의 표준 규격을 사용하기 때문에 비슷합니다.
따라서 리눅스의 pci drvier를 그대로 사용하지면 연결이 바로 됩니다.( 이건 PCI spac을 공부하셔야 합니다.)
-----------------------------------------------------------------------------------------------------------
그러므로 pci <-> pci 브릿지 드라이버는 이미 커널에 있습니다. 이건 USB 허브를 사용하는 원리와 비슷합니다. USB 포트가 존재하면 USB 허브를 이용해서 계속 확장이 가능하지요. 이때 USB표준 SPAC에 따라 확장이 되지요.(PCI도 마찬가지 입니다.)

제가 생각 했을 때 9head님이 구현하고자 하는것은 pci to pci 브릿지 드라이버가 아니라 target이 되는 해당 보드의 디바이스 드라이버를 만드셔야 합니다. 9head님의 해당 시스템 구조를 알려주시면 좀 더 자세히 알려드릴수 있지만..

좀 더 공부하시면 됩니다..

PS. 제가 경험해본 interface 중에 PCI만큼 쉽고 편리한 interface는 본적이 없습니다. 조금더 공부를 하신다면 쉽게 해결할수 있을 겁니다.
성공하시길...

헤라크의 이미지

제가 가지고 있던 개념이 잘못되어 있었던것 같습니다.

제가 구현하고자 하는 환경의 H/W의 구조는 (개발보드 pcie)<---->(pcie 인텔서버보드) 입니다.

그러면 각 보드의 pci들이 bridge 모드로 동작하는 것은 이미 디바이스 드라이버내에 내장되어 있으므로 그냥 될것이라는 말씀이시고

개발보드가 인텔 서버 보드에 슬레이브 디바이스로 인식되도록 개발보드의 디바이스드라이버만 만들면 된다는 말씀이신거죠?

아...........

진짜 고맙습니다.

완전 도움이 됐구요!! 진짜 고맙습니다.

헤라크의 이미지

혹시 메일 주소 좀 알려 주실수 있으신가요?ㅜㅜ

rainroot의 이미지


rainroot 지메일 입니다.. 많은 도움은 안되겠지만. 서로서로 도와야죠..