Difference between revisions of "Unit VersatilePB"

From Ultibo.org
Jump to: navigation, search
 
(6 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
=== Description ===
 
=== Description ===
 
----
 
----
 +
 +
'''Ultibo Definitions specific to the ARM Versatile Platform Baseboard unit'''
  
 
From the QEMU source the memory map of the VersatilePB is shown as this:
 
From the QEMU source the memory map of the VersatilePB is shown as this:
Line 66: Line 68:
 
|  
 
|  
 
|-
 
|-
| <code>VERSATILEPB_PERIPHERALS_SIZE = $001FFFFF;</code>
+
| <code>VERSATILEPB_PERIPHERALS_SIZE = SIZE_2M;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 132: Line 134:
 
|-
 
|-
 
| <code>VERSATILEPB_VIC_REGS_BASE = $10140000;</code>
 
| <code>VERSATILEPB_VIC_REGS_BASE = $10140000;</code>
| PL190Vectored interrupt controller
+
| PL190 Vectored interrupt controller
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
Line 337: Line 339:
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
 
|-
 
|-
|colspan="2"|Interrupt Assignments (Secondary)(See: \arch\arm\mach-versatile\include\mach\platform.h)
+
|colspan="2"|Interrupt Assignments (Secondary) (See: \arch\arm\mach-versatile\include\mach\platform.h)
 
|-
 
|-
 
| <code>VERSATILEPB_IRQ_SIC_SOFTINT = 32;</code>
 
| <code>VERSATILEPB_IRQ_SIC_SOFTINT = 32;</code>
Line 412: Line 414:
 
|-
 
|-
 
| <code>VERSATILEPB_VIC_IRQ_COUNT = 32;</code>
 
| <code>VERSATILEPB_VIC_IRQ_COUNT = 32;</code>
| &nbsp;
+
| style="width: 50%;"|&nbsp;
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
Line 462: Line 464:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
|colspan="2"|System register offsets (See: \arm\mach-versatile\include\mach\platform.h and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/I1006122.html)
+
|colspan="2"|System register offsets (See: \arch\arm\mach-versatile\include\mach\platform.h and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/I1006122.html)
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
Line 567: Line 569:
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
 
|-
 
|-
|colspan="2"|System register bits (See: \arm\mach-versatile\include\mach\platform.h and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/I1006122.html)
+
|colspan="2"|System register bits (See: \arch\arm\mach-versatile\include\mach\platform.h and http://infocenter.arm.com/help/topic/com.arm.doc.dui0224i/I1006122.html)
 +
|-
 +
| <code>VERSATILEPB_SYS_100HZ_FREQUENCY = 100;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>VERSATILEPB_SYS_LOCK_LOCKED = (1 shl 16);</code>
 +
| This bit indicates if the control registers are locks or unlocked
 +
|-
 +
| <code>VERSATILEPB_SYS_LOCK_LOCKVAL = $A05F;</code>
 +
| Write this value to unlock the control registers, write any other to lock the registers
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>VERSATILEPB_SYS_RESETCTL_RESET = (1 shl 8);</code>
 +
| &nbsp;
 +
|-
 +
| <code>VERSATILEPB_SYS_RESETCTL_CONFIGCLR = $01;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VERSATILEPB_SYS_RESETCTL_CONFIGINIT = $02;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VERSATILEPB_SYS_RESETCTL_DLLRESET = $03;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VERSATILEPB_SYS_RESETCTL_PLLRESET = $04;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VERSATILEPB_SYS_RESETCTL_PORRESET = $05;</code>
 +
| &nbsp;
 +
|-
 +
| <code>VERSATILEPB_SYS_RESETCTL_DOCRESET = $06;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>VERSATILEPB_SYS_MCI_CD0 = (1 shl 0);</code>
 +
| Card detect 0
 +
|-
 +
| <code>VERSATILEPB_SYS_MCI_CD1 = (1 shl 1);</code>
 +
| Card detect 1
 +
|-
 +
| <code>VERSATILEPB_SYS_MCI_WP0 = (1 shl 2);</code>
 +
| Write protect 0
 +
|-
 +
| <code>VERSATILEPB_SYS_MCI_WP1 = (1 shl 3);</code>
 +
| Write protect 1
 +
|-
 +
|colspan="2"|&nbsp;
 
|-
 
|-
 
| <code>VERSATILEPB_SYS_CLCD_MODE888 = 0;</code>
 
| <code>VERSATILEPB_SYS_CLCD_MODE888 = 0;</code>
Line 584: Line 636:
 
|-
 
|-
 
| <code>VERSATILEPB_SYS_CLCD_MODEMASK = 3;</code>
 
| <code>VERSATILEPB_SYS_CLCD_MODEMASK = 3;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>VERSATILEPB_SYS_24MHZ_FREQUENCY = 24000000;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 813: Line 870:
 
----
 
----
  
''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 ===
 
----
 
----
  
''To be documented''
+
''None defined''
  
 
=== Function declarations ===
 
=== Function declarations ===
 
----
 
----
  
''To be documented''
+
''None defined''
  
  
 
Return to [[Unit_Reference|Unit Reference]]
 
Return to [[Unit_Reference|Unit Reference]]

Latest revision as of 05:48, 9 June 2017

Return to Unit Reference


Description


Ultibo Definitions specific to the ARM Versatile Platform Baseboard unit

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


None defined

Function declarations


None defined


Return to Unit Reference