Difference between revisions of "Unit Platform"
Line 2,413: | Line 2,413: | ||
</div></div> | </div></div> | ||
<br /> | <br /> | ||
− | |||
Return to [[Unit_Reference|Unit Reference]] | Return to [[Unit_Reference|Unit Reference]] |
Revision as of 05:17, 2 September 2016
Return to Unit Reference
Description
To be documented
Constants
To be documented
Type definitions
To be documented
Public variables
To be documented
Function declarations
Initialization functions
procedure PlatformInit;
Note | To be documented |
---|
procedure CPUInit;
Note | To be documented |
---|
procedure FPUInit;
Note | To be documented |
---|
procedure GPUInit;
Note | To be documented |
---|
procedure MMUInit;
Note | To be documented |
---|
procedure SMPInit;
Note | Secondary CPU boot is performed by SecondaryInit in Threads |
---|
procedure CacheInit;
Note | To be documented |
---|
procedure BoardInit;
Note | To be documented |
---|
procedure MemoryInit;
Note | To be documented |
---|
procedure ClockInit;
Note | To be documented |
---|
procedure PowerInit;
Note | To be documented |
---|
procedure MailboxInit;
Note | To be documented |
---|
procedure InterruptInit;
Note | To be documented |
---|
procedure PeripheralInit;
Note | To be documented |
---|
procedure ParseBootTags;
Note | To be documented |
---|
procedure ParseCommandLine;
Note | To be documented |
---|
procedure ParseEnvironment;
Note | To be documented |
---|
Boot functions
procedure BootBlink; inline;
Note | Intended for startup diagnostics when bootstrapping a new board |
---|
LED functions
procedure PowerLEDEnable; inline;
Note | To be documented |
---|
procedure PowerLEDOn; inline;
Note | To be documented |
---|
procedure PowerLEDOff; inline;
Note | To be documented |
---|
procedure ActivityLEDEnable; inline;
Note | To be documented |
---|
procedure ActivityLEDOn; inline;
Note | To be documented |
---|
procedure ActivityLEDOff; inline;
Note | To be documented |
---|
Counter functions (Timer device)
function CounterAvailable:Boolean; inline;
Note | To be documented |
---|
function CounterRead:LongWord; inline;
Return | The 32 bit current value of the current or 0 on failure |
---|
function CounterRead64:Int64; inline;
Return | The 64 bit current value of the current or 0 on failure |
---|
function CounterWait:LongWord; inline;
Return | ERROR_SUCCESS if the interval expired or another error code on failure |
---|
function CounterEvent(Callback:TCounterCallback; Data:Pointer):LongWord; inline;
Callback | The function to be called when the interval expires |
---|---|
Data | A pointer to be pass to the function when the interval expires (Optional) |
Return | ERROR_SUCCESS if the callback was scheduled successfully or another error code on failure |
function CounterGetRate:LongWord; inline;
Return | The current clock rate in Hz or 0 on failure |
---|
function CounterSetRate(Rate:LongWord):LongWord; inline;
Rate | The clock rate in Hz to set |
---|---|
Return | ERROR_SUCCESS if the clock rate was set or another error code on failure |
function CounterGetInterval:LongWord; inline;
Return | The current interval in milliseconds or 0 on failure (or not set) |
---|
function CounterSetInterval(Interval:LongWord):LongWord; inline;
Interval | The interval in milliseconds to set |
---|---|
Return | ERROR_SUCCESS if the interval was set or another error code on failure |
Mailbox functions
function MailboxReceive(Mailbox,Channel:LongWord):LongWord; inline;
Note | To be documented |
---|
procedure MailboxSend(Mailbox,Channel,Data:LongWord); inline;
Note | To be documented |
---|
function MailboxCall(Mailbox,Channel,Data:LongWord; var Response:LongWord):LongWord; inline;
Note | To be documented |
---|
function MailboxCallEx(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord; inline;
Note | To be documented |
---|
function MailboxPropertyCall(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord; inline;
Note | To be documented |
---|
function MailboxPropertyCallEx(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord; inline;
Note | To be documented |
---|
Random number functions
function RandomAvailable:Boolean; inline;
Note | The software random number generator from the RTL is always available |
---|
procedure RandomSeed(Seed:LongWord); inline;
Note | To be documented |
---|
function RandomReadLongInt(Limit:LongInt):LongInt; inline;
Note | To be documented |
---|
function RandomReadInt64(Limit:Int64):Int64; inline;
Note | To be documented |
---|
function RandomReadExtended:Extended; inline;
Note | To be documented |
---|
Watchdog Timer Functions
function WatchdogAvailable:Boolean; inline;
Note | To be documented |
---|
function WatchdogStart(Milliseconds:LongWord):LongWord; inline;
Note | To be documented |
---|
function WatchdogStop:LongWord; inline;
Note | To be documented |
---|
function WatchdogRefresh(Milliseconds:LongWord):LongWord; inline;
Note | To be documented |
---|
Interrupt request (IRQ) functions
function RequestIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Note | If the IRQ number is already registered then the request will fail |
---|
function ReleaseIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Note | If the IRQ number is not currently registered then the request will fail |
---|
function RequestExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Note | If the IRQ number is already registered then the request will fail |
---|
function ReleaseExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Note | If the IRQ number is not currently registered then the request will fail |
---|
Fast interrupt request (FIQ) functions
function RequestFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Note | If the FIQ number is already registered then the request will fail |
---|
function ReleaseFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Note | If the FIQ number is not currently registered then the request will fail |
---|
function RequestExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Note | If the FIQ number is already registered then the request will fail |
---|
function ReleaseExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Note | If the FIQ number is not currently registered then the request will fail |
---|
System functions
function SystemRestart(Delay:LongWord):LongWord; inline;
Note | To be documented |
---|
function SystemShutdown(Delay:LongWord):LongWord; inline;
Note | To be documented |
---|
function SystemGetUptime:Int64; inline;
Return | The current system up time |
---|---|
Note | This is the same time format as Windows FILE_TIME and is intended to allow compatibility with file system functions etc |
function SystemGetCommandLine:String; inline;
Note | To be documented |
---|
function SystemGetEnvironment:Pointer; inline;
Note | To be documented |
---|
procedure SystemCall(Number:LongWord; Param1,Param2,Param3:PtrUInt); inline;
Note | To be documented |
---|
CPU Functions
function CPUGetArch:LongWord; inline;
Note | To be documented |
---|
function CPUGetType:LongWord; inline;
Note | To be documented |
---|
function CPUGetBoot:LongWord; inline;
Note | To be documented |
---|
function CPUGetMask:LongWord; inline;
Note | To be documented |
---|
function CPUGetCount:LongWord; inline;
Note | To be documented |
---|
function CPUGetMode:LongWord; inline;
Note | The return value is specific to the CPU type |
---|
function CPUGetState:LongWord; inline;
Note | To be documented |
---|
function CPUGetCurrent:LongWord; inline;
Note | To be documented |
---|
function CPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord; inline;
Note | To be documented |
---|
function CPUGetPercentage(CPUID:LongWord):Double; inline;
CPUID | The CPU to get utilization from or CPU_ID_ALL for average of all CPUs |
---|
function CPUGetUtilization(CPUID:LongWord):LongWord; inline;
CPUID | The CPU to get utilization from or CPU_ID_ALL for average of all CPUs |
---|
function CPUGetModel:LongWord; inline;
Note | To be documented |
---|
function CPUGetRevision:LongWord; inline;
Note | The return value is specific to the CPU type and model |
---|
function CPUGetDescription:String; inline;
Note | To be documented |
---|
FPU functions
function FPUGetType:LongWord; inline;
Note | To be documented |
---|
function FPUGetState:LongWord; inline;
Note | To be documented |
---|
GPU functions
function GPUGetType:LongWord; inline;
Note | To be documented |
---|
function GPUGetState:LongWord; inline;
Note | To be documented |
---|
function GPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord; inline;
Note | To be documented |
---|
Cache functions
function L1CacheGetType:LongWord; inline;
Note | To be documented |
---|
function L1DataCacheGetSize:LongWord; inline;
Note | If data cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size. |
---|
function L1DataCacheGetLineSize:LongWord; inline;
Note | If data cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size. |
---|
function L1InstructionCacheGetSize:LongWord; inline;
Note | If instruction cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size. |
---|
function L1InstructionCacheGetLineSize:LongWord; inline;
Note | If instruction cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size. |
---|
function L2CacheGetType:LongWord; inline;
Note | To be documented |
---|
function L2CacheGetSize:LongWord; inline;
Note | If L2 cache is not supported, the size returned is zero |
---|
function L2CacheGetLineSize:LongWord; inline;
Note | If L2 cache is not supported, the size returned is zero |
---|
Board functions
function BoardGetType:LongWord; inline;
Note | To be documented |
---|
function BoardGetModel:LongWord; inline;
Note | To be documented |
---|
function BoardGetSerial:Int64; inline;
Note | To be documented |
---|
function BoardGetRevision:LongWord; inline;
Note | To be documented |
---|
function BoardGetMACAddress:String; inline;
Note | To be documented |
---|
Firmware functions
function FirmwareGetRevision:LongWord; inline;
Note | To be documented |
---|
Machine functions
function MachineGetType:LongWord; inline;
Note | To be documented |
---|
Memory functions
function MemoryGetBase:PtrUInt; inline;
Note | To be documented |
---|
function MemoryGetSize:LongWord; inline;
Note | To be documented |
---|
function MemoryGetPageSize:LongWord; inline;
Note | To be documented |
---|
function MemoryGetLargePageSize:LongWord; inline;
Note | To be documented |
---|
Power functions
function PowerOn(PowerId:LongWord):LongWord;
Note | To be documented |
---|
function PowerOff(PowerId:LongWord):LongWord;
Note | To be documented |
---|
function PowerGetWait(PowerId:LongWord):LongWord; inline;
Note | To be documented |
---|
function PowerGetState(PowerId:LongWord):LongWord; inline;
Note | To be documented |
---|
function PowerSetState(PowerId,State:LongWord; Wait:Boolean):LongWord; inline;
Note | To be documented |
---|
Clock functions
function ClockGetTime:Int64;
Return | The current system time |
---|---|
Note | This is the same time format as Windows FILE_TIME and is intended to allow compatibility with file system functions etc. By default the time returned by this function is considered to be UTC but the actual conversion between UTC and local time is handled at a higher level. |
function ClockSetTime(const Time:Int64; RTC:Boolean):Int64;
Time | The time to be set |
---|---|
RTC | Set the default RTC (real time clock) if available |
Return | The system time after setting |
Note | This is the same time format as Windows FILE_TIME and is intended to allow compatibility with file system functions etc. By default the time passed to this function is considered to be UTC but the actual conversion between UTC and local time is handled at a higher level. |
function ClockGetCount:LongWord; inline;
Note | This will normally come from the free running system timer in the board and is useful as a form of tick count but not for time keeping because the actual rate at which this increments is dependant on the system timer clock frequency of the specific board and may not be a measure of time in its raw form. |
---|
function ClockGetTotal:Int64; inline;
Note | This will normally come from the free running system timer in the board and is useful as a form of tick count but not for time keeping because the actual rate at which this increments is dependant on the system timer clock frequency of the specific board and may not be a measure of time in its raw form. |
---|
function Clock?Offset:LongWord; inline;
Note | To be documented |
---|
function ClockGetRate(ClockId:LongWord):LongWord; inline;
Note | To be documented |
---|
function ClockSetRate(ClockId,Rate:LongWord; Turbo:Boolean):LongWord; inline;
Note | To be documented |
---|
function ClockGetState(ClockId:LongWord):LongWord; inline;
Note | To be documented |
---|
function ClockSetState(ClockId,State:LongWord):LongWord; inline;
Note | To be documented |
---|
function ClockGetMinRate(ClockId:LongWord):LongWord; inline;
Note | To be documented |
---|
function ClockGetMaxRate(ClockId:LongWord):LongWord; inline;
Note | To be documented |
---|
Turbo functions
function TurboGetState(TurboId:LongWord):LongWord; inline;
Note | To be documented |
---|
function TurboSetState(TurboId,State:LongWord):LongWord; inline;
Note | To be documented |
---|
Voltage functions
function VoltageGetValue(VoltageId:LongWord):LongWord; inline;
Note | To be documented |
---|
function VoltageSetValue(VoltageId,Value:LongWord):LongWord; inline;
Note | To be documented |
---|
function VoltageGetMinValue(VoltageId:LongWord):LongWord; inline;
Note | To be documented |
---|
function VoltageGetMaxValue(VoltageId:LongWord):LongWord; inline;
Note | To be documented |
---|
Temperature functions
function TemperatureGetCurrent(TemperatureId:LongWord):LongWord; inline;
Note | To be documented |
---|
function TemperatureGetMaximum(TemperatureId:LongWord):LongWord; inline;
Note | To be documented |
---|
GPU memory functions
function GPUMemoryAllocate(Length,Alignment,Flags:LongWord):THandle; inline;
Note | To be documented |
---|
function GPUMemoryRelease(Handle:THandle):LongWord; inline;
Note | To be documented |
---|
function GPUMemoryLock(Handle:THandle):LongWord; inline;
Note | To be documented |
---|
function GPUMemoryUnlock(Handle:THandle):LongWord; inline;
Note | To be documented |
---|
GPU misc functions
function GPUExecuteCode(Address:Pointer; R0,R1,R2,R3,R4,R5:LongWord):LongWord; inline;
Note | To be documented |
---|
function DispmanxHandleGet(Resource:THandle):THandle; inline;
Note | To be documented |
---|
function EDIDBlockGet(Block:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
Note | To be documented |
---|
Framebuffer functions
function FramebufferAvailable:Boolean; inline;
Note | To be documented |
---|
function FramebufferAllocate(Alignment:LongWord; var Address,Length:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferRelease:LongWord; inline;
Note | To be documented |
---|
function FramebufferSetState(State:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferGetDimensions(var Width,Height,Top,Bottom,Left,Right:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferGetPhysical(var Width,Height:LongWord):LongWord; inline;
Note | The "physical" size is the size of the allocated buffer in memory, not the resolution of the video signal sent to the display device |
---|
function FramebufferSetPhysical(var Width,Height:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferTestPhysical(var Width,Height:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferGetVirtual(var Width,Height:LongWord):LongWord; inline;
Note | The "virtual" size is the portion of buffer that is sent to the display device, not the resolution the buffer itself. This may be smaller than the allocated buffer size in order to implement panning |
---|
function FramebufferSetVirtual(var Width,Height:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferTestVirtual(var Width,Height:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferGetDepth(var Depth:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferSetDepth(var Depth:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferTestDepth(var Depth:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferGetPixelOrder(var Order:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferSetPixelOrder(var Order:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferTestPixelOrder(var Order:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferGetAlphaMode(var Mode:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferSetAlphaMode(var Mode:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferTestAlphaMode(var Mode:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferGetPitch:LongWord; inline;
Note | To be documented |
---|
function FramebufferGetOffset(var X,Y:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferSetOffset(var X,Y:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferTestOffset(var X,Y:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferGetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferSetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferTestOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferGetPalette(Buffer:Pointer; Length:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferSetPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
Note | To be documented |
---|
function FramebufferTestPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
Note | To be documented |
---|
Cursor functions
function CursorSetInfo(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord; inline;
Note | To be documented |
---|
function CursorSetState(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord; inline;
Relative | X, Y is relative to Display (Virtual) not Framebuffer (Physical) |
---|
DMA functions
function DMAAvailable:Boolean; inline;
Note | To be documented |
---|
function DMATransfer(Data:PDMAData; Direction,Peripheral:LongWord):LongWord; inline;
Data | A linked list of DMA data blocks for the transfer |
---|---|
Direction | The direction of the DMA request (eg DMA_DIR_MEM_TO_MEM) |
Peripheral | The peripheral ID for data request gating (eg DMA_DREQ_ID_NONE) |
function DMAFillMemory(Dest:Pointer; Size:LongWord; Value:Byte):LongWord; inline;
Dest | The address to start the memory fill |
---|---|
Size | The size of memory to fill in bytes |
Value | The value to fill the memory with |
function DMACopyMemory(Source,Dest:Pointer; Size:LongWord):LongWord; inline;
Source | The source address to start the memory copy |
---|---|
Dest | The destination address to start the memory copy |
Size | The size of memory to copy in bytes |
function DMAReadPeripheral(Address,Dest:Pointer; Size,Peripheral:LongWord):LongWord; inline;
Address | The address of the periperhal register to read from |
---|---|
Source | The destination address to start writing to |
Size | The size of the read in bytes |
Peripheral | The peripheral ID for data request gating (eg DMA_DREQ_ID_UART_RX) |
function DMAWritePeripheral(Source,Address:Pointer; Size,Peripheral:LongWord):LongWord; inline;
Source | The source address to start reading from |
---|---|
Address | The address of the peripheral register to write to |
Size | The size of the write in bytes |
Peripheral | The peripheral ID for data request gating (eg DMA_DREQ_ID_UART_TX) |
function DMAAllocateBuffer(Size:LongWord):Pointer; inline;
Size | The size of the buffer to allocate |
---|
function DMAAllocateBufferEx(var Size:LongWord):Pointer; inline;
Size | The size of the buffer to allocate (Updated on return to actual size) |
---|
function DMAReleaseBuffer(Buffer:Pointer):LongWord; inline;
Buffer | The buffer to be released |
---|
function DMAGetChannels:LongWord; inline;
Note | To be documented |
---|
GPIO functions
function GPIOAvailable:Boolean; inline;
Reg | The memory register to read from |
---|---|
Value | The value of the memory register |
function GPIORead(Reg:LongWord):LongWord; inline;
Reg | The memory register to read from |
---|---|
Value | The value of the memory register |
procedure GPIOWrite(Reg,Value:LongWord); inline;
Reg | The memory register to write to |
---|---|
Value | The value to write to the register |
function GPIOInputGet(Pin:LongWord):LongWord; inline;
Pin | The pin to get the state for (eg GPIO_PIN_1) |
---|---|
Return | The current state (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure |
function GPIOInputWait(Pin,Trigger,Timeout:LongWord):LongWord; inline;
Pin | The pin to wait for the state to change (eg GPIO_PIN_1) |
---|---|
Trigger | The trigger event to wait for (eg GPIO_TRIGGER_HIGH) |
Timeout | Number of milliseconds to wait for the change (INFINITE to wait forever) |
Return | The state after the change (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure or timeout |
function GPIOInputEvent(Pin,Trigger,Timeout:LongWord; Callback:TGPIOCallback; Data:Pointer):LongWord; inline;
Pin | The pin to schedule the state change for (eg GPIO_PIN_1) |
---|---|
Trigger | The trigger event which will cause the function to be called (eg GPIO_TRIGGER_HIGH) |
Timeout | The number of milliseconds before the scheduled trigger expires (INFINITE to never expire) |
Callback | The function to be called when the trigger occurs |
Data | A pointer to be pass to the function when the trigger occurs (Optional) |
Return | ERROR_SUCCESS if the trigger was scheduled successfully or another error code on failure |
Note | The pin and trigger that caused the event will be passed to the callback function |
function GPIOOutput?(Pin,Level:LongWord):LongWord; inline;
Pin | The pin to change the state for (eg GPIO_PIN_1) |
---|---|
Level | The state to change the pin to (eg GPIO_LEVEL_HIGH) |
Return | ERROR_SUCCESS if completed successfully or another error code on failure |
function GPIOPullGet(Pin:LongWord):LongWord; inline;
Pin | The pin to get the pull state for (eg GPIO_PIN_1) |
---|---|
Return | The current pull state of the pin (eg GPIO_PULL_UP) or GPIO_PULL_UNKNOWN on failure |
function GPIOPullSelect(Pin,Mode:LongWord):LongWord; inline;
Pin | The pin to change the pull state for (eg GPIO_PIN_1) |
---|---|
Mode | The pull state to set for the pin (eg GPIO_PULL_UP) |
Return | ERROR_SUCCESS if completed successfully or another error code on failure |
Return to Unit Reference