# # 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