diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2024-10-24 19:41:55 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2024-11-13 14:25:59 -0500 |
commit | c75eb53c0c6d81631849cfc49eba9b2efa93ddfb (patch) | |
tree | 27988b27e73ebd62d3e3325886a11e67c131c1de /lib/pico-sdk/boot/uf2.h | |
parent | 9f328cab9536d73df697b325fab13dd7eb550522 (diff) | |
download | kutter-c75eb53c0c6d81631849cfc49eba9b2efa93ddfb.tar.gz kutter-c75eb53c0c6d81631849cfc49eba9b2efa93ddfb.tar.xz kutter-c75eb53c0c6d81631849cfc49eba9b2efa93ddfb.zip |
lib: Update lib/rp2040 to v2.0.0 SDK release
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'lib/pico-sdk/boot/uf2.h')
-rw-r--r-- | lib/pico-sdk/boot/uf2.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/pico-sdk/boot/uf2.h b/lib/pico-sdk/boot/uf2.h new file mode 100644 index 00000000..271540a2 --- /dev/null +++ b/lib/pico-sdk/boot/uf2.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _BOOT_UF2_H +#define _BOOT_UF2_H + +#include <stdint.h> +#include <assert.h> + +/** \file uf2.h +* \defgroup boot_uf2_headers boot_uf2_headers +* +* \brief Header file for the UF2 format supported by a RP2xxx chip in BOOTSEL mode +*/ + +#define UF2_MAGIC_START0 0x0A324655u +#define UF2_MAGIC_START1 0x9E5D5157u +#define UF2_MAGIC_END 0x0AB16F30u + +#define UF2_FLAG_NOT_MAIN_FLASH 0x00000001u +#define UF2_FLAG_FILE_CONTAINER 0x00001000u +#define UF2_FLAG_FAMILY_ID_PRESENT 0x00002000u +#define UF2_FLAG_MD5_PRESENT 0x00004000u + +#define RP2040_FAMILY_ID 0xe48bff56u +#define ABSOLUTE_FAMILY_ID 0xe48bff57u +#define DATA_FAMILY_ID 0xe48bff58u +#define RP2350_ARM_S_FAMILY_ID 0xe48bff59u +#define RP2350_RISCV_FAMILY_ID 0xe48bff5au +#define RP2350_ARM_NS_FAMILY_ID 0xe48bff5bu +#define FAMILY_ID_MAX 0xe48bff5bu + + +struct uf2_block { + // 32 byte header + uint32_t magic_start0; + uint32_t magic_start1; + uint32_t flags; + uint32_t target_addr; + uint32_t payload_size; + uint32_t block_no; + uint32_t num_blocks; + uint32_t file_size; // or familyID; + uint8_t data[476]; + uint32_t magic_end; +}; + +static_assert(sizeof(struct uf2_block) == 512, "uf2_block not sector sized"); + +#endif |