11
22= XtightlyCoupledIO
33Jan 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
145146like the 8051 did. Even though it could offer better PPA <<doc1292>> and development ease than average "1T" 8051.
146147Today 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,
149150often used with 16 bit variables, due to pointers and the `int` type being 16bit, effectively
150151doubling the number of instructions. Even when pointers are 8bit (e.g. attiny2313), compilers
151152still 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
181182Uses 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
185186Reffered 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
188189Assumes cycle accurate, single cycle micro architecture. +
189190Has 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
241242where all of selected bits must be set or cleared to cause the condition. +
242243Masks 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
280290Special 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+
281293Still require loading of peripheral base address. Requires also generating
282294preformatted (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