Startup for Intel Advanced Programmable Interrupt Controller (APIC) systems (QNX Neutrino)
startup-apic [-ABb] [-D channel[.channel_opts]] [-F [~]value] [-f [cpu_freq][,[cycles_freq][,timer_freq]]] [-I flag] [-i ifs2_size[,flags][,paddr_src][,paddr_dst]] [-j addr] [-K channel[.channel_opts]] [-N hostname] [-P max_cpus] [-R size[,align]] [-r addr,size[,flag]] [-S [~]section] [-s size] [-T] [-v[v]...] [-x] [-z] startup-apic-32 [-ABb] [-D channel[.channel_opts]] [-F [~]value] [-f [cpu_freq][,[cycles_freq][,timer_freq]]] [-I flag] [-i ifs2_size[,flags][,paddr_src][,paddr_dst]] [-j addr] [-K channel[.channel_opts]] [-N hostname] [-P max_cpus] [-R size[,align]] [-r addr,size[,flag]] [-S [~]section] [-s size] [-T] [-v[v]...] [-x] [-z]
QNX Neutrino
x86
In addition to the generic startup-* and x86-specific options, startup-apic and startup-apic-32 support the following options:
x86_pcbios_shadow_rom( 0xc0000, size );
For more information, see "The startup library" in the Customizing Image Startup Programs chapter of Building Embedded Systems.
Debug channels
The debug channel specified with the -D and -K options can be:
You can skip options by leaving out the data associated with that part. For example, if you want to send the debugging output to an 8250 chip using 9600 baud, use:
-D 8250..9600
The default -D and -K settings are:
-D console -K 8250.3f8^0.57600.1843200.16
The startup-apic and startup-apic-32 programs are the startup for boards that support Intel Advanced Programmable Interrupt Controllers (APIC). They support Message Signaled Interrupts (MSI) and Extended MSI (MSI-X). They're similar, except that startup-apic uses 64-bit physical addresses, and startup-apic-32 uses 32-bit ones.
pci-bios=pci-bios-v2
To assign MSI or MSI-X interrupts in a driver, use the PCI_USE_MSI or PCI_USE_MSIX flag when you call pci_attach_device(). For more information, see its entry in the QNX Neutrino C Library Reference.
By default on Intel-based platforms, startup-apic and startup-apic-32 use High Precision Event Timer 0 (instead of the 8254) for the system clock. You can tell they're doing so in a couple of ways:
MSI interrupt = 0x00000100 MSI vector no = 78 0x0000004e MSI vec count = 177 HPET0 selected for system clock on IRQ 2 Loading IFS...decompressing...done lapic_configure(cpu=1) System page at phys:00011000 user:fed14000 kern:fed16000
# pidin syspage=qtime Header size=0x0000009c, Total Size=0x000008e0, #Cpu=2, Type=0 Section:qtime offset:0x00000160 size:0x00000060 boot:495d89cb CPS:000000005a82b720 rate/scale:69841279/-15 intr:2
The 69841279 femtosecond clock period indicates that the HPET is being used. With the 8254 clock, the value is approximately 823 x 106 femtoseconds (one order of magnitude less resolution).
Direct debug output to the console:
startup-apic -Nnode120 -vvvv -Dconsole
Direct debug output to the first serial port (making sure the baud rate was set to 115200 on the receiving side):
startup-apic -Nnode120 -vvvv -D8250..115200
Direct debug output to the serial port at 2f8:
startup-apic -Nnode120 -vvvv -D8250.2f8.115200