mirror of
https://github.com/apache/nuttx-apps.git
synced 2025-10-17 15:32:21 +08:00

Previously it was hard to guess the correct entrypoint for the bootloader application. Signed-off-by: Lars Kruse <devel@sumpfralle.de>
160 lines
5.1 KiB
Plaintext
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
|