2010-12-28 4 views
1

우리는 PCIe를 통해 Linux PC 호스트에 연결된 임베디드 시스템을 개발 중입니다. 현재 구현 및 디버그 단계에서 장치의 전원을 끄고 전원을 켜거나 다른 보드를 사용해보십시오. 이로 인해 Intel PC에서 실행되는 Linux (Ubuntu 또는 Debian)에 문제가 발생합니다.Linux 부팅 후 연결된 PCIe 장치 찾기 및 활성화

일반적으로 테스트중인 장치를 삽입해야 할 때 PC가 부팅됩니다. 예상대로 Linux는 장치를 찾지 못하고 소프트웨어 응용 프로그램은 장치와 통신 할 수 없습니다. "lspci -v"명령을 실행하면 장치 목록이 표시되지 않습니다. 우리의 응용 프로그램은 libpci (-lpci로 빌드 된 프로그램)를 사용하여 장치에서 노출 된 단일 BAR에 액세스합니다.이 BAR은 page_remap을 수행하는 커널 모듈을 통해 "mmap"됩니다. 해결 방법은 PC를 재부팅 한 후 장치를 표시하고 활성화하는 것입니다.

PC를 너무 자주 다시 부팅 할 필요가없는 솔루션을 찾고 있습니다 (하루에 수십 번). 장치를 연결 한 다음 Linux 커널이 장치의 BAR을 감지하고 활성화하도록 일부 코드를 실행할 수 있습니까? PCI 지원 라이브러리와 예제 사용에 관한 문서를 찾고 싶지만 할 수 없었습니다. 모든 포인터가 감사하겠습니다. 아마도 내 코드에서 실행할 수있는 pci_enable_device() 또는 pci_find_device() 등과 같은 호출이 있을까요? 그래도 나는 알아낼 수 없다. 커널 모듈과 사용자 코드를 작성하여이 작업을 수행 할 수 있습니다. 즉, 루트 액세스 권한이 있는지 여부에 대한 제한이 없습니다.

주셔서 감사합니다 조언과 포인터, Guraaf에 대한 많은

답변

0

당신은 (장치가 연결되어 있지 않은 상태)로 모듈을 다시로드하려고 했나 :

rmmod yourmodule 
modprobe yourmodule 

그리고 장치를 다시 연결합니다.

+0

우리는 그것을 시도했지만 도움이되지 않았습니다. 아마도 우리는 어떻게 든 hotplug를 활성화해야합니까? PC 버스가 어떻게 작동 할 수 있는지도 모릅니다. 그리고/또는 hotplug를 허용하기 위해 커널을 재 컴파일해야하는 경우. 감사! – guraaf

+0

아마도 이런 식으로 시도해보십시오. 장치를 연결 해제하십시오, rmmod, 장치를 modprobe 모듈에 연결하십시오. – ismail

관련 문제