MCP750 PCI
Till Straumann
strauman at SLAC.Stanford.EDU
Wed Jan 22 04:34:56 UTC 2003
gregory.menke at gsfc.nasa.gov wrote:
> Till Straumann writes:
> > Hi Gregory.
> >
> >
> > Although I don't know if your 'strange results' (what exactly are you
> > observing??)
>
>
> On Linux, I can dump the card's PCI and 1553 tranceiver registers and
> get a reasonable "idle state". I know the card is working because
> theres a 16 bit timer register that I can see ticking by printing it
> several times.
>
> When I print the same registers under RTEMS, I don't get the idle
> state values- nothing even close. The PCI chipset registers come back
> as 0xffffffff, as if the addresses was out of range whereas under
> Linux, they come back as 0x0. The tranceiver registers come back as
> all 0 except for the weird ones, some of which yield the same
> "uninitialized" value that they give under Linux. The timer tick
> register is not incrementing either.
>
> My test code only does ld_le16 for the tranceiver and ld_le32 for the
> pci chipset.
Could you attach your test code, please? And the values you read from
PCI config space (for command/status and base registers)?
>
> Maybe I can ask more intelligent questions;
>
> Are there any magic enable operations that are done with the mcp750
> onboard peripherals (in this case the dec21140) that I'm missing?
>
I can't think of any.
> Linux implements ioremap to get address ranges mapped thu the vm
> subsystem, are there BAT or mapping configuration changes needed to
> talk to other pci hardware under RTEMS?
AFAIK, no. (Unless you need more than 0x08000000 bytes - startup.c
lets the BAT map only that many.)
>
> Could there be extra incantations needed to get transactions out onto
> the backplane? I've looked thru the bsp fairly closely but haven't
> found anything.
>
I can perfectly talk to a PMC-network adapter plugged into my MVME23xx
under RTEMS. I scan config space for the vendor/device signature
BSP_pciFindDevice(BLAH_VENDOR_ID, BLAH_DEVICE_ID, instance,
&bus, &dev, &fun);
and read the base address from config space:
pci_read_config_dword(bus,dev,fun,PCI_BASE_ADDRESS_1,&base_addr);
Then I can see the device at (base_address + PCI_MEM_BASE). No special
magic needed.
BTW: what snapshot are you using?
-- Till.
PS: one more thing: you might want to define DEBUG and PCI_DEBUG
in 'shared/bootloader/pci.c' to let the bootloader dump the original
and modified PCI configurations. Attach a console dump to your next
posting, please (along with the test code).
> Thanks,
>
> Greg
>
>
More information about the users
mailing list