Difference between revisions of "Unit VersatilePB"

From Ultibo.org
Jump to: navigation, search
Line 813: Line 813:
 
----
 
----
  
''To be documented''
+
 
 +
'''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>
 +
| &nbsp;
 +
|-
 +
| <code>RESERVED2:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>RESERVED3:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <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>
 +
| &nbsp;
 +
|-
 +
| <code>RESERVED2:LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <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


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

[Expand]

PSP804TimerRegisters = ^TSP804TimerRegisters;

TSP804TimerRegisters = record

PL190 interrupt controller

[Expand]

PPL190InterruptRegisters = ^TPL190InterruptRegisters;

TPL190InterruptRegisters = record

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