MVME5500 status, and on to PMC interrupts

Joel Sherrill <joel@OARcorp.com> joel.sherrill at OARcorp.com
Mon Feb 28 15:11:41 UTC 2005


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 at 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 at 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 at 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 at 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 at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
    Support Available             (256) 722-9985




More information about the users mailing list