Plx9030카드를 장착한 후, PLX-technologytm으로부터 받은 SDK의 설치와 사용에 대해 알아본다.

우선, PlxSdk는 http://www.plxtech.com/products/sdk/pde으로부터 내려받을 수 있다.

내려받은 파일은 PLX_SDK_Linux_v7_11_Final_2014-03-04.zip이고, linux버젼은 ubuntu-13.10에 설치된 3.10.32이다.
PLX_SDK_Linux_v7_11_Final_2014-03-04.zip을 풀면 다음 파일이 있다.

  • Documentation: 설치 및 API사용에 관한 문서들
  • PlxSdk.tar

PlxSdk.tar는 Windows/Linux/Dos에서 Plx디바이스를 사용하기 위한

  • 드라이버 코드소스
  •  라이브러리형태의 API모음
  • Sample코드

설치하기 위해 다음을 실행한다.
   $ tar -xf PlxSdk.tar

   $ pwd

       /home/falinux
   $ ls -F PlxSdk
      Bin/  Driver/  Include/  Makefile  Makefiles/  PlxApi/  Samples/
   $ ls -F Driver   # 드라이버 소스코드
      Makefile  Source.Plx6000_NT/   Source.Plx8000_NT/  Source.PlxSvc/    builddriver*
      Plx9030/  Source.Plx8000_DMA/  Source.Plx9000/     buildalldrivers*
   $ ls PlxApi      # Plx라이브러리
      Aardvark.c  Eep_8000.c  Library/  PlxApi.c       PlxApiI2cAa.c
      Aardvark.h  Eep_8000.h  Makefile  PlxApiDebug.h  PlxApiI2cAa.h
   $ ls Samples     # 샘플 프로그램들
      ApiTest/           LocalToPciInt/  NT_Sample/       PlxCm/       PlxDmaSglNoApi/   Shared/
      DSlave/            NT_DmaTest/     PLX_Samples.txt  PlxDma/      PlxEep/
      DSlave_BypassApi/  NT_LinkTest/    PerfMonitor/     PlxDmaPerf/  PlxNotification/
   $ ls Bin
      Plx_load*  Plx_unload*  startlog*


  ** PLX SDK 홈디렉토리 설정

      PLX_SDK빌드와 실행을 위해서는 그 소스와 바이너리파일이 있는 위치를 알려주어야 한다.

      ~/.bashrc파일 하단에 다음 줄을 추가한다.

            export PLX_SDK_DIR=/home/falinux/PlxSdk


1. 설치
    a)  Application빌드
     최상위 디렉토리에서 make를 입력하면,
         PlxApi의 라이브러리 PlxApi.a와 Samples밑의 각 디렉토리에 있는 테스트/샘플 프로그램들의 빌드를 시작한다.
    b) 'Driver'디렉토리로 들어가서,
       $ builddriver 9030
       9030은 Plx의 DevId(또는 모델?)이다. 가용한 값은
         8000n, 8000d, 6000n, 9050, 9030, 9080, 9054, 9056, 9656, 8311, Svc
       이다.
       빌드결과로 나오는 리눅스모듈은 'Driver/Plx9030'밑에 Plx9030.ko로 있다.
       debug-모드의 드라이버(Plx9030_dbg.ko)는 디버깅문을 커널메시지로 많이 내 놓는데, 다음과 같이 만들 수 있다.
       $ builddriver 9030 d


2. 사용
    빌드된 샘플 프로그램파일은 각 디렉토리의 App밑에 위치한다.
    Samples/ApTest밑에 App을 보면, ApiTest라는 이름의 실행파일이 보인다. 이 파일을 실행시키면 Plx드라이버의 기본적인 기능을 테스트할 수 있다.
     a) 테스트하기 위해서 일단 드라이버를 로딩하여야 한다.
       $ cd Bin
       $ sudo ./Plx_load 9030  # Admin권한이 필요하다.
     b) cd Samples/ApiTest/App
       $ ./AiTest
    커널메시지를 보면,
         "ERROR - No supported devices found" 라는 메시지가 보인다.


3. 버그?!

이 메시지의 소스에서의 위치는 'Driver/Source.Plx9000/Driver.c:#241'인데,
pGbl_DriverObject->DeviceCount의 값이 0이면 에러로 처리하게 되어 있다.
DeviceCount는 DeviceObject가 attach되면 +1되는 값으로 이전 초기값을 그대로 가지고 있기 때문에,   항상 0이 될 수 밖에 없다.

문제를 해결하기 위해서는 #238부터 #244까지를 삭제하여야 한다.

4. 다시 빌드하고 Plx_load를 실행시겼을 때 다음과 같은 메시지가 나온다.
       "Probe: -- Unsupported Device --"
     이를 해결하기 위해서 다음을 확인하였다.
      $ lspci
       .....
       04:0c.0 Bridge: Device 1c34:9030 (rev 01)
       04:0d.0 Bridge: Device 1c34:9030 (rev 01)
       04:0e.0 Bridge: Device 1c34:9030 (rev 01)
       04:0f.0 Bridge: Device 1c34:9030 (rev 01)
       4개의 PCI디바이스에 대한 정보를 보여주고 있다. 각 줄의 0x1c34가 VendorID를 나타내고 있다.
       'Driver/Source.Plx9000/Driver.c의 #90~#92의 첫번째값 0x10B5을 0x1C34로 변경해 준다.
     또한, 'Include/Plx.h:#64'의 PLX_VENDOR_ID의 값도 변경한다.


5. 다시 Plx_load를 실행한다.
    [ 1314.619676] Plx9030: <========================================================>
    [ 1314.619678] Plx9030: PLX driver v7.10 (32-bit) - built on May 14 2014 17:51:37
    [ 1314.619680] Plx9030: Supports Linux kernel version 3.10.32
    [ 1314.619681] Plx9030: Allocated global driver object (f1509840)
    [ 1314.619685] Plx9030: Registered driver (MajorID = 248)
    [ 1314.619699] Plx9030:    --------------------
    ...........
    드라이버가 잘 올라갔고, Device또한 인식되었다.(첨부파일 'plx9030_module_load.txt'참조바람)


6. ApiTest를 실행한다.
                            PLX SDK API Test
                              January 2007

                     1. 9030 1c34  [b:04 s:0c f:0]
                     2. 9030 1c34  [b:04 s:0d f:0]
                     3. 9030 1c34  [b:04 s:0e f:0]
                     4. 9030 1c34  [b:04 s:0f f:0]
                     0. Cancel

           Device selection --> 1

                       PLX API Test
    =================================================
    Selected: 9030 1c34 [b:04  s:0c  f:0]

    PlxPci_ChipTypeGet():
      Getting PLX Chip Type.......... Ok
        Chip type:  9030
        Revision :    AA

첨부파일('ApiTest결과.txt')참조바람
   

이상으로 Plx9030의 Driver설치와 Test방법에 대해 알아 보았다.