Difference between revisions of "Unit PlatformRPi"
Line 924: | Line 924: | ||
<pre style="border: 0; padding-bottom:0px;">function RPiFirmwareGetRevision:LongWord;</pre> | <pre style="border: 0; padding-bottom:0px;">function RPiFirmwareGetRevision:LongWord;</pre> | ||
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Firmware Revision from the Mailbox property tags channel</div> | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Firmware Revision from the Mailbox property tags channel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function RPiFirmwareGetThrottled:LongWord;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Get the Firmware Throttling state from the Mailbox property tags channel</div> | ||
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" |
Revision as of 01:11, 10 May 2018
Return to Unit Reference
Description
Ultibo Platform interface unit for Raspberry Pi
The RPi A+/B+ have the Power LED connected to GPIO Pin 35 (Activity LED is now on GPIO Pin 47 instead of Pin 16 in model A/B).
Constants
RPI_VCIO_*
RPI_VCIO_ALIAS = BCM2835_VCIO_ALIAS;
|
The VCIO Alias (For ARM Physcial to VC IO translation) |
RPI_VCBUS_*
RPI_VCBUS_ALIAS = BCM2835_VCBUS_4_ALIAS;
|
The currently selected VCBUS Alias (For ARM Physcial to VC Bus translation) (Affected by disable_l2cache setting in config.txt) |
RPI_STARTUP_*
RPI_STARTUP_ADDRESS = $00008000;
|
RPI_PAGE_TABLE_*
RPI_PAGE_TABLE_BASE = $00004000;
|
Place the first level Page Table after the interrupt vectors at 0x00001000 and before the code start at 0x00008000 |
RPI_PAGE_TABLE_SIZE = SIZE_16K;
|
ARM1176 first level Page Table is exactly 16KB in size (4096 32 bit (4 byte) entries) |
RPI_VECTOR_TABLE_*
RPI_VECTOR_TABLE_BASE = $00001000;
|
Place the Interrupt Vector Table at 0x00001000 before the code start at 0x00008000 |
RPI_VECTOR_TABLE_SIZE = SIZE_64;
|
The Interrupt Vector Table is exactly 64 bytes (16 32 bit (4 byte) entries) |
RPI_VECTOR_TABLE_COUNT = 8;
|
The Interrupt Vector Table contains 8 entries on an ARMv6 device |
RPI_CPU_*
RPI_CPU_COUNT = BCM2835_CPU_COUNT;
|
|
RPI_CPU_BOOT = CPU_ID_0;
|
|
RPI_CPU_MASK = CPU_AFFINITY_0;
|
RPI_SWI_*
RPI_SWI_COUNT = 256;
|
Number of available SWI entries |
RPI_KERNEL_*
RPI_KERNEL_NAME = 'kernel.img';
|
|
RPI_KERNEL_CONFIG = 'config.txt';
|
|
RPI_KERNEL_COMMAND = 'cmdline.txt';
|
RPIPLUS_GPIO_PWRLED_*
GPIO Power LED constants GPIO Pin 35 - A+/B+ Only | |
Note: GPIO Pin 35 on the A+/B+ is set on boot to Pull Up/Down Enable which must be cleared before using the pin | |
RPIPLUS_GPIO_PWRLED_GPFSEL = BCM2835_GPFSEL3;
|
GPFSEL register for PWR LED |
RPIPLUS_GPIO_PWRLED_GPSET = BCM2835_GPSET1;
|
GPSET register for PWR LED |
RPIPLUS_GPIO_PWRLED_GPCLR = BCM2835_GPCLR1;
|
GPCLR register for PWR LED |
RPIPLUS_GPIO_PWRLED_GPFSHIFT = 15;
|
GPFSEL register shift for PWR LED |
RPIPLUS_GPIO_PWRLED_GPFMASK = BCM2835_GPFSEL_MASK;
|
GPFSEL register mask for PWR LED |
RPIPLUS_GPIO_PWRLED_GPSHIFT = (35 - 32);
|
GPSET/GPCLR register shift for PWR LED |
RPIPLUS_GPIO_PWRLED_GPMASK = BCM2835_GPSET_MASK;
|
GPSET/GPCLR register mask for PWR LED |
GPIO Pin 35 on A+/B+ | |
See: http://www.raspberrypi.org/forums/viewtopic.php?t=72260 | |
See also for how to control GPPUD etc: http://wiki.osdev.org/Raspberry_Pi_Bare_Bones |
RPI_GPIO_ACTLED_*
GPIO Pin 16 - A/B Only | |
Note: GPIO Pin 47 on the A+/B+ is Pull High instead of Pull Low, to turn on the LED use RPIPLUS_GPIO_ACTLED_GPSET instead of RPIPLUS_GPIO_ACTLED_GPCLR | |
RPI_GPIO_ACTLED_GPFSEL = BCM2835_GPFSEL1;
|
GPFSEL register for ACT LED |
RPI_GPIO_ACTLED_GPSET = BCM2835_GPSET0;
|
GPSET register for ACT LED |
RPI_GPIO_ACTLED_GPCLR = BCM2835_GPCLR0;
|
GPCLR register for ACT LED |
RPI_GPIO_ACTLED_GPFSHIFT = 18;
|
GPFSEL register shift for ACT LED |
RPI_GPIO_ACTLED_GPFMASK = BCM2835_GPFSEL_MASK;
|
GPFSEL register mask for ACT LED |
RPI_GPIO_ACTLED_GPSHIFT = 16;
|
GPSET/GPCLR register shift for ACT LED |
RPI_GPIO_ACTLED_GPMASK = BCM2835_GPSET_MASK;
|
GPSET/GPCLR register mask for ACT LED |
RPIPLUS_GPIO_ACTLED_*
GPIO Pin 47 - A+/B+ Only | |
RPIPLUS_GPIO_ACTLED_GPFSEL = BCM2835_GPFSEL4;
|
GPFSEL register for ACT LED |
RPIPLUS_GPIO_ACTLED_GPSET = BCM2835_GPSET1;
|
GPSET register for ACT LED |
RPIPLUS_GPIO_ACTLED_GPCLR = BCM2835_GPCLR1;
|
GPCLR register for ACT LED |
RPIPLUS_GPIO_ACTLED_GPFSHIFT = 21;
|
GPFSEL register shift for ACT LED |
RPIPLUS_GPIO_ACTLED_GPFMASK = BCM2835_GPFSEL_MASK;
|
GPFSEL register mask for ACT LED |
RPIPLUS_GPIO_ACTLED_GPSHIFT = (47 - 32);
|
GPSET/GPCLR register shift for ACT LED |
RPIPLUS_GPIO_ACTLED_GPMASK = BCM2835_GPSET_MASK;
|
GPSET/GPCLR register mask for ACT LED |
RPI_MAILBOX_*
RPI_MAILBOX_TIMEOUT = 100;
|
Default timeout to wait for mailbox calls to complete (Milliseconds) |
RPI_MAILBOX_TIMEOUT_EX = 1000;
|
Extended timeout to wait for mailbox calls to complete (Milliseconds) |
RPI_FRAMEBUFFER_*
RPI_FRAMEBUFFER_DESCRIPTION = 'BCM2835 Framebuffer';
|
Type definitions
None defined
Public variables
RPi specific Ultibo variables
RPiInitialized:Boolean;
|
Timer variables
TimerRegisters:PBCM2835SystemTimerRegisters;
|
Mailbox variables
Mailbox0Registers:PBCM2835Mailbox0Registers;
|
Interrupt variables
InterruptRegisters:PBCM2835InterruptRegisters;
|
InterruptEntries:array[0..(BCM2835_IRQ_COUNT - 1)] of TInterruptEntry;
|
System call
SystemCallEntries:array[0..RPI_SWI_COUNT - 1] of TSystemCallEntry;
|
IRQ/FIQ
IRQEnabled:array[0..2] of LongWord;
|
3 groups of IRQs to Enable/Disable (See: TBCM2835InterruptRegisters) |
FIQEnabled:LongWord;
|
The single IRQ number to Enable as FIQ instead (See: TBCM2835InterruptRegisters) |
Watchdog variables
WatchdogRegisters:PBCM2835PMWatchdogRegisters;
|
Function declarations
Initialization functions
procedure RPiInit;
Note | None documented |
---|
RPi platform functions
procedure RPiBoardInit;
Note | None documented |
---|
procedure RPiMemoryInit;
Note | None documented |
---|
procedure RPiClockInit;
Note | None documented |
---|
procedure RPiPowerInit;
Note | None documented |
---|
procedure RPiMailboxInit;
Note | None documented |
---|
procedure RPiInterruptInit;
Note | None documented |
---|
procedure RPiPeripheralInit;
Note | None documented |
---|
procedure RPiFramebufferInit;
Note | None documented |
---|
procedure RPiPageTableInit;
Note | See page 6-36 of the ARM1176JZF-S Technical Reference Manual |
---|
procedure RPiPowerLEDEnable;
Note | None documented |
---|
procedure RPiPowerLEDOn;
Note | None documented |
---|
procedure RPiPowerLEDOff;
Note | None documented |
---|
procedure RPiActivityLEDEnable;
Note | None documented |
---|
procedure RPiActivityLEDOn;
Note | None documented |
---|
procedure RPiActivityLEDOff;
Note | None documented |
---|
function RPiMailboxReceive(Mailbox,Channel:LongWord):LongWord;
Note | Data = first 28 bits, Channel = last 4 bits |
---|
procedure RPiMailboxSend(Mailbox,Channel,Data:LongWord);
Note | Data = first 28 bits, Channel = last 4 bits |
---|
function RPiMailboxCall(Mailbox,Channel,Data:LongWord; var Response:LongWord):LongWord;
Note | Data = first 28 bits, Channel = last 4 bits
Data pointer must be 16 byte aligned to allow for the 4 bit channel number |
---|
function RPiMailboxCallEx(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord;
Note | Data = first 28 bits, Channel = last 4 bits
Data pointer must be 16 byte aligned to allow for the 4 bit channel number |
---|
function RPiMailboxPropertyCall(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord;
Note | Data = first 28 bits, Channel = last 4 bits
Data pointer must be 16 byte aligned to allow for the 4 bit channel number |
---|
function RPiMailboxPropertyCallEx(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord;
Note | Data = first 28 bits, Channel = last 4 bits
Data pointer must be 16 byte aligned to allow for the 4 bit channel number |
---|
function RPiRequestExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
CPUID | CPU to route IRQ to (Ignored on RPi) |
---|---|
Number | IRQ number to register |
Handler | Interrupt handler function to register |
HandlerEx | Extended Interrupt handler function to register |
Note | Only one of Handler or HandlerEx can be specified |
function RPiReleaseExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
CPUID | CPU to route IRQ to (Ignored on RPi) |
---|---|
Number | IRQ number to deregister |
Handler | Interrupt handler function to deregister |
HandlerEx | Extended Interrupt handler function to deregister |
Note | Only one of Handler or HandlerEx can be specified |
function RPiRequestExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
CPUID | CPU to route FIQ to (Ignored on RPi) |
---|---|
Number | FIQ number to register |
Handler | Interrupt handler function to register |
HandlerEx | Extended Interrupt handler function to register |
Note | Only one of Handler or HandlerEx can be specified |
function RPiReleaseExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord;
CPUID | CPU to route FIQ to (Ignored on RPi) |
---|---|
Number | FIQ number to deregister |
Handler | Interrupt handler function to deregister |
HandlerEx | Extended Interrupt handler function to deregister |
Note | Only one of Handler or HandlerEx can be specified |
function RPiRegisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;
CPUID | The CPU Id to register the System Call against (Ignored on RPi) |
---|---|
Number | The System Call number to be registered |
Handler | The handler function to be registered |
HandlerEx | The extended handler function to be registered |
Note | Only one of Handler or HandlerEx can be specified |
function RPiDeregisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord;
CPUID | The CPU Id to deregister the System Call from (Ignored on RPi) |
---|---|
Number | The System Call number to be deregistered |
Handler | The handler function to be deregistered |
HandlerEx | The extended handler function to be deregistered |
Note | Only one of Handler or HandlerEx can be specified |
function RPiGetInterruptEntry(Number:LongWord):TInterruptEntry;
Note | None documented |
---|
function RPiGetSystemCallEntry(Number:LongWord):TSystemCallEntry;
Note | Get the system call entry for the specified system call number |
---|
function RPiSystemRestart(Delay:LongWord):LongWord;
Note | None documented |
---|
function RPiSystemShutdown(Delay:LongWord):LongWord;
Note | None documented |
---|
function RPiSystemGetCommandLine:String;
Note | None documented |
---|
function RPiCPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord;
Note | None documented |
---|
function RPiGPUGetState:LongWord;
Note | None documented |
---|
function RPiGPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord;
Note | None documented |
---|
function RPiBoardGetModel:LongWord;
Note | None documented |
---|
function RPiBoardGetSerial:Int64;
Note | None documented |
---|
function RPiBoardGetRevision:LongWord;
Note | None documented |
---|
function RPiBoardGetMACAddress:String;
Note | None documented |
---|
function RPiFirmwareGetRevision:LongWord;
Note | None documented |
---|
function RPiFirmwareGetThrottled:LongWord;
Note | None documented |
---|
function RPiPowerGetWait(PowerId:LongWord):LongWord;
Note | None documented |
---|
function RPiPowerGetState(PowerId:LongWord):LongWord;
Note | None documented |
---|
function RPiPowerSetState(PowerId,State:LongWord; Wait:Boolean):LongWord;
Note | Power Lock not required due to Mailbox Property Call serialization |
---|
function RPiClockGetCount:LongWord;
Note | On the Raspberry Pi this comes from the System Timer free running counter which runs at 1MHz and therefore overflows every 4295 seconds |
---|
function RPiClockGetTotal:Int64;
Note | On the Raspberry Pi this comes from the System Timer free running counter which runs at 1MHz, the clock interrupt also uses this timer to increment the clock every second and therefore keep time. |
---|
function RPiClockGetRate(ClockId:LongWord):LongWord;
Note | None documented |
---|
function RPiClockSetRate(ClockId,Rate:LongWord; Turbo:Boolean):LongWord;
Note | None documented |
---|
function RPiClockGetState(ClockId:LongWord):LongWord;
Note | None documented |
---|
function RPiClockSetState(ClockId,State:LongWord):LongWord;
Note | None documented |
---|
function RPiClockGetMinRate(ClockId:LongWord):LongWord;
Note | None documented |
---|
function RPiClockGetMaxRate(ClockId:LongWord):LongWord;
Note | None documented |
---|
function RPiTurboGetState(TurboId:LongWord):LongWord;
Note | None documented |
---|
function RPiTurboSetState(TurboId,State:LongWord):LongWord;
Note | None documented |
---|
function RPiVoltageGetValue(VoltageId:LongWord):LongWord;
Note | None documented |
---|
function RPiVoltageSetValue(VoltageId,Value:LongWord):LongWord;
Note | None documented |
---|
function RPiVoltageGetMinValue(VoltageId:LongWord):LongWord;
Note | None documented |
---|
function RPiVoltageGetMaxValue(VoltageId:LongWord):LongWord;
Note | None documented |
---|
function RPiTemperatureGetCurrent(TemperatureId:LongWord):LongWord;
Note | None documented |
---|
function RPiTemperatureGetMaximum(TemperatureId:LongWord):LongWord;
Note | None documented |
---|
function RPiGPUMemoryAllocate(Length,Alignment,Flags:LongWord):THandle;
Note | None documented |
---|
function RPiGPUMemoryRelease(Handle:THandle):LongWord;
Note | None documented |
---|
function RPiGPUMemoryLock(Handle:THandle):LongWord;
Note | None documented |
---|
function RPiGPUMemoryUnlock(Handle:THandle):LongWord;
Note | None documented |
---|
function RPiGPUExecuteCode(Address:Pointer; R0,R1,R2,R3,R4,R5:LongWord):LongWord;
Note | None documented |
---|
function RPiDispmanxHandleGet(Resource:THandle):THandle;
Note | None documented |
---|
function RPiEDIDBlockGet(Block:LongWord; Buffer:Pointer; Length:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferAllocate(Alignment:LongWord; var Address,Length:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferRelease:LongWord;
Note | None documented |
---|
function RPiFramebufferSetState(State:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferGetDimensions(var Width,Height,Top,Bottom,Left,Right:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferGetPhysical(var Width,Height:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferSetPhysical(var Width,Height:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferTestPhysical(var Width,Height:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferGetVirtual(var Width,Height:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferSetVirtual(var Width,Height:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferTestVirtual(var Width,Height:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferGetDepth(var Depth:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferSetDepth(var Depth:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferTestDepth(var Depth:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferGetPixelOrder(var Order:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferSetPixelOrder(var Order:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferTestPixelOrder(var Order:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferGetAlphaMode(var Mode:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferSetAlphaMode(var Mode:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferTestAlphaMode(var Mode:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferGetPitch:LongWord;
Note | None documented |
---|
function RPiFramebufferGetOffset(var X,Y:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferSetOffset(var X,Y:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferTestOffset(var X,Y:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferGetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferSetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferTestOverscan(var Top,Bottom,Left,Right:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferGetPalette(Buffer:Pointer; Length:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferSetPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferTestPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferTestVsync:LongWord;
Note | None documented |
---|
function RPiFramebufferSetVsync:LongWord;
Note | None documented |
---|
function RPiFramebufferSetBacklight(Brightness:LongWord):LongWord;
Note | None documented |
---|
function RPiTouchGetBuffer(var Address:LongWord):LongWord;
Note | On current firmware versions calling TouchGetBuffer will allocate a buffer from GPU memory and render subsequent calls to TouchSetBuffer ineffective. After an initial call to TouchSetBuffer calls to TouchGetBuffer will always return the CPU allocated buffer. |
---|
function RPiTouchSetBuffer(Address:PtrUInt):LongWord;
Note | None documented |
---|
function RPiCursorSetDefault:LongWord;
Note | None documented |
---|
function RPiCursorSetInfo(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord;
Note | None documented |
---|
function RPiCursorSetState(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord;
Relative | X, Y is relative to Display (Virtual) not Framebuffer (Physical). |
---|
function RPiDMAGetChannels:LongWord;
Note | None documented |
---|
RPi thread functions
procedure RPiSchedulerInit;
Note | None documented |
---|
RPi IRQ functions
function RPiDispatchIRQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Note | Called by ARMv6IRQHandler in PlatformARMv6
A DataMemoryBarrier is executed before and after calling this function |
---|
function RPiHandleIRQ(Number,CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Note | None documented |
---|
RPi FIQ functions
function RPiDispatchFIQ(CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Note | Called by ARMv6FIQHandler in PlatformARMv6
A DataMemoryBarrier is executed before and after calling this function |
---|
function RPiHandleFIQ(Number,CPUID:LongWord; Thread:TThreadHandle):TThreadHandle;
Note | None documented |
---|
RPi SWI functions
function RPiDispatchSWI(CPUID:LongWord; Thread:TThreadHandle; Request:PSystemCallRequest):TThreadHandle;
Note | Called by ARMv6SoftwareInterruptHandler in PlatformARMv6
A DataMemoryBarrier is executed before and after calling this function |
---|
RPi clock functions
procedure RPiClockInterrupt(Parameter:Pointer);
Note | This schedules another clock interrupt to occur CLOCK_CYCLES_PER_TICK in the future, then updates ClockTicks and ClockSeconds. |
---|
procedure RPiClockUpdate(Cycles:LongWord; var Last:LongWord);
Cycles | Number of cycles after which the timer interrupt is to be triggered |
---|---|
Note | This refers to native clock cycles as specified by CLOCK_FREQUENCY |
RPi scheduler functions
function RPiSchedulerInterrupt(CPUID:LongWord; Thread:TThreadHandle; Parameter:Pointer):TThreadHandle;
Note | This schedules another scheduler interrupt to occur SCHEDULER_CLOCKS_PER_INTERRUPT in the future, then checks for threads to wakeup and the next thread to schedule. |
---|
procedure RPiSchedulerUpdate(Cycles:LongWord; var Last:LongWord);
Cycles | Number of cycles after which the scheduler interrupt is to be triggered |
---|---|
Note | This refers to native clock cycles as specified by CLOCK_FREQUENCY |
procedure RPiSchedulerSystemCall(Request:PSystemCallRequest);
Note | This is registered to receive requests for the SYSTEM_CALL_CONTEXT_SWITCH and will perform a context switch from within an SWI |
---|
RPi framebuffer functions
function RPiFramebufferDeviceAllocate(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Note | None documented |
---|
function RPiFramebufferDeviceAllocateAlt(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Note | None documented |
---|
function RPiFramebufferDeviceRelease(Framebuffer:PFramebufferDevice):LongWord;
Note | None documented |
---|
function RPiFramebufferDeviceBlank(Framebuffer:PFramebufferDevice; Blank:Boolean):LongWord;
Note | None documented |
---|
function RPiFramebufferDeviceCommit(Framebuffer:PFramebufferDevice; Address,Size,Flags:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferDeviceSetBacklight(Framebuffer:PFramebufferDevice; Brightness:LongWord):LongWord;
Note | None documented |
---|
function RPiFramebufferDeviceSetProperties(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Note | None documented |
---|
RPi helper functions
procedure RPiWait; assembler; nostackframe;
Note | None documented |
---|
procedure RPiLongWait; assembler; nostackframe;
Note | None documented |
---|
procedure RPiShortWait; assembler; nostackframe;
Note | None documented |
---|
procedure RPiSlowBlink; assembler; nostackframe;
Note | None documented |
---|
procedure RPiFastBlink; assembler; nostackframe;
Note | None documented |
---|
procedure RPiBootBlink; assembler; nostackframe;
Note | This currently only works for RPiA+/B+ |
---|
function RPiConvertPowerIdRequest(PowerId:LongWord):LongWord;
Note | None documented |
---|
function RPiConvertPowerStateRequest(PowerState:LongWord):LongWord;
Note | None documented |
---|
function RPiConvertPowerStateResponse(PowerState:LongWord):LongWord;
Note | None documented |
---|
function RPiConvertClockIdRequest(ClockId:LongWord):LongWord;
Note | None documented |
---|
function RPiConvertClockStateRequest(ClockState:LongWord):LongWord;
Note | None documented |
---|
function RPiConvertClockStateResponse(ClockState:LongWord):LongWord;
Note | None documented |
---|
function RPiConvertVoltageIdRequest(VoltageId:LongWord):LongWord;
Note | None documented |
---|
function RPiConvertTemperatureIdRequest(TemperatureId:LongWord):LongWord;
Note | None documented |
---|
Return to Unit Reference