2010-12-28 81 views
2

私はVxWorks 653を使用していますが、私のターゲットはwrSbc7457 Power PCです。VxWorks 653のPCIデバイスでは、どのように1つのメモリを読み書きしますか?

私はwrSbc7457にメザニンカードを持っており、そのメザニンカードにメモリを読み書きしようとしています。 VxWorksのに慣れてあなたのそれらのために

、私は私のModuleOSのusrAppInit()機能に次のようにあります:OSのブートイメージがロードされるときに

printf ("Entering ModuleOS, usrAppInit() ...\n") ; 
printf ("sysModel() returns %s\n", sysModel()) ; 
pciDeviceShow (0) ; 


{ 
int pciBus, pciDevice, pciFunc ; 
UINT32 BAR_0_contents, BAR_1_contents ; 

printf 
    ("\npciFindDevice returns STATUS %d\n", 
      pciFindDevice (my_VENDORID, my_PMC_DEVICEID, 0, &pciBus, &pciDevice, &pciFunc) 
    ) ; 
printf ("\tand pciBus = %d, pciDevice = %d, pciFunc = %d\n", pciBus, pciDevice, pciFunc) ; 

printf ("\npciConfigInLong returns STATUS %d\n", 
     pciConfigInLong (pciBus, pciDevice, pciFunc, PCI_CFG_BASE_ADDRESS_0, & BAR_0_contents)) ; 
printf ("\tand Base Address Register 0 contains 0x%X\n", BAR_0_contents) ; 
printf ("\npciConfigInLong returns STATUS %d\n", 
     pciConfigInLong (pciBus, pciDevice, pciFunc, PCI_CFG_BASE_ADDRESS_1, & BAR_1_contents)) ; 
printf ("\tand Base Address Register 1 contains 0x%X\n", BAR_1_contents) ; 

私の目標は、次のように出力します

Entering ModuleOS, usrAppInit() ... 

sysModel() returns wrSbc7457 Power PC 

Scanning function 0 of each PCI device on bus 0 
Using configuration mechanism 0 
bus  device function vendorID deviceID class 
00000000 00000000 00000000 0000---- 0000---- 000----- 
00000000 00000001 00000000 0000---- 0000---- 00--0000 
00000000 00000002 00000000 0000---- 0000---- 000----- 

pciFindDevice returns STATUS 0 (OK) 
     and pciBus = 0, pciDevice = 1, pciFunc = 0 

pciConfigInLong returns STATUS 0 (OK) 
     and Base Address Register 0 contains 0x50000000 

pciConfigInLong returns STATUS 0 (OK) 
     and Base Address Register 1 contains 0x58000000 

私の質問は、どのように私のメザニンカードのメモリをホストのアドレス空間にマップするのですか?そのメザニンカードのメモリをどのように書き込み/読み込みますか?

答えて

1

残念ながら、普遍的な答えはありません。 PCIブリッジをプログラムする必要があります。 PCI自動設定を使用するかどうかによっては、その一部が異なります。

pciConfigおよび/またはpciAutoConfigのライブラリ参照を参照してください。

お使いのデバイスは、0x50000000と0x58000000に2つのアドレススペースがあるようですが、それはPCIブリッジではなく、PCIアドレススペースだと思います。

関連する問題