Skip to content

Commit 2cc405b

Browse files
committed
rp2350 coprocessor instructions
1 parent 6655a06 commit 2cc405b

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

xtightlycoupledio.adoc

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
= XtightlyCoupledIO
33
Jan Oleksiewicz <jnk0le@hotmail.com>
4-
:appversion: 3.2.53
4+
:appversion: 3.2.54
55
:toc:
66
:toclevels: 4
77
:sectnums:
@@ -19,6 +19,7 @@ This document is released under a Creative Commons Attribution 4.0 International
1919
[cols="1,5",options=header]
2020
|====================================================================================
2121
| Version | Change
22+
| v3.2.54 | rp2350 coprocessor instructions
2223
| v3.2.53 | more improvements, IO by csr on esp32, extra avr8 note
2324
| v3.2.52 | some text improvements
2425
| v3.2.51 | add note about limitations imposed by compiler in in rv32e
@@ -145,7 +146,7 @@ It is also worth to mention that avr8 architecture has not been licensed to 3rd
145146
like the 8051 did. Even though it could offer better PPA <<doc1292>> and development ease than average "1T" 8051.
146147
Today we have only a few chinese clones of atmega328p due to expired patents.
147148

148-
NOTE: avr8 archtecture is still architecturally inefficient as it's 8 bit architecture
149+
NOTE: avr8 archtecture is still architecturally inefficient as it's 8 bit architecture,
149150
often used with 16 bit variables, due to pointers and the `int` type being 16bit, effectively
150151
doubling the number of instructions. Even when pointers are 8bit (e.g. attiny2313), compilers
151152
still use 16bit ones. Allocations on stack pointer are also highly inefficent
@@ -180,10 +181,10 @@ The CLA can also convert to float directly from memory (including peripherals)
180181

181182
Uses exactly the same code of memory mapped IO but the loads and stores execute in 1 cycle instead of 2 cycles
182183

183-
==== PIO (in RP2040)
184+
==== PIO (in RP2040/RP2350)
184185

185186
Reffered to as a programmable state machine, able to emulate serial and parallel
186-
peripherals over GPIO. Very limited instruction set.
187+
peripherals over GPIO. Very limited instruction set and program space.
187188

188189
Assumes cycle accurate, single cycle micro architecture. +
189190
Has an optional "side-set" operation and delay which stall execution of any following instruction.
@@ -241,6 +242,15 @@ Later versions (e.g. 56800) <<DSP56800RM>> extended the single bit into a bitmas
241242
where all of selected bits must be set or cleared to cause the condition. +
242243
Masks in branching instructions are limited to 8 bits, targeting top or bottom byte.
243244

245+
==== RP2350 GPIO coprocessor instructions
246+
247+
cortex-m33 coprocessor instructions targetting GPIO. <<rp2350>>
248+
249+
offers:
250+
- the read/set as well as atomic and/or/xor operations
251+
- instructions accessing only a single bit (bit position must be passed through register)
252+
- double wide access (requires at least 3r2w regfile, already available in m33)
253+
244254
=== alternative approaches
245255

246256
==== map to upper GPR
@@ -278,6 +288,8 @@ Must be used explicitly in source code
278288
==== special purpose write only registers
279289

280290
Special kind of write only registers e.g BSRR/IFCR found in STM32 and clones. +
291+
As well as an atomic and/or/xor operation in rp2040/rp2350 <<rp2040>>, <<rp2350>>.
292+
281293
Still require loading of peripheral base address. Requires also generating
282294
preformatted (shifted) constants even if only single bit is written.
283295

@@ -4046,3 +4058,5 @@ NOTE: FMA4 instructions allow to get rid of 2 unnecesary moves (as per TDF2 impl
40464058
* [[[an5305, 21]]] https://www.st.com/resource/en/application_note/an5305-digital-filter-implementation-with-the-fmac-using-stm32cubeg4-mcu-package-stmicroelectronics.pdf
40474059
* [[[h2pdspic, 22]]] https://www.how2power.com/newsletters/1603/articles/H2PToday1603_design_Microchip.pdf?NOREDIR=1
40484060
* [[[esp32c6riscv, 23]]] https://documentation.espressif.com/esp32-c6_technical_reference_manual_en.pdf
4061+
* [[[rp2040, 24]]] https://pip-assets.raspberrypi.com/categories/814-rp2040/documents/RP-008371-DS-1-rp2040-datasheet.pdf?disposition=inline
4062+
* [[[rp2350, 25]]] https://pip-assets.raspberrypi.com/categories/1214-rp2350/documents/RP-008373-DS-2-rp2350-datasheet.pdf?disposition=inline

0 commit comments

Comments
 (0)