1 Changes to the default BSP
2 PCI support
3 TOD clock
4 Printerport (MVME2700)
Index
I do not have a MV23xx-target, so I cannot verify or fix any problems related to this HW. If you have made any changes to the BSP and want to share them with the other VxWorks developers, please send them to me (Johan Borkhuis), so they can be put here.
Q: The following question was written in the newsgroup by Kirk Ellett
(kirk.d.ellett@boeing.com):
I am in the unenviable position of integrating several different PMC
cards for use (not all at the same time) on a Motorola MV2308 board.
Since the Motorola board isn't PCI aware, which sucks, I must manually
configure the PCI registers and base addresses for each card. I had
successfully done this using the Pseudo-PREP memory model, by writing PCI
memory addresses to the base address registers and using CPU addresses
that looked like this.
0xC0000000 | (PCI address)
I now have to integrate the PMC cards using an Extended VME memory model. Since my PMC cards fit fine in a 16MB space, I kept the same PCI addresses that I used on Pseudo-Prep, and the CPU addresses became...
0xFD000000 | (PCI address)
This was an utter failure for memory reads and writes. I have tried a number of different combinations of CPU addresses vs. PCI addresses, but none of them work. Can anyone give me or point me to a short rundown of how to map PMC cards to CPU memory using Extended VME model?
A: An answer to this came from Joel R. Darnold (jrdarno@sandia.gov):
I have recently felt your pain integrating PMCs on a MVME2307 board but have successfully added 2 different boards to our system. One of the PMCs is a custom design of ours and another is a Pentek 7110. Both boards use a PLX chip as the PCI bridge.
It looks like you are correct with your addressing, the Processor's PCI memory base starts at 0xfd000000 but something you might not have figured out is that it is translated up to 0xfd000000 on the PCI bus. In other words in the VxWorks extended model, the lowest PCI address is 0xfd000000. So.....the address that you would load into your PMC device's PCI base address register would be 0xfd000000 + (PCI address)which would also be the address to use from the Processor's point of view.
I've included a utility which will scan thru the PCI bus config and find all the devices on the PCI. It will display all of the configuration registers for anything on the bus. I found it useful when I was setting up my PMCs.
- IDpciDevices.c
- CLIB.h
Q: How do I read the TOD clock on a MVME2300 board?
A: Attached are a couple of routines that work on mvme2300 with UNIX host. This gets time from both the PPC and UNIX host.
(From: Larry Sinn, sinnl@sd-star.com)
There was an addition to this message from Serge Wenger
(serge.wenger@antispam.matisa.ch):
I think there is a little bug in the function getMotTime: before the
read, you must halt the updating of the register (set READ bit (D6)) and
reset this bit after the read.
To prevent others from having to wade through all of this stuff, here's
what I've learned, which is enough for our project.
On an MVME2700, the parallel port area of memory is at offset 0x3bc to
the PCI ISA IO area, which is at 0xfe000000. The three 1-byte registers
used by the printer are the data register (offset 0), status register
(offset 1), and control register (offset 2).
For our application, all we had to do was check the printer busy bit,
which was being used to send the position of an external toggle switch.
That's the lead bit of the status register. Easy. Anybody who wants to do
anything more complicated should look at the PC87308VUL data sheet,
available at the National Semiconductor web site (or from me, for a
while).
(From: Charles H. Sampson, claveman@cod.nosc.mil)
2 | A | Adding PCI support to a MV2308 board |
3 | A | How do I read the TOD clock on a MVME2300 board? |
4 | A | Information on the MVME2700 printer port. |
|