You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: universal/README.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,8 +11,8 @@ for the purposes of these examples:
11
11
allowing RP2040 and RP2350 (Arm & RISC-V) to run from identical flash contents.
12
12
- A **Universal UF2** is multiple individual `.uf2` files with different family IDs
13
13
concatenated together to create a single `.uf2` file. When dragged & dropped onto a device,
14
-
only the file with a family ID corresponding to that device will be loaded onto it, and the
15
-
rest of the files will be ignored.
14
+
only the portion of the file with a family ID corresponding to that device will be processed, and the
15
+
rest of the file will be ignored.
16
16
17
17
A **Universal Binary** can be packaged into a UF2 file for loading onto a device. However,
18
18
as there isn't a common family ID between RP2040 and RP2350, you would have to package it into a **Universal UF2** with two copies (using `rp2040` and `absolute` family IDs), thus creating a **Universal UF2** of a **Universal Binary**.
@@ -29,7 +29,7 @@ Universal binaries must be recognised by both the RP2040 and RP2350 bootroms. Th
29
29
- In addition to the RP2350 `IMAGE_DEF` item, this embedded block contains a
30
30
`ROLLING_WINDOW_DELTA` item to translate this binary to the start of flash for execution
31
31
- RP2350 RISC-V binary containing an embedded block
32
-
-Same as the Arm one
32
+
-Ditto
33
33
34
34
All of the embedded blocks are linked into one big block loop.
35
35
@@ -38,18 +38,18 @@ These are then booted by the respective bootroms:
38
38
RP2040 has no support for embedded blocks.
39
39
-**RP2350** - sees the block loop and parses it to find the correct embedded block to boot
40
40
from (Arm vs RISC-V). It then translates the flash address according to the
41
-
`ROLLING_WINDOW_DELTA` so that the binary containing that embedded block is at the start of the
41
+
`ROLLING_WINDOW_DELTA` so that the binary containing that embedded block appears at the start of the
42
42
flash address space, and executes from there.
43
43
44
-
For no_flash binaries the RP2040 boot2 is omitted as the bootrom just executes from the start
44
+
For no_flash binaries the RP2040 boot2 is omitted as the RP2040 bootrom just executes from the start
45
45
of SRAM, and instead of `ROLLING_WINDOW_DELTA` items the RP2350 binaries use `LOAD_MAP` items,
46
46
to copy the code in SRAM to the correct location for execution rather than using address
47
47
translation.
48
48
49
49
## How you should use them
50
50
51
-
For most use cases, **Universal UF2s** are the best option to use. They will only load into
52
-
flash the code that runs on that device. The [blink_universal](blink_universal) example uses a
51
+
For most use cases, **Universal UF2s** are the best option to use. They will only load the
52
+
code that runs on that device into flash. The [blink_universal](blink_universal) example uses a
53
53
Universal UF2 for that reason, as the Wi-Fi firmware is quite large. **Universal Binaries**
54
54
are only currently useful when the commonality of having a single `.bin` file for programming
55
55
outweighs the disadvantage of the extra flash usage.
0 commit comments