7#ifndef _BOOT_PICOBOOT_H
8#define _BOOT_PICOBOOT_H
14#ifndef NO_PICO_PLATFORM
24#include "picoboot_constants.h"
26#define PICOBOOT_MAGIC 0x431fd10bu
33#define PICOBOOT_IF_RESET 0x41
36#define PICOBOOT_IF_CMD_STATUS 0x42
48 PC_EXCLUSIVE_ACCESS = 0x1,
54 PC_ENTER_CMD_XIP = 0x7,
56 PC_VECTORIZE_FLASH = 0x9,
67 PICOBOOT_UNKNOWN_CMD = 1,
68 PICOBOOT_INVALID_CMD_LENGTH = 2,
69 PICOBOOT_INVALID_TRANSFER_LENGTH = 3,
70 PICOBOOT_INVALID_ADDRESS = 4,
71 PICOBOOT_BAD_ALIGNMENT = 5,
72 PICOBOOT_INTERLEAVED_WRITE = 6,
73 PICOBOOT_REBOOTING = 7,
74 PICOBOOT_UNKNOWN_ERROR = 8,
75 PICOBOOT_INVALID_STATE = 9,
76 PICOBOOT_NOT_PERMITTED = 10,
77 PICOBOOT_INVALID_ARG = 11,
78 PICOBOOT_BUFFER_TOO_SMALL = 12,
79 PICOBOOT_PRECONDITION_NOT_MET = 13,
80 PICOBOOT_MODIFIED_DATA = 14,
81 PICOBOOT_INVALID_DATA = 15,
82 PICOBOOT_NOT_FOUND = 16,
83 PICOBOOT_UNSUPPORTED_MODIFICATION = 17,
115 uint32_t workarea_base;
116 uint32_t workarea_size;
119enum picoboot_exclusive_type {
144struct __packed __aligned(4) picoboot_cmd {
150 uint32_t dTransferLength;
163static_assert(32 ==
sizeof(
struct picoboot_cmd), "picoboot_cmd must be 32 bytes big");
165struct __packed __aligned(4) picoboot_cmd_status {
167 uint32_t dStatusCode;
173static_assert(16 ==
sizeof(
struct picoboot_cmd_status), "picoboot_cmd_status must be 16 bytes big");
Definition: bootrom_constants.h:273
Definition: picoboot.h:102
Definition: picoboot.h:125
Definition: picoboot.h:112
Definition: picoboot.h:136
Definition: picoboot.h:129
Definition: picoboot.h:107
Definition: picoboot.h:94
Definition: picoboot.h:86