Difference between revisions of "Unit PL031"
Line 21: | Line 21: | ||
---- | ---- | ||
− | '' | + | |
+ | '''PL031 real time clock (RTC) registers''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPL031RTCRegisters = ^TPL031RTCRegisters;</code> | ||
+ | |||
+ | <code>TPL031RTCRegisters = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Layout of the PL031 registers (See: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0224b/i1005653.html) | ||
+ | |- | ||
+ | | <code>DR:LongWord;</code> | ||
+ | | Data register | ||
+ | |- | ||
+ | | <code>MR:LongWord;</code> | ||
+ | | Match register | ||
+ | |- | ||
+ | | <code>LR:LongWord;</code> | ||
+ | | Load register | ||
+ | |- | ||
+ | | <code>CR:LongWord;</code> | ||
+ | | Control register | ||
+ | |- | ||
+ | | <code>IMSC:LongWord;</code> | ||
+ | | Interrupt mask set and clear register | ||
+ | |- | ||
+ | | <code>RIS:LongWord;</code> | ||
+ | | Raw interrupt status register | ||
+ | |- | ||
+ | | <code>MIS:LongWord;</code> | ||
+ | | Masked interrupt status register | ||
+ | |- | ||
+ | | <code>ICR:LongWord;</code> | ||
+ | | Interrupt clear register | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''PL031 real time clock (RTC)''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PPL031RTC = ^TPL031RTC;</code> | ||
+ | |||
+ | <code>TPL031RTC = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|''RTC Properties'' | ||
+ | |- | ||
+ | | <code>RTC:TRTCDevice;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|''PL031 Properties'' | ||
+ | |- | ||
+ | | <code>IRQ:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Registers:PPL031RTCRegisters;</code> | ||
+ | | Device registers | ||
+ | |- | ||
+ | |colspan="2"|''Statistics Properties'' | ||
+ | |- | ||
+ | | <code>InterruptCount:LongWord;</code> | ||
+ | | Number of interrupt requests received by the device | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Public variables === | === Public variables === |
Revision as of 05:12, 23 April 2017
Return to Unit Reference
Description
ARM PrimeCell PL031 Real Time Clock Driver unit
The PL031 is a simple memory mapped Real Time Clock (RTC) device that supports a single 32-bit time counter based on the Unix time format which starts at 1 Jan 1970 and runs out at 19 Jan 2038.
The device also includes a single alarm value which can trigger an interrupt when the selected time is reached.
This driver currently does not support reading or setting the alarm value.
Constants
To be documented
Type definitions
PL031 real time clock (RTC) registers
PPL031RTCRegisters = ^TPL031RTCRegisters;
TPL031RTCRegisters = record
Note: Layout of the PL031 registers (See: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0224b/i1005653.html) | |
DR:LongWord;
|
Data register |
MR:LongWord;
|
Match register |
LR:LongWord;
|
Load register |
CR:LongWord;
|
Control register |
IMSC:LongWord;
|
Interrupt mask set and clear register |
RIS:LongWord;
|
Raw interrupt status register |
MIS:LongWord;
|
Masked interrupt status register |
ICR:LongWord;
|
Interrupt clear register |
PL031 real time clock (RTC)
PPL031RTC = ^TPL031RTC;
TPL031RTC = record
RTC Properties | |
RTC:TRTCDevice;
|
|
PL031 Properties | |
IRQ:LongWord;
|
|
Registers:PPL031RTCRegisters;
|
Device registers |
Statistics Properties | |
InterruptCount:LongWord;
|
Number of interrupt requests received by the device |
Public variables
None defined
Function declarations
PL031 functions
function PL031RTCCreate(Address:LongWord; const Name:String; IRQ:LongWord):PRTCDevice;
Address | The address of the PL031 registers |
---|---|
Name | The text description of this device which will show in the device list (Optional) |
IRQ | The interrupt number for the PL031 |
Return | Pointer to the new RTC device or nil if the RTC device could not be created |
function PL031RTCDestroy(RTC:PRTCDevice):LongWord;
RTC | The RTC device to destroy |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
PL031 RTC functions
function PL031RTCStart(RTC:PRTCDevice):LongWord;
Note | Not intended to be called directly by applications, use RTCDeviceStart instead |
---|
function PL031RTCStop(RTC:PRTCDevice):LongWord;
Note | Not intended to be called directly by applications, use RTCDeviceStop instead |
---|
function PL031RTCGetTime(RTC:PRTCDevice):Int64;
Note | Not intended to be called directly by applications, use RTCDeviceGetTime instead |
---|
function PL031RTCSetTime(RTC:PRTCDevice; const Time:Int64):Int64;
Note | Not intended to be called directly by applications, use RTCDeviceSetTime instead |
---|
PL031 helper functions
function PL031FileTimeToRTCTime(RTC:PRTCDevice; const FileTime:Int64; var RTCTime:LongWord):Boolean;
Note | None documented |
---|
function PL031RTCTimeToFileTime(RTC:PRTCDevice; RTCTime:LongWord; var FileTime:Int64):Boolean;
Note | None documented |
---|
Return to Unit Reference