Files
nuttx-apps/boot/nxboot/Kconfig
Lars Kruse 00911d417d boot/nxboot: improve documentation
Previously it was hard to guess the correct entrypoint for the
bootloader application.

Signed-off-by: Lars Kruse <devel@sumpfralle.de>
2025-09-18 02:15:43 +08:00

160 lines
5.1 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
menuconfig BOOT_NXBOOT
bool "NuttX bootloader"
default n
select BCH
---help---
Enable support for the minimal NuttX based bootloader.
if BOOT_NXBOOT
config NXBOOT_PRIMARY_SLOT_PATH
string "Application firmware primary image slot path"
default "/dev/ota0"
---help---
The path to the application firmware image primary slot character
device driver. The image runs from this location.
Default: /dev/ota0
config NXBOOT_SECONDARY_SLOT_PATH
string "Application firmware secondary image slot path"
default "/dev/ota1"
---help---
The path to the application firmware image primary slot character
device driver. This is either update or recovery slot.
Default: /dev/ota1
config NXBOOT_TERTIARY_SLOT_PATH
string "Application firmware tertiary image slot path"
default "/dev/ota2"
---help---
The path to the application firmware image primary slot character
device driver. This is either update or recovery slot.
Default: /dev/ota2
config NXBOOT_HEADER_SIZE
hex "Application firmware image header size"
default 0x200
---help---
The nxboot bootloader itself requires only a few bytes of header
data. Increase this value, if you need to store additional
application-specific meta data.
Note that this size should be aligned with the program memory write
page size!
config NXBOOT_PLATFORM_IDENTIFIER
hex "A unique platform identifier"
default 0x0
---help---
This is a unique platform identifier used by the bootloader to
verify whether the image should be run on a given platform. An update
(or even a firmware uploaded via a programmer) is rejected if the
value in image's header doesn't match this option.
config NXBOOT_BOOTLOADER
bool "Build nxboot bootloader application"
default n
select BOARDCTL
select BOARDCTL_BOOT_IMAGE
---help---
This option builds and links a bootloader application. This application
("nxboot_loader_main") should be the entry function for NuttX.
It checks for a possible update/revert operation, performs it and boots
the correct image.
if NXBOOT_BOOTLOADER
config NXBOOT_COPY_TO_RAM
bool "Copy bootable image to RAM before calling board boot-image function"
default n
---help---
The is a board and/or arch specific option that may be used when running
directly from flash, especially if external flash, even in XIP mode, is too
slow.
Running from RAM usually results in faster execution but the board must, of
course, have sufficient RAM available for the application image, stack
and heap.
config NXBOOT_RAMSTART
hex "Start address in RAM that the application is to be loaded"
default 0x0
depends on NXBOOT_COPY_TO_RAM
---help---
This will be board specific. A check of the board's linker script
may be informative. For example the SAMA5D2-XULT eval board's uboot
linker script - boards/arm/sama5/sama5d2-xult/scripts/uboot.ld - has:
sdram (W!RX) : ORIGIN = 0x20008000, LENGTH = 256M - 32K
This shows the load address to be 0x20008000 and would be the address
to use here if the same linker script is to be be used for NXboot.
Typically the address is the base address of the RAM to be used, plus the
size of the NXboot image itself. The example above has reserved
32KiB (0x8000) for this from the 256MiB available on the board at
address 0x20000000.
config NXBOOT_SWRESET_ONLY
bool "Perform update/revert only on SW reset"
default n
select BOARDCTL_RESET_CAUSE
---help---
This option ensures the update/revert is performed only for following
reset causes:
BOARDIOC_RESETCAUSE_CPU_SOFT: software reset
BOARDIOC_RESETCAUSE_CPU_RWDT: watchdog error
BOARDIOC_RESETCAUSE_PIN: reset button
This way the board can keep its image (even if not confirmed) during
for example power shutdown and perform update/revent only if expected
based on user/maintainer input.
config NXBOOT_PREVENT_DOWNGRADE
bool "Perform update only for newer version"
default n
---help---
NXboot uses Semantic Version 2.0.0 (without build metadata). By default
the update is performed for every version that doesn't match the
currently running one. If NXBOOT_PREVENT_DOWNGRADE selected, update is
performed only for newer versions (according to Semantic Version
preference rules).
WARNING: NXboot currently implements preferences only for
MAJOR.MINOR.PATCH and ignores prerelease.
config NXBOOT_PROGRESS
bool
default n
config NXBOOT_PRINTF_PROGRESS
bool "Enable progress messages to be sent to STDOUT"
default y
select NXBOOT_PROGRESS
---help---
This will display progress during typically lengthy operations:
- Calculating checksums
- copying images between slots
Note: the NXboot binary will be approximately 2KiB larger with this enabled.
choice
prompt "Choose preferred progress indication type"
depends on NXBOOT_PRINTF_PROGRESS
default NXBOOT_PRINTF_PROGRESS_PERCENT
config NXBOOT_PRINTF_PROGRESS_DOTS
bool "Display progress using sequential dots"
config NXBOOT_PRINTF_PROGRESS_PERCENT
bool "Display progress using percentage remaining"
endchoice
endif # NXBOOT_BOOTLOADER
endif # BOOT_NXBOOT