Hello:
We have the EVM set up for PCI-e boot using switch settings and connected to our PCI system through a PLX reverse bridge. On power-up and PCI auto enumeration, the 6678 DSP shows 5 bars, with BAR1 to BAR4 32MB each (expected per the BARconfig register).
The PCI config is as follows –
[33,0,0] type=BEFORE_STD
status=0x0810 ( CAP DEVSEL=0 TGT_ABORT_GEN )
command=0x0006 ( MEM_ENABLE MASTER_ENABLE )
bar0 in 32-bit mem space @ 0x80100000
bar1 in prefetchable 32-bit mem space @ 0x82000000
bar2 in prefetchable 32-bit mem space @ 0x84000000
bar3 in prefetchable 32-bit mem space @ 0x86000000
bar4 in prefetchable 32-bit mem space @ 0x88000000
However, Inbound Translation registers in the config space are as follows:
80100300: 00000001 10800000 00000000 00000000
80100310: 00000002 11800000 00000000 00000000
80100320: 00000003 12800000 00000000 00000000
80100330: 00000004 80000000 00000000 00000000
What does this configuration mean? I am able to access the complete 32MB from the enumerated PCI addresses with this, but all values 0s.
Since the Bootloader initialization code is in L2, (section 2.1 of Bootloader doc), I changed BAR1 to be able to access L2 the following way:
80100300: 00000001 82000000 00000000 10800000
Now, I am able to access the L2 memory. However, I can only access the first 16KB of it. Addresses beyond 16KB get target aborts. The problem is that the ROM Bootloader uses addresses at 0x0087_2E00 and later to initialize, and this address cannot be accessed due to the limitation. What could the problem in this setup?
A different question: about the BAR config for PCIe Boot. How is this value set? Is this a pin setting or is it the setting from the PCIe Boot Parameter Table? If it is a setting on the table, is there any way to change it from the default value of 0 other than using I2C?
Regards
-Anand