aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rp2040/boot/uf2.h
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2021-06-19 20:05:48 -0400
committerKevin O'Connor <kevin@koconnor.net>2021-07-04 10:11:02 -0400
commitcc0969dd0539c7bcc89652a793d7ccfc0c3b0fcd (patch)
tree29255c13a084015696ed32c25761823b1e1f456f /lib/rp2040/boot/uf2.h
parent1b79ffcad2822a6105a453f78ab6d6af9c6f692a (diff)
downloadkutter-cc0969dd0539c7bcc89652a793d7ccfc0c3b0fcd.tar.gz
kutter-cc0969dd0539c7bcc89652a793d7ccfc0c3b0fcd.tar.xz
kutter-cc0969dd0539c7bcc89652a793d7ccfc0c3b0fcd.zip
lib: Add rp2040 build files
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'lib/rp2040/boot/uf2.h')
-rw-r--r--lib/rp2040/boot/uf2.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/rp2040/boot/uf2.h b/lib/rp2040/boot/uf2.h
new file mode 100644
index 00000000..a040242b
--- /dev/null
+++ b/lib/rp2040/boot/uf2.h
@@ -0,0 +1,46 @@
+/*
+ * 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 boot_uf2
+*
+* Header file for the UF2 format supported by an RP2040 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 0xe48bff56
+
+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