[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MVME5500 status, and on to PMC interrupts



Peter,

This may be a stupid idea but are you trying to get the
interrupt from your driver initialization routine before
tasking actually starts?

If so, external interrupts on the CPU itself are still
off until initialization switches to the 1st thread.

Probably not it.. there are lots of things that can be
wrong on these complex boards. :(

--joel

Peter Dufault wrote:

On Feb 28, 2005, at 9:24 AM, Kate Feng wrote:


Perhaps, it will help if you can describe your complete PMC system configuration with the module names and function Exactly which card is on the PMC1, PMC2, and PMC_SPAN ? I got bits of information from different E-mail you posted. I am still not positive about what the complete system configuration is.



MVME5500 PMC1: ACROMAG PMC730 Multifunction Module PMC2: ACROMAG PMC341 Simultaneous Sampling Analog Input Module DEC 21150 PCI-PCI Bridge (PMCSPAN): PMC1: ACROMAG PMC730 Multifunction Module

Changed "bus<2" to bus<BusCountPCI() in pcifinddevice.c. The BusCountPCI calculation is wrong,
but I'm ignoring that for now since it is too big - I don't think that adds a problem.


Changed printout in BSP_PCIxFindDevice to include the pciNum passed in in pcifinddevice.c.

Changed pci.c to recognize the DEC 21150 PCI-PCI bridge.

During bootup I find the devices (see attachment)
PMC730-1: 0/0/6/0
PMC341:   1/0/6/0
PMC730-2: 0/2/2/0


------------------------------------------------------------------------

XXX Look for "XXX" for my commentary.

Exception handling initialization done
-----------------------------------------
Welcome to rtems-4.6.99.1(PowerPC/PowerPC 7455/mvme5500) on MVME5500-0163
-----------------------------------------
Now BSP_mem_size = 0x1FE00000
BSP_Configuration.work_space_size = 80000
Marvell GT6426xA/B hostbridge detected at PCI0 bus0 slot0
PCI0_BASE_ADDRESS_0 0x8
PCI0_BASE_ADDRESS_1 0x10000008
PCI0_BASE_ADDRESS_2 0x8
PCI0_BASE_ADDRESS_3 0x8
PCI0_INTERRUPT_LINE 0x100
PCI0_MEM_BASE_ADDR 0x80100008
PCI0_IO_BASE_ADDR 0x1
PCI0 Slot 0x0 HEADER/LAT/CACHE 0x80800000
PCI0 Slot 0x0 Func 1 classID 0x5800020
PCI0 Slot 0x0 Func 2 classID 0x5800020
PCI0 Slot 0x0 Func 3 classID 0x5800020
PCI0 Slot 0x0 Func 4 classID 0x5800020
PCI0 Slot 0x0 Func 5 classID 0x5800020
PCI0 Slot 0x0 Func 6 classID 0x5800020
PCI0 Slot 0x0 Func 7 classID 0x5800020
MOTLoad command status 0x22B00006, Now command/status 0x2B00007
PCI0 Bus0 Slot6 DeviceID 0x445716D5
PCI0_BASE_ADDRESS_0 0x80200000
PCI0_BASE_ADDRESS_1 0x0
PCI0_BASE_ADDRESS_2 0x0
PCI0_BASE_ADDRESS_3 0x0
PCI0_INTERRUPT_LINE 0x108
PCI0_MEM_BASE_ADDR 0x0
PCI0_IO_BASE_ADDR 0x0
PCI0 Slot 0x6 HEADER/LAT/CACHE 0x0
MOTLoad command status 0x4000002, Now command/status 0x4000003
PLX PCI6154 PCI-PCI bridge detected at PCI0 bus0 slot10
PCI0_BASE_ADDRESS_0 0x0
PCI0_BASE_ADDRESS_1 0x0
PCI0_BASE_ADDRESS_2 0x80020100
PCI0_BASE_ADDRESS_3 0x2A0C191
PCI0_INTERRUPT_LINE 0x0
PCI0_MEM_BASE_ADDR 0xB5F08200
PCI0_IO_BASE_ADDR 0x1FFF1
PCI0 Slot 0xA HEADER/LAT/CACHE 0x18008
MOTLoad command status 0x2B00087, Now command/status 0x2B00087
TUNDRA PCI-VME bridge detected at PCI0 bus1 slot0
PCI0_BASE_ADDRESS_0 0x82000000
PCI0_BASE_ADDRESS_1 0x9001
PCI0_BASE_ADDRESS_2 0x0
PCI0_BASE_ADDRESS_3 0x0
PCI0_INTERRUPT_LINE 0x10C
PCI0_MEM_BASE_ADDR 0x0
PCI0_IO_BASE_ADDR 0x0
PCI0 Slot 0x0 HEADER/LAT/CACHE 0x8000
MOTLoad command status 0x2000007, Now command/status 0x2000007
XXX
XXX Found DEC bridge:
DEC 21150 PCI-PCI bridge detected at PCI0 bus1 slot4
PCI0_BASE_ADDRESS_0 0x0
PCI0_BASE_ADDRESS_1 0x0
PCI0_BASE_ADDRESS_2 0x80020201
PCI0_BASE_ADDRESS_3 0x2280C1B1
PCI0_INTERRUPT_LINE 0x0
PCI0_MEM_BASE_ADDR 0xB5F0B400
PCI0_IO_BASE_ADDR 0x1FFF1
PCI0 Slot 0x4 HEADER/LAT/CACHE 0x18008
MOTLoad command status 0x2900007, Now command/status 0x2900007
Marvell GT6426xA/B hostbridge detected at PCI1 bus0 slot0
PCI1_BASE_ADDRESS_0 0x8
PCI1_BASE_ADDRESS_1 0x10000008
PCI1_BASE_ADDRESS_2 0x8
PCI1_BASE_ADDRESS_3 0x8
PCI1_INTERRUPT_LINE 0x100
PCI1_MEM_BASE_ADDR 0xE1000008
PCI1_IO_BASE_ADDR 0x1
PCI1 Slot 0x0 HEADER/LAT/CACHE 0x80800000
PCI1 Slot 0x0 Func 1 classID 0x5800020
PCI1 Slot 0x0 Func 2 classID 0x5800020
PCI1 Slot 0x0 Func 3 classID 0x5800020
PCI1 Slot 0x0 Func 4 classID 0x5800020
PCI1 Slot 0x0 Func 5 classID 0x5800020
PCI1 Slot 0x0 Func 6 classID 0x5800020
PCI1 Slot 0x0 Func 7 classID 0x5800020
MOTLoad command status 0x22B00006, Now command/status 0x2B00007
PCI1 Bus0 Slot6 DeviceID 0x4D4D16D5
PCI1_BASE_ADDRESS_0 0xE1100000
PCI1_BASE_ADDRESS_1 0x0
PCI1_BASE_ADDRESS_2 0x0
PCI1_BASE_ADDRESS_3 0x0
PCI1_INTERRUPT_LINE 0x110
PCI1_MEM_BASE_ADDR 0x0
PCI1_IO_BASE_ADDR 0x0
PCI1 Slot 0x6 HEADER/LAT/CACHE 0x8008
MOTLoad command status 0x4000006, Now command/status 0x4000007
INTEL 82544EI COPPER network controller detected at PCI1 bus0 slot10
PCI1_BASE_ADDRESS_0 0xE1120000
PCI1_BASE_ADDRESS_1 0xE1140000
PCI1_BASE_ADDRESS_2 0x10001
PCI1_BASE_ADDRESS_3 0x0
PCI1_INTERRUPT_LINE 0x114
PCI1_MEM_BASE_ADDR 0x0
PCI1_IO_BASE_ADDR 0x0
PCI1 Slot 0xA HEADER/LAT/CACHE 0x8008
MOTLoad command status 0x2300007, Now command/status 0x2300007
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/0
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/1
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/2
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/3
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/4
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/5
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/6
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/7
BSP_PCIxFindDevice: found 0x445716D5 at 0/0/6/0
BSP_PCIxFindDevice: found 0x00263388 at 0/0/10/0
BSP_PCIxFindDevice: found 0x000010E3 at 0/1/0/0
Universe II PCI-VME bridge detected at 0x82000000, IRQ 12
Universe Master Ports:
Port  VME-Addr   Size       PCI-Adrs   Mode:
0:    0x20000000 0x0F000000 0x90000000 A32, Dat, Sup
1:    0x00000000 0x00FF0000 0x9F000000 A24, Dat, Sup
2:    0x00000000 0x00010000 0x9FFF0000 A16, Dat, Sup
Universe Slave Ports:
Port  VME-Addr   Size       PCI-Adrs   Mode:
0:    0x90000000 0x1FE00000 0x00000000 A32, Pgm, Dat, Sup, Usr
Overriding main IRQ line PCI info with 12
Registering /dev/console as minor 0 (==/dev/ttyS0)

XXX
XXX Now my code starts, adding my driver.  The NULL softc
XXX is just my code allocating a major number.
XXX

XXX First PMC730 finds itself at 0/0/6/0
Adding PMC730 minor number 0.
pmc_init: Called with NULL softc, returning.
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/0
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/1
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/2
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/3
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/4
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/5
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/6
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/7
BSP_PCIxFindDevice: found 0x445716D5 at 0/0/6/0
pmc730_0@0x01FFEE38: 0/0/6/0 base address 80200000 intr 08.

XXX Second PMC730 (other side of bridge) thinks it is at 0/2/2/0
XXX but that interrupt looks bogus.
Adding PMC730 minor number 1.
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/0
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/1
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/2
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/3
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/4
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/5
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/6
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/7
BSP_PCIxFindDevice: found 0x445716D5 at 0/0/6/0
BSP_PCIxFindDevice: found 0x00263388 at 0/0/10/0
BSP_PCIxFindDevice: found 0x000010E3 at 0/1/0/0
BSP_PCIxFindDevice: found 0x00221011 at 0/1/4/0
BSP_PCIxFindDevice: found 0x445716D5 at 0/2/2/0
pmc730_1@0x01FFED68: 0/2/2/0 base address B4000000 intr 0E.

XXX PMC341 finds itself at 1/0/6/0.
Adding PMC341 minor number 0.
pmc_init: Called with NULL softc, returning.
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/0
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/1
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/2
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/3
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/4
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/5
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/6
BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/7
BSP_PCIxFindDevice: found 0x445716D5 at 0/0/6/0
BSP_PCIxFindDevice: found 0x00263388 at 0/0/10/0
BSP_PCIxFindDevice: found 0x000010E3 at 0/1/0/0
BSP_PCIxFindDevice: found 0x00221011 at 0/1/4/0
BSP_PCIxFindDevice: found 0x445716D5 at 0/2/2/0
BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/0
BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/1
BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/2
BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/3
BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/4
BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/5
BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/6
BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/7
BSP_PCIxFindDevice: found 0x4D4D16D5 at 1/0/6/0
pmc341_0@0x01FFEC80: 1/0/6/0 base address E1100000 intr 10.
Type 'cexp.help()' for help (no quotes)

XXX Now I try to generate an interrupt on the PMC730.
cexp_main>b=0x1ffee38 # Get first pmc730 pointer
0x01ffee38 (33549880)
cexp_main>pmc_dump(b)
pmc730_0@0x01ffee38
 0                             intr: 00000000
 1                     adc_ctl_stat: 00000000
 2                    adc_start_end: 00000000
 3      adc_cvt_timer_and_prescaler: 00000000
 4            adc_memory_threshhold: 000001ff
 5                        adc_start: 00000000
 6                          unused0: 00000000
 7                          unused1: 00000000
 8                     dac_ctl_stat: 00000000
 9             dac_conversion_timer: 00000000
10    dac_fifo_interrupt_threshhold: 00000000
11                        dac_start: 00000000
12              dac_fifo_write_port: 00000000
13                          unused2: 00000000
14                          dio_reg: 0000ffff
15                          dio_dir: 00000000
16            dio_status_and_enable: 00000000
17            dio_polarity_and_type: 00000000
18                 dio_debounce_0_7: 00000000
19                dio_debounce_8_15: 00000000
20                          ctr_ctl: 00000000
21                     ctr_readback: 00000000
22                    ctr_constant1: 00000000
23                    ctr_constant2: 00000000
24                         ctr_trig: 00000000
25                       cal_access: 00000000
26              cal_read_and_status: 00000000
27                 cal_write_enable: 00000000
0x01ffee38 (33549880)

XXX This enables counter interrupts and puts counter in
XXX watchdog mode, loads the watchdog with 0x400, and
XXX enables board interrupts.
cexp_main>pmc_o(b,20,0x103,22,0x400,0,1,-1)
0x01ffee38 (33549880)

XXX The interrupts are enabled, and the counter
XXX is preloaded with 0x400.
cexp_main>pmc_d(b,0,20,21,-1)
 0                             intr: 00000001
20                          ctr_ctl: 00000103
21                     ctr_readback: 00000400
0x01ffee38 (33549880)

XXX Now start the counter:
cexp_main>pmc_o(b,24,1,-1)
0x01ffee38 (33549880)

XXX And read back and see there is an interrupt pending
XXX (register 0 0x2), the cause is the counter
XXX (register 20 0x1000), and the counter has gone down to 0.
cexp_main>pmc_d(b,0,20,21,-1)
 0                             intr: 00000003
20                          ctr_ctl: 00001103
21                     ctr_readback: 00000000
0x01ffee38 (33549880)

XXX But no interrupt.
cexp_main>


------------------------------------------------------------------------



Peter Dufault
HD Associates, Inc.


--
Joel Sherrill, Ph.D.             Director of Research & Development
joel@OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
   Support Available             (256) 722-9985