OpenCores
no use no use 1/1 no use no use
PCI Target and Windows XP
by thunter0512 on Mar 1, 2010
thunter0512
Posts: 2
Joined: Aug 20, 2009
Last seen: Jul 26, 2011
I have successfully used the OpenCores PCI Target (pci32tlite) on a Raggedstone1 board (made by Enterpoint) running under Linux on a x86 PC.

The same PC fails to boot under Windows XP SP3.

I have tried several different Windows PCs - some work perfectly, but most will not boot Windows with the PCI Target implementation.

Does anybody have suggestions on how best to identify the cause or debug this problem?

I have also tried the Opencores PCI Bridge and it works perfectly on BOTH Linux and Windows XP (using the same PC), but is too slow for my application.

Thanks for any help

Tom
RE: PCI Target and Windows XP
by thunter0512 on Mar 17, 2010
thunter0512
Posts: 2
Joined: Aug 20, 2009
Last seen: Jul 26, 2011
Has anyone used the OpenCores PCI Target (pci32tlite) with Windows XP?
RE: PCI Target and Windows XP
by jwagnerhki on Mar 26, 2010
jwagnerhki
Posts: 1
Joined: Jan 24, 2009
Last seen: Mar 10, 2020
Used it in bar0 io mode in Win7. It does not work very reliably. But in linux it works fine.

However to be able to boot at all I had to modify pciregs.vhd and reduce bar0 io size from 1024B to 512B. Probably for tidiness the other files need editing, too, where there are bar0 references with "32 downto 9" and "15 downto 9".

If you have booting probs and are using "1BARIO" (not "1BARMEM") then maybe the below helps...?

bario_g: if (BARS="1BARIO") generate
BAR0b(31 downto 16) '0');
BAR0b(7 downto 1) '0'); -- was: 8 downto 1
BAR0b(0) end generate;

--+---------------------------------------------------------+
--| BAR0 512Bytes IO address space (bits 15-9) |
--+---------------------------------------------------------+
rbario_g: if (BARS="1BARIO") generate
RBAR0IOWR: process( clk_i, rst_i, we3BAR0, dat_i )
begin
if( rst_i = '1' ) then
BAR0b(15 downto 8) '0'); -- was 15 downto 9
elsif( rising_edge( clk_i ) ) then
-- Byte 3
if( we3BAR0 = '1' ) then
BAR0b(15 downto 8) end if;
end if;
end process RBAR0IOWR;
end generate;
RE: PCI Target and Windows XP
by peio on Mar 29, 2010
peio
Posts: 19
Joined: Nov 25, 2004
Last seen: Dec 20, 2023
It seems to be a PCI Specification not compliance. PCI devices may not consume more than 256 bytes per I/O Base Address Register(pg 197 PCI 2.1 Spec). And actually the core consumes 512B.

Tom, can you confirm if the core works Ok on Windows changing from 512B I/O space to 256B?.

Regards,

Peio
no use no use 1/1 no use no use
© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.