Updated: October 28, 2024 |
Generic options for startup programs (QNX Neutrino)
All QNX Neutrino startup programs support the generic options described below. There are additional options for the following architectures:
For more information about this kernel callout, see System reboot in the Building Embedded Systems guide.
If this flag isn't set, the default reboot callout doesn't reboot the system but instead halts execution, allowing you to attach a debugger and investigate the processor state. Also, this flag applies only to abnormal shutdowns. With normal shutdowns, which are those initiated by a call to sysmgr_reboot(), shutdown_system(), or shutdown_system_with_reason(), this flag isn't considered.
For more information about the flags, see the System Page chapter of Building Embedded Systems.
If they're specified, cpu_freq, cycles_freq, and timer_freq are used to set the corresponding variables in the startup code:
To prevent the problem, you can characterize the time it takes to write to the hardware timer (i.e., the time for one call to the timer_load() callout). The value is in nanoseconds; for example, use -f 0,0,0,5000 for 5000 ns.
Passing in 0 or leaving the field empty causes procnto to sample the time, and is the current mode of operation.
If a variable is zero when it comes time to set the field(s) on the system page, the library code attempts to deduce the proper value by using one of the other frequency variables. Which one it uses depends on the particular CPU and hardware.
If checksum verification is enabled and fails, the entire image is reloaded.
For more information, see Reloadable Image Filesystems in the QNX Neutrino technotes.
The arguments are:
If the checksum is enabled and fails, the entire secondary IFS is reloaded.
For more information, see Reloadable Image Filesystems in the QNX Neutrino technotes.
Reserve 4 bytes of RAM at the physical address specified by addr, and copy the physical address of the location of the system page to addr in RAM so that it can be retrieved by a hardware debugger.
If you specify the align argument, the reserved area is aligned on the boundary it specifies. The default is 0, meaning no alignment.
If you specify the name argument, the reserved RAM area is available through the POSIX typed memory interface under /memory/ram/name. If you don't specify the name argument, the area is available under /memory/ram/reserved.
The optional use_low_memory argument is an unsigned integer. If it's zero (the default), startup gets memory from the top of memory, which doesn't work for drivers with 32-bit DMA address restrictions if the target has RAM available above 4 GB. If use_low_memory is nonzero, startup tries to allocate from the lower end of memory, in the hope that there's enough below4G memory to work with 32-bit DMA restrictions. If below4G is already full, the driver can still get an address that's above 4 GB.
The flag is an optional argument used to specify if the memory should be cleared:
Flag: | Memory: |
---|---|
None | Clears to 0 |
0 | Clears to 0 |
1 | Does not clear |
If you specify this option, the QTIME_FLAG_TICKLESS flag is set in the qtime member of the system page (see the System Page chapter of Building Embedded Systems).
The following options are supported in the startup programs for 32-bit ARM targets:
The following options are supported in the startup programs for 64-bit ARM (AArch64) targets:
If this flag is set for CPU 0, the kernel checks each CPU to determine if it supports FEAT_SSBS (Speculative Store Bypass Safe (SSBS)). To determine whether a CPU supports SSBS, the kernel queries the CPU's ID_AA64PFR1_EL1 feature register (not its cpuinfo entry). If the CPU supports SSBS, its PSTATE.SSBS bit is set.
A CPU's PSTATE.SSBS bit is not cleared if AARCH64_CPU_SSBS is not set for cpuinfo for CPU 0.
For more information, see cpuinfo in the System Page chapter of Building Embedded Systems.
For more information, see cpuinfo in the System Page chapter of Building Embedded Systems.
The following options are supported in the startup programs for 64-bit x86 targets:
You can use the -z[z] option to affect the selection:
To determine which clock source was selected, do one of the following:
# pidin syspage=qtime Header size=0x00000108, Total Size=0x00000cc0, #Cpu=2, Type=256 Section:qtime offset:0x00000258 size:0x00000060 boot:5b35f6a0 CPS:00000000a1ca3421 rate/scale:69841279/-15 intr:2 flags:00000002 load:14318 epoch:1970 rr_mul:0 adj count/inc:0/0 nsec:0000014dba1b3f2b stable:0000014dba1b3f2b inc:000f4233 nsec_tod_adj:153c9645d0da4000
The clock period (rate * 10scale) indicates which clock is being used. Typical numbers are as follows:
Clock source | Rate | Scale | Period (femtoseconds) |
---|---|---|---|
LAPIC | 1 | -8 | 10,000,000 |
HPET | 69841279 | -15 | 69,841,279 |
8254 | 838095345 | -15 | 838,095,345 |
For more information about the contents of the system page, see the System Page chapter of Building Embedded Systems.