Difference between revisions of "Unit VersatilePB"
From Ultibo.org
Line 813: | Line 813: | ||
---- | ---- | ||
− | '' | + | |
+ | '''SP804 timer registers''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PSP804TimerRegisters = ^TSP804TimerRegisters;</code> | ||
+ | |||
+ | <code>TSP804TimerRegisters = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Layout of the SP804 Timer registers (VersatilePB specific structures) (See: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0271d/DDI0271.pdf) | ||
+ | |- | ||
+ | | <code>Load:LongWord;</code> | ||
+ | | Timer Load register | ||
+ | |- | ||
+ | | <code>Value:LongWord;</code> | ||
+ | | Timer Value register | ||
+ | |- | ||
+ | | <code>Control:LongWord;</code> | ||
+ | | Timer control register | ||
+ | |- | ||
+ | | <code>IRQClear:LongWord;</code> | ||
+ | | Timer IRQ clear register | ||
+ | |- | ||
+ | | <code>RawIRQ:LongWord;</code> | ||
+ | | Timer Raw IRQ register | ||
+ | |- | ||
+ | | <code>MaskedIRQ:LongWord;</code> | ||
+ | | Timer Masked IRQ register | ||
+ | |- | ||
+ | | <code>BackgroundLoad:LongWord;</code> | ||
+ | | Timer Background Load register | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''PL190 interrupt controller''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPL190InterruptRegisters = ^TPL190InterruptRegisters;</code> | ||
+ | |||
+ | <code>TPL190InterruptRegisters = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Layout of the PL190 Vectored Interrupt Controller registers (See: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0181e/index.html) | ||
+ | |- | ||
+ | | <code>IRQSTATUS:LongWord;</code> | ||
+ | | IRQ Status Register | ||
+ | |- | ||
+ | | <code>FIQSTATUS:LongWord;</code> | ||
+ | | FIQ Status Register | ||
+ | |- | ||
+ | | <code>RAWINTR:LongWord;</code> | ||
+ | | Raw Interrupt Status Register | ||
+ | |- | ||
+ | | <code>INTSELECT:LongWord;</code> | ||
+ | | Interrupt Select Register | ||
+ | |- | ||
+ | | <code>INTENABLE:LongWord;</code> | ||
+ | | Interrupt Enable Register | ||
+ | |- | ||
+ | | <code>INTENCLEAR:LongWord;</code> | ||
+ | | Interrupt Enable Clear Register | ||
+ | |- | ||
+ | | <code>SOFTINT:LongWord;</code> | ||
+ | | Software Interrupt Register | ||
+ | |- | ||
+ | | <code>SOFTINTCLEAR:LongWord;</code> | ||
+ | | Software Interrupt Clear Register | ||
+ | |- | ||
+ | | <code>PROTECTION:LongWord;</code> | ||
+ | | Protection Enable Register | ||
+ | |- | ||
+ | | <code>RESERVED1:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>RESERVED2:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>RESERVED3:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>VECTADDR:LongWord;</code> | ||
+ | | Vector Address Register | ||
+ | |- | ||
+ | | <code>DEFVECTADDR:LongWord;</code> | ||
+ | | Default Vector Address Register | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''PL190 vector address''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPL190VectorAddressRegisters = ^TPL190VectorAddressRegisters;</code> | ||
+ | |||
+ | <code>TPL190VectorAddressRegisters = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>VECTADDR:array[0..15] of LongWord;</code> | ||
+ | | Vector Address Register | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''PL190 vector control''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPL190VectorControlRegisters = ^TPL190VectorControlRegisters;</code> | ||
+ | |||
+ | <code>TPL190VectorControlRegisters = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>VECTCNTL:array[0..15] of LongWord;</code> | ||
+ | | Vector Control Registers | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''VersatilePB secondary interrupt controller''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PVersatilePBInterruptRegisters = ^TVersatilePBInterruptRegisters;</code> | ||
+ | |||
+ | <code>TVersatilePBInterruptRegisters = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Layout of the VersatilePB Secondary Interrupt Controller registers (See: http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/Cacdggia.html) | ||
+ | |- | ||
+ | | <code>SIC_STATUS:LongWord;</code> | ||
+ | | Status of interrupt (after mask) (Read) | ||
+ | |- | ||
+ | | <code>SIC_RAWSTAT:LongWord;</code> | ||
+ | | Status of interrupt (before mask) (Read) | ||
+ | |- | ||
+ | | <code>SIC_ENSET:LongWord;</code> | ||
+ | | Interrupt mask / Set bits HIGH to enable the corresponding interrupt signals (Read/Write) | ||
+ | |- | ||
+ | | <code>SIC_ENCLR:LongWord;</code> | ||
+ | | Set bits HIGH to mask the corresponding interrupt signals (Write) | ||
+ | |- | ||
+ | | <code>SIC_SOFTINTSET:LongWord;</code> | ||
+ | | Set software interrupt (Read/Write) | ||
+ | |- | ||
+ | | <code>SIC_SOFTINTCLR:LongWord;</code> | ||
+ | | Clear software interrupt (Write) | ||
+ | |- | ||
+ | | <code>RESERVED1:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>RESERVED2:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SIC_PICENSET:LongWord;</code> | ||
+ | | Pass-through mask (allows interrupt to pass directly to the primary interrupt controller) / Set bits HIGH to set the corresponding interrupt pass-through mask bits (Read/Write) | ||
+ | |- | ||
+ | | <code>SIC_PICENCLR:LongWord;</code> | ||
+ | | Set bits HIGH to clear the corresponding interrupt pass-through mask bits (Write) | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Public variables === | === Public variables === |
Revision as of 03:56, 26 April 2017
Return to Unit Reference
Contents
[hide]Description
From the QEMU source the memory map of the VersatilePB is shown as this:
Memory map for Versatile/PB:
- 0x10000000 System registers
- 0x10001000 PCI controller config registers
- 0x10002000 Serial bus interface
- 0x10003000 Secondary interrupt controller
- 0x10004000 AACI (audio)
- 0x10005000 MMCI0
- 0x10006000 KMI0 (keyboard)
- 0x10007000 KMI1 (mouse)
- 0x10008000 Character LCD Interface
- 0x10009000 UART3
- 0x1000a000 Smart card 1
- 0x1000b000 MMCI1
- 0x10010000 Ethernet
- 0x10020000 USB
- 0x10100000 SSMC
- 0x10110000 MPMC
- 0x10120000 CLCD Controller
- 0x10130000 DMA Controller
- 0x10140000 Vectored interrupt controller
- 0x101d0000 AHB Monitor Interface
- 0x101e0000 System Controller
- 0x101e1000 Watchdog Interface
- 0x101e2000 Timer 0/1
- 0x101e3000 Timer 2/3
- 0x101e4000 GPIO port 0
- 0x101e5000 GPIO port 1
- 0x101e6000 GPIO port 2
- 0x101e7000 GPIO port 3
- 0x101e8000 RTC
- 0x101f0000 Smart card 0
- 0x101f1000 UART0
- 0x101f2000 UART1
- 0x101f3000 UART2
- 0x101f4000 SSPI
- 0x34000000 NOR Flash
Constants
[Expand]
VersatilePB specific constants
VERSATILEPB_*
[Expand]
VersatilePB IRQ
VERSATILEPB_IRQ_*
[Expand]
VersatilePB IRQ count
VERSATILEPB_*_IRQ_COUNT*
[Expand]
VersatilePB FIQ count
VERSATILEPB_FIQ_COUNT*
[Expand]
VersatilePB timer frequency
VERSATILEPB_TIMER_FREQUENCY*
[Expand]
VersatilePB system register
VERSATILEPB_SYS_*
[Expand]
VersatilePB system control
VERSATILEPB_SYSCTRL_*
[Expand]
SP804 timer
SP804_TIMER_*
[Expand]
SP804 timer control
SP804_TIMER_CONTROL_*
[Expand]
PL190 vectored interrupt controller offsets
PL190_VIC_*
[Expand]
PL190 vectored interrupt controller register
PL190_VIC_VECTCNTL_*
[Expand]
VersatilePB secondary interrupt controller
VERSATILEPB_SIC_*
Type definitions
SP804 timer registers
PL190 interrupt controller
PL190 vector address
[Expand]
PPL190VectorAddressRegisters = ^TPL190VectorAddressRegisters;
TPL190VectorAddressRegisters = record
PL190 vector control
[Expand]
PPL190VectorControlRegisters = ^TPL190VectorControlRegisters;
TPL190VectorControlRegisters = record
VersatilePB secondary interrupt controller
[Expand]
PVersatilePBInterruptRegisters = ^TVersatilePBInterruptRegisters;
TVersatilePBInterruptRegisters = record
Public variables
To be documented
Function declarations
To be documented
Return to Unit Reference