defunct: playing around with bootloaders
This commit is contained in:
42
software/apps/snippets/bootloader/src/main.c
Normal file
42
software/apps/snippets/bootloader/src/main.c
Normal file
@@ -0,0 +1,42 @@
|
||||
#include <zephyr/kernel.h>
|
||||
#include <app_version.h>
|
||||
#include <zephyr/shell/shell.h>
|
||||
#include <zephyr/sys/reboot.h>
|
||||
#include <zephyr/dfu/mcuboot.h>
|
||||
#include <zephyr/retention/bootmode.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/* Shell command handler for "reset" */
|
||||
static int cmd_reset(const struct shell *sh, size_t argc, char **argv)
|
||||
{
|
||||
shell_print(sh, "Rebooting system...");
|
||||
k_sleep(K_MSEC(100)); // Optional delay for user to see the message
|
||||
sys_reboot(SYS_REBOOT_WARM);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cmd_download(const struct shell *sh, size_t argc, char **argv)
|
||||
{
|
||||
int rc;
|
||||
|
||||
/* Set boot mode to serial recovery */
|
||||
rc = bootmode_set(BOOT_MODE_TYPE_BOOTLOADER);
|
||||
if (rc < 0) {
|
||||
shell_error(sh, "Failed to set boot mode: %d", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
shell_print(sh, "Boot mode set to recovery. Rebooting to bootloader...");
|
||||
k_sleep(K_MSEC(100));
|
||||
sys_reboot(SYS_REBOOT_WARM);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Register the shell command */
|
||||
SHELL_CMD_REGISTER(reset, NULL, "Reboot the system", cmd_reset);
|
||||
SHELL_CMD_REGISTER(download, NULL, "Download firmware", cmd_download);
|
||||
|
||||
int main(void){
|
||||
printk("Bootloader test version %s\n", APP_VERSION_EXTENDED_STRING);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user