You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by pk...@apache.org on 2022/03/19 14:10:06 UTC

[incubator-nuttx] 04/04: boards/arm/samv7/samv71-xult: Add mcuboot update example configs

This is an automated email from the ASF dual-hosted git repository.

pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 6740ec3feed49aaf8a7dc0ba22996a62bec9e990
Author: Gerson Fernando Budke <ge...@ossystems.com.br>
AuthorDate: Sun Feb 27 09:43:08 2022 -0300

    boards/arm/samv7/samv71-xult: Add mcuboot update example configs
    
    Add MCUboot Update Agent and Slot Confirm configurations. It uses
    ethernet with dhcp client to perform download of new image into
    internal flash memory.
    
    Signed-off-by: Gerson Fernando Budke <ge...@ossystems.com.br>
---
 boards/arm/samv7/samv71-xult/README.txt            |  96 +++++++++++++++++
 .../configs/mcuboot-slot-confirm/defconfig         |  62 +++++++++++
 .../configs/mcuboot-update-agent/defconfig         | 118 +++++++++++++++++++++
 3 files changed, 276 insertions(+)

diff --git a/boards/arm/samv7/samv71-xult/README.txt b/boards/arm/samv7/samv71-xult/README.txt
index 8146766..1b9183e 100644
--- a/boards/arm/samv7/samv71-xult/README.txt
+++ b/boards/arm/samv7/samv71-xult/README.txt
@@ -2650,3 +2650,99 @@ Configuration sub-directories
 
       CONFIG_SAMV7_FORMAT_MCUBOOT=y
       CONFIG_INIT_ENTRYPOINT="nsh_main"
+
+  mcuboot-agent:
+    This configuration exercises the MCUboot firmware upgrade example. The
+    application is NuttX nsh with some special commands.
+
+    Generate signed binaries for MCUboot compatible application:
+
+      ./apps/boot/mcuboot/mcuboot/scripts/imgtool.py sign \
+        --key apps/boot/mcuboot/mcuboot/root-rsa-2048.pem --align 8 \
+        --version 1.0.0 --header-size 0x200 --pad-header --slot-size 0xe0000 \
+        --confirm nuttx/nuttx.bin mcuboot_nuttx.update.agent.bin
+
+      Flash agent application at MCUboot Slot-0:
+
+      openocd -f interface/cmsis-dap.cfg \
+              -c 'transport select swd' \
+	      -c 'set CHIPNAME atsamv71q21' \
+	      -f target/atsamv.cfg \
+	      -c 'reset_config srst_only' \
+	      -c init -c targets \
+	      -c 'reset halt' \
+	      -c 'program mcuboot_nuttx.update.agent.bin 0x420000' \
+	      -c 'reset halt' \
+	      -c 'atsamv gpnvm set 1' \
+	      -c 'reset run' -c shutdown
+
+    The board is ready to perform an upgrade. However, this example requires
+    use an image to be used as new application. You can use the Confirm example,
+    which will be used in the download process.
+
+    See mcuboot-confirm for more information.
+
+    Relevant configuration settings:
+
+      CONFIG_EXAMPLES_MCUBOOT_UPDATE_AGENT=y
+
+      CONFIG_SAMV7_FORMAT_MCUBOOT=y
+      CONFIG_INIT_ENTRYPOINT="nsh_main"
+
+  mcuboot-confirm:
+
+      ./apps/boot/mcuboot/mcuboot/scripts/imgtool.py sign \
+        --key apps/boot/mcuboot/mcuboot/root-rsa-2048.pem --align 8 \
+        --version 2.0.0 --header-size 0x200 --pad-header --slot-size 0xe0000 \
+        nuttx/nuttx.bin mcuboot_nuttx.slot.confirm.bin
+
+    The mcuboot_nuttx.app.confirm.bin would be used at http server in your
+    network to be downloaded by Agent at MCUboot Slot-1.
+
+    Using Python to create a http server at your NuttX workspace:
+
+    sudo python -m http.server 8080 &
+
+    Test download:
+
+    wget <your PC IP>:8080/mcuboot_nuttx.slot.confirm.bin -O test.bin
+
+    Check MD5:
+
+    md5sum mcuboot_nuttx.slot.confirm.bin test.bin
+    958b523f1049696aba73354615868b7f  mcuboot_nuttx.slot.confirm.bin test.bin
+    958b523f1049696aba73354615868b7f  test.bin
+    rm test.bin
+
+    The OTA config uses DHCP client to get local ip address. This way your board
+    will have automatically access to your network. Let's check board.
+
+    ping <your PC IP>
+    PING xxx.xxx.xxx.xxx 56 bytes of data
+    56 bytes from xxx.xxx.xxx.xxx: icmp_seq=0 time=0 ms
+    56 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 time=0 ms
+    ...
+    56 bytes from xxx.xxx.xxx.xxx: icmp_seq=9 time=0 ms
+    10 packets transmitted, 10 received, 0% packet loss, time 10100 ms
+
+    nsh> mcuboot_agent http://xxx.xxx.xxx.xxx:8080/mcuboot_nuttx.slot.confirm.bin
+    MCUboot Update Agen192.168.10.104 - - [16/Dec/2021 19:29:08]
+    "GET /mcuboot_nuttx.slot.confirm.bin HTTP/1.0" 200 -t example
+    Downloading from http://xxx.xxx.xxx.xxx:8080/signedv2.bin
+    Firmware Update size: 194464 bytes
+    Received: 512      of 194464 bytes [0%]
+    Received: 1024     of 194464 bytes [0%]
+    ...
+    Received: 194048   of 194464 bytes [99%]
+    Received: 194468   of 194468 bytes [100%]
+    Application Image successfully downloaded!
+    Requested update for next boot. Restarting...
+    *** Booting MCUboot build 7c890f4b075aed73e4c825ccf875b2fb9ebf2ded ***
+    Application Image successfully confirmed!
+
+    Relevant configuration settings:
+
+      CONFIG_EXAMPLES_MCUBOOT_SLOT_CONFIRM=y
+
+      CONFIG_SAMV7_FORMAT_MCUBOOT=y
+      CONFIG_INIT_ENTRYPOINT="nsh_main"
diff --git a/boards/arm/samv7/samv71-xult/configs/mcuboot-slot-confirm/defconfig b/boards/arm/samv7/samv71-xult/configs/mcuboot-slot-confirm/defconfig
new file mode 100644
index 0000000..91665a2
--- /dev/null
+++ b/boards/arm/samv7/samv71-xult/configs/mcuboot-slot-confirm/defconfig
@@ -0,0 +1,62 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+# CONFIG_SAMV7_UART0 is not set
+# CONFIG_SAMV7_UART2 is not set
+# CONFIG_SAMV7_UART4 is not set
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="samv71-xult"
+CONFIG_ARCH_BOARD_COMMON=y
+CONFIG_ARCH_BOARD_SAMV71_XULT=y
+CONFIG_ARCH_BUTTONS=y
+CONFIG_ARCH_CHIP="samv7"
+CONFIG_ARCH_CHIP_SAMV71=y
+CONFIG_ARCH_CHIP_SAMV71Q21=y
+CONFIG_ARCH_CHIP_SAMV71Q=y
+CONFIG_ARCH_CHIP_SAMV7=y
+CONFIG_ARCH_CHIP_SAMV7_MEM_FLASH=0x200000
+CONFIG_ARCH_CHIP_SAMV7_MEM_RAM=0x60000
+CONFIG_ARCH_INTERRUPTSTACK=2048
+CONFIG_ARCH_IRQBUTTONS=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARMV7M_DCACHE=y
+CONFIG_ARMV7M_ICACHE=y
+CONFIG_ARMV7M_LAZYFPU=y
+CONFIG_BOARDCTL_RESET=y
+CONFIG_BOARD_LATE_INITIALIZE=y
+CONFIG_BOARD_LOOPSPERMSEC=51262
+CONFIG_BUILTIN=y
+CONFIG_EXAMPLES_MCUBOOT_SLOT_CONFIRM=y
+CONFIG_FS_PROCFS=y
+CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_PREALLOC_TIMERS=4
+CONFIG_PTABLE_PARTITION=y
+CONFIG_RAM_SIZE=393216
+CONFIG_RAM_START=0x20400000
+CONFIG_RAW_BINARY=y
+CONFIG_RR_INTERVAL=200
+CONFIG_SAMV7_FORMAT_MCUBOOT=y
+CONFIG_SAMV7_GPIOA_IRQ=y
+CONFIG_SAMV7_GPIOB_IRQ=y
+CONFIG_SAMV7_GPIOD_IRQ=y
+CONFIG_SAMV7_GPIO_IRQ=y
+CONFIG_SAMV7_SYSTEMRESET=y
+CONFIG_SAMV7_USART1=y
+CONFIG_SAMV7_XDMAC=y
+CONFIG_SCHED_HPWORK=y
+CONFIG_SCHED_WAITPID=y
+CONFIG_START_DAY=10
+CONFIG_START_MONTH=3
+CONFIG_START_YEAR=2014
+CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_RAMTEST=y
+CONFIG_USART1_SERIAL_CONSOLE=y
diff --git a/boards/arm/samv7/samv71-xult/configs/mcuboot-update-agent/defconfig b/boards/arm/samv7/samv71-xult/configs/mcuboot-update-agent/defconfig
new file mode 100644
index 0000000..dc290f0
--- /dev/null
+++ b/boards/arm/samv7/samv71-xult/configs/mcuboot-update-agent/defconfig
@@ -0,0 +1,118 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+# CONFIG_MMCSD_MMCSUPPORT is not set
+# CONFIG_MMCSD_SPI is not set
+# CONFIG_SAMV7_UART0 is not set
+# CONFIG_SAMV7_UART2 is not set
+# CONFIG_SAMV7_UART4 is not set
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="samv71-xult"
+CONFIG_ARCH_BOARD_COMMON=y
+CONFIG_ARCH_BOARD_SAMV71_XULT=y
+CONFIG_ARCH_BUTTONS=y
+CONFIG_ARCH_CHIP="samv7"
+CONFIG_ARCH_CHIP_SAMV71=y
+CONFIG_ARCH_CHIP_SAMV71Q21=y
+CONFIG_ARCH_CHIP_SAMV71Q=y
+CONFIG_ARCH_CHIP_SAMV7=y
+CONFIG_ARCH_CHIP_SAMV7_MEM_FLASH=0x200000
+CONFIG_ARCH_CHIP_SAMV7_MEM_RAM=0x60000
+CONFIG_ARCH_INTERRUPTSTACK=2048
+CONFIG_ARCH_IRQBUTTONS=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARMV7M_DCACHE=y
+CONFIG_ARMV7M_ICACHE=y
+CONFIG_ARMV7M_LAZYFPU=y
+CONFIG_AT24XX_ADDR=0x57
+CONFIG_AT24XX_EXTENDED=y
+CONFIG_AT24XX_EXTSIZE=160
+CONFIG_AT24XX_SIZE=2
+CONFIG_BOARDCTL_RESET=y
+CONFIG_BOARD_LOOPSPERMSEC=51262
+CONFIG_BUILTIN=y
+CONFIG_DEBUG_CUSTOMOPT=y
+CONFIG_ETH0_PHY_KSZ8061=y
+CONFIG_EXAMPLES_MCUBOOT_UPDATE_AGENT=y
+CONFIG_EXAMPLES_MCUBOOT_UPDATE_AGENT_DL_BUFFER_SIZE=4096
+CONFIG_FAT_LCNAMES=y
+CONFIG_FAT_LFN=y
+CONFIG_FS_FAT=y
+CONFIG_FS_PROCFS=y
+CONFIG_I2CTOOL_MAXBUS=0
+CONFIG_LIBC_HOSTNAME="SAMV71-XULT"
+CONFIG_MMCSD_SDIO=y
+CONFIG_MTD_AT24XX=y
+CONFIG_MTD_AT25=y
+CONFIG_MTD_CONFIG=y
+CONFIG_NET=y
+CONFIG_NETDB_DNSCLIENT=y
+CONFIG_NETDEV_PHY_IOCTL=y
+CONFIG_NETDEV_STATISTICS=y
+CONFIG_NETDOWN_NOTIFIER=y
+CONFIG_NETINIT_DHCPC=y
+CONFIG_NETINIT_DNS=y
+CONFIG_NETINIT_MONITOR=y
+CONFIG_NETINIT_THREAD=y
+CONFIG_NETLINK_ROUTE=y
+CONFIG_NETUTILS_DHCPC=y
+CONFIG_NETUTILS_TELNETD=y
+CONFIG_NETUTILS_TFTPC=y
+CONFIG_NETUTILS_WEBCLIENT=y
+CONFIG_NET_ARP_SEND=y
+CONFIG_NET_BROADCAST=y
+CONFIG_NET_ICMP=y
+CONFIG_NET_ICMP_SOCKET=y
+CONFIG_NET_NETLINK=y
+CONFIG_NET_ROUTE=y
+CONFIG_NET_STATISTICS=y
+CONFIG_NET_TCP=y
+CONFIG_NET_TCPBACKLOG=y
+CONFIG_NET_TCP_KEEPALIVE=y
+CONFIG_NET_TCP_WRITE_BUFFERS=y
+CONFIG_NET_UDP=y
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_PREALLOC_TIMERS=4
+CONFIG_RAM_SIZE=393216
+CONFIG_RAM_START=0x20400000
+CONFIG_RAW_BINARY=y
+CONFIG_READLINE_CMD_HISTORY=y
+CONFIG_READLINE_TABCOMPLETION=y
+CONFIG_RR_INTERVAL=200
+CONFIG_SAMV7_EMAC0=y
+CONFIG_SAMV7_EMAC0_PHYSR=30
+CONFIG_SAMV7_EMAC0_PHYSR_100FD=0x6
+CONFIG_SAMV7_EMAC0_PHYSR_100HD=0x2
+CONFIG_SAMV7_EMAC0_PHYSR_10FD=0x5
+CONFIG_SAMV7_EMAC0_PHYSR_10HD=0x1
+CONFIG_SAMV7_EMAC0_PHYSR_ALTCONFIG=y
+CONFIG_SAMV7_EMAC0_PHYSR_ALTMODE=0x7
+CONFIG_SAMV7_EMAC0_RMII=y
+CONFIG_SAMV7_FORMAT_MCUBOOT=y
+CONFIG_SAMV7_GPIOA_IRQ=y
+CONFIG_SAMV7_GPIOB_IRQ=y
+CONFIG_SAMV7_GPIOD_IRQ=y
+CONFIG_SAMV7_GPIO_IRQ=y
+CONFIG_SAMV7_HSMCI0=y
+CONFIG_SAMV7_SYSTEMRESET=y
+CONFIG_SAMV7_TWIHS0=y
+CONFIG_SAMV7_USART1=y
+CONFIG_SAMV7_XDMAC=y
+CONFIG_SCHED_HPWORK=y
+CONFIG_SCHED_WAITPID=y
+CONFIG_SDIO_BLOCKSETUP=y
+CONFIG_START_DAY=10
+CONFIG_START_MONTH=3
+CONFIG_START_YEAR=2014
+CONFIG_SYSTEM_I2CTOOL=y
+CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_PING=y
+CONFIG_USART1_SERIAL_CONSOLE=y