123 lines
3.2 KiB
ReStructuredText
123 lines
3.2 KiB
ReStructuredText
.. zephyr:code-sample:: bootargs
|
|
:name: Bootargs
|
|
|
|
Print received bootargs to the console.
|
|
|
|
Overview
|
|
********
|
|
|
|
This sample demonstrates use of bootargs passed to Zephyr by printing each main argument to the console.
|
|
Zephyr support both dynamic bootargs, received from supported bootloader, and static bootargs embedded in the binary.
|
|
|
|
Requirements
|
|
************
|
|
|
|
Static bootargs don't have special requirements.
|
|
Dynamic bootargs work on platforms where Zephyr is booted by multiboot or efi.
|
|
|
|
Building and Running
|
|
********************
|
|
|
|
Static bootargs
|
|
===============
|
|
|
|
Static bootargs can be configured using ``CONFIG_BOOTARGS_STRING``.
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/kernel/bootargs
|
|
:board: qemu_x86
|
|
:conf: prj_static_bootargs.conf
|
|
:goals: build run
|
|
:compact:
|
|
|
|
Output:
|
|
|
|
.. code-block:: console
|
|
|
|
*** Booting Zephyr OS build v3.7.0-514-gd4490bc739d1 ***
|
|
argv[0] = appname
|
|
argv[1] = This
|
|
argv[2] = is
|
|
argv[3] = a list of
|
|
argv[4] = arguments
|
|
|
|
Multiboot
|
|
=========
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/kernel/bootargs
|
|
:board: qemu_x86
|
|
:conf: prj_multiboot.conf
|
|
:goals: build run
|
|
:compact:
|
|
|
|
Output:
|
|
|
|
.. code-block:: console
|
|
|
|
*** Booting Zephyr OS build v3.7.0-rc2-421-g3cf718e6dabc ***
|
|
argv[0] = /home/user/zephyr/samples/kernel/bootargs/build/zephyr/zephyr.elf
|
|
|
|
To pass your own arguments you can manually invoke qemu with ``-append "your args"``, for example:
|
|
|
|
.. code-block:: console
|
|
|
|
qemu-system-x86_64 -kernel ./build/zephyr/zephyr.elf -nographic -append "This is 'a list of' arguments"
|
|
|
|
Which will result in the following output:
|
|
|
|
.. code-block:: console
|
|
|
|
*** Booting Zephyr OS build v3.7.0-rc2-421-g3cf718e6dabc ***
|
|
argv[0] = ./build/zephyr/zephyr.elf
|
|
argv[1] = This
|
|
argv[2] = is
|
|
argv[3] = a list of
|
|
argv[4] = arguments
|
|
|
|
Efi
|
|
=========
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/kernel/bootargs
|
|
:board: qemu_x86_64
|
|
:conf: prj_efi.conf
|
|
:goals: build run
|
|
:compact:
|
|
|
|
Output:
|
|
|
|
.. code-block:: console
|
|
|
|
*** Zephyr EFI Loader ***
|
|
RSDP found at 0xbf7e014
|
|
Zeroing 501792 bytes of memory at 0x163000
|
|
Copying 16384 data bytes to 0x1000 from image offset
|
|
Copying 405504 data bytes to 0x100000 from image offset 16384
|
|
Copying 30688 data bytes to 0x1dd820 from image offset 421888
|
|
Jumping to Entry Point: 0x1137 (48 31 c0 48 31 d2 48)
|
|
|
|
*** Booting Zephyr OS build v3.7.0-rc2-421-g3cf718e6dabc ***
|
|
argv[0] = run.efi
|
|
|
|
To pass your own arguments you can press ESC and write your arguments after name of the Zephyr efi binary, for example:
|
|
|
|
.. code-block:: console
|
|
|
|
Press ESC in 5 seconds to skip startup.nsh or any other key to continue.
|
|
Shell> run.efi This is 'a list of' arguments
|
|
*** Zephyr EFI Loader ***
|
|
RSDP found at 0xbf7e014
|
|
Zeroing 501792 bytes of memory at 0x163000
|
|
Copying 16384 data bytes to 0x1000 from image offset
|
|
Copying 405504 data bytes to 0x100000 from image offset 16384
|
|
Copying 30688 data bytes to 0x1dd820 from image offset 421888
|
|
Jumping to Entry Point: 0x1137 (48 31 c0 48 31 d2 48)
|
|
|
|
*** Booting Zephyr OS build v3.7.0-rc2-421-g3cf718e6dabc ***
|
|
argv[0] = run.efi
|
|
argv[1] = This
|
|
argv[2] = is
|
|
argv[3] = a list of
|
|
argv[4] = arguments
|