Discussion:
RP400 40-pin connector
(too old to reply)
John Larkin
2024-08-11 18:53:20 UTC
Permalink
I want to use an Raspberry Pi 400 (the keyboard thing) as the
dev/debug system for an RP2040 based product.

https://www.amazon.com/Raspberry-Computer-Keyboard-Layout-Kabel/dp/B08QCQVWH2

It has a 40-pin connector on the back. Various sources say that pins 1
3 and 5 are either GPIO ports 8 9 and 7 or maybe 2 3 and 4.

Sometimes the pins are labeled WPI and BCM. Wot's that?

https://www.amazon.com/Coolwell-Waveshare-Raspberry-Adapter-Expansion/dp/B08RZCR7S8

I can fix most mistakes there in software, just by reassigning port
names. But two pins are critical, the SWDIO and SWCLK debug lines out
to a Pi Pico or to the 2040 chip.

I suspect that on the Pi 400 pin 18 is GPIO5 = SWDIO and pin 22 is
GPIO6 = SWCLK.

Is that right? Does that actually work?

I also note that some people also connect the UART tx/rx between the
Pi400 and a Pico for debugging. Should I do that too? Does it help
software development?

Thanks!
Edward Rawde
2024-08-11 20:22:04 UTC
Permalink
Post by John Larkin
I want to use an Raspberry Pi 400 (the keyboard thing) as the
dev/debug system for an RP2040 based product.
https://www.amazon.com/Raspberry-Computer-Keyboard-Layout-Kabel/dp/B08QCQVWH2
It has a 40-pin connector on the back. Various sources say that pins 1
This connector?
Loading Image...
Post by John Larkin
3 and 5 are either GPIO ports 8 9 and 7 or maybe 2 3 and 4.
Sometimes the pins are labeled WPI and BCM. Wot's that?
https://www.amazon.com/Coolwell-Waveshare-Raspberry-Adapter-Expansion/dp/B08RZCR7S8
If that's just a connector then continuity check it to the above drawing of the connector on the Pi.
Post by John Larkin
I can fix most mistakes there in software, just by reassigning port
names. But two pins are critical, the SWDIO and SWCLK debug lines out
to a Pi Pico or to the 2040 chip.
I suspect that on the Pi 400 pin 18 is GPIO5 = SWDIO and pin 22 is
GPIO6 = SWCLK.
Is that right? Does that actually work?
I also note that some people also connect the UART tx/rx between the
Pi400 and a Pico for debugging. Should I do that too? Does it help
software development?
Thanks!
John Larkin
2024-08-11 20:59:36 UTC
Permalink
On Sun, 11 Aug 2024 16:22:04 -0400, "Edward Rawde"
Post by Edward Rawde
Post by John Larkin
I want to use an Raspberry Pi 400 (the keyboard thing) as the
dev/debug system for an RP2040 based product.
https://www.amazon.com/Raspberry-Computer-Keyboard-Layout-Kabel/dp/B08QCQVWH2
It has a 40-pin connector on the back. Various sources say that pins 1
This connector?
https://www.pi4j.com/1.3/images/pi4j-rpi-400-pinout.png
Yes.
Post by Edward Rawde
Post by John Larkin
3 and 5 are either GPIO ports 8 9 and 7 or maybe 2 3 and 4.
Sometimes the pins are labeled WPI and BCM. Wot's that?
https://www.amazon.com/Coolwell-Waveshare-Raspberry-Adapter-Expansion/dp/B08RZCR7S8
If that's just a connector then continuity check it to the above drawing of the connector on the Pi.
The real question is whether pin 3 is GPIO8 or GPIO2, and which two
pins are the SW debug.

On the Pi4, pin 3 is GPIO2. It seems like the pins are renamed on the
Pi 400, where pin 3 is GPIO8. Why would they do that?
Jan Panteltje
2024-08-12 00:03:52 UTC
Permalink
On a sunny day (Sun, 11 Aug 2024 13:59:36 -0700) it happened John Larkin
Post by John Larkin
On Sun, 11 Aug 2024 16:22:04 -0400, "Edward Rawde"
Post by Edward Rawde
Post by John Larkin
I want to use an Raspberry Pi 400 (the keyboard thing) as the
dev/debug system for an RP2040 based product.
https://www.amazon.com/Raspberry-Computer-Keyboard-Layout-Kabel/dp/B08QCQVWH2
It has a 40-pin connector on the back. Various sources say that pins 1
This connector?
https://www.pi4j.com/1.3/images/pi4j-rpi-400-pinout.png
Yes.
Post by Edward Rawde
Post by John Larkin
3 and 5 are either GPIO ports 8 9 and 7 or maybe 2 3 and 4.
Sometimes the pins are labeled WPI and BCM. Wot's that?
https://www.amazon.com/Coolwell-Waveshare-Raspberry-Adapter-Expansion/dp/B08RZCR7S8
If that's just a connector then continuity check it to the above drawing of the connector on the Pi.
The real question is whether pin 3 is GPIO8 or GPIO2, and which two
pins are the SW debug.
On the Pi4, pin 3 is GPIO2.
GPIO2 and I2C1 sda
Post by John Larkin
It seems like the pins are renamed on the
Pi 400, where pin 3 is GPIO8. Why would they do that?
Yes,
https://www.pi4j.com/1.4/pins/rpi-400.html
But see the warning, also about reconfiguring the serial port for hardware
Have not tried it, no 400 here.

There were also changes between Pi1 and Pi2 IIRC:
https://panteltje.nl/panteltje/newsflex/download.html#freq_pi
encountered that...

Why? The world is changing...
Theo
2024-08-12 16:39:35 UTC
Permalink
Post by John Larkin
On Sun, 11 Aug 2024 16:22:04 -0400, "Edward Rawde"
Post by Edward Rawde
Post by John Larkin
I want to use an Raspberry Pi 400 (the keyboard thing) as the
dev/debug system for an RP2040 based product.
https://www.amazon.com/Raspberry-Computer-Keyboard-Layout-Kabel/dp/B08QCQVWH2
It has a 40-pin connector on the back. Various sources say that pins 1
This connector?
https://www.pi4j.com/1.3/images/pi4j-rpi-400-pinout.png
Yes.
Be aware that WiringPi pin numbers are only useful if you want to use that
library (or similar which use the same mapping). The real BCM pin numbers
are likely more useful.

I normally go by:
https://pinout.xyz/
which gives all the optional features if you click on a pin. It also shows
the differences between boards (eg pin 13 is different on Pi 1 rev 1).

It seems the 400 is identical to the 4, since it's the same SoC in a
different case.
Post by John Larkin
Post by Edward Rawde
Post by John Larkin
3 and 5 are either GPIO ports 8 9 and 7 or maybe 2 3 and 4.
Sometimes the pins are labeled WPI and BCM. Wot's that?
WiringPi pin numbers and Broadcom pin numbers probably.
Post by John Larkin
Post by Edward Rawde
Post by John Larkin
https://www.amazon.com/Coolwell-Waveshare-Raspberry-Adapter-Expansion/dp/B08RZCR7S8
If that's just a connector then continuity check it to the above drawing of the connector on the Pi.
The real question is whether pin 3 is GPIO8 or GPIO2, and which two
pins are the SW debug.
Pin 3:

"GPIO 2 (I2C Data)
Alt0 Alt1 Alt2 Alt3 Alt4 Alt5
I2C1 SDA SMI SA3 DPI VSYNC AVEOUT VSYNC AVEIN VSYNC

Physical/Board pin 3
GPIO/BCM pin 2
Wiring Pi pin 8
GPIO/BCM pin 0 on Rev 1 ( very early ) Pi

SDA (I2C1 Data) is one of the i2c pins on the Pi, learn more about i2c.

SDA includes a fixed, 1.8 kΩ pull-up to 3.3v, which means this pin is not
suitable for use as a general purpose IO where no pull-up resistor is
desired."
https://pinout.xyz/pinout/pin3_gpio2/

Pis 0-4 (inc 400) don't have SWD debug, they have JTAG (pins 13, 15, 16,
18). I think you need something in config.txt to enable ARM-side JTAG.

(the Pi 5 does use SWD, on a separate header).
Post by John Larkin
On the Pi4, pin 3 is GPIO2. It seems like the pins are renamed on the
Pi 400, where pin 3 is GPIO8. Why would they do that?
That's the WiringPi confusion.

(I think in the early Pi 1 days the pin numbering - like other parts of the
hardware design - was quite confused, and WiringPi came up with their
numbers to make sense of it. I think they're mostly just an additional
headache now)

Theo
Jan Panteltje
2024-08-12 00:03:52 UTC
Permalink
On a sunny day (Sun, 11 Aug 2024 11:53:20 -0700) it happened John Larkin
Post by John Larkin
I want to use an Raspberry Pi 400 (the keyboard thing) as the
dev/debug system for an RP2040 based product.
https://www.amazon.com/Raspberry-Computer-Keyboard-Layout-Kabel/dp/B08QCQVWH2
It has a 40-pin connector on the back. Various sources say that pins 1
3 and 5 are either GPIO ports 8 9 and 7 or maybe 2 3 and 4.
Sometimes the pins are labeled WPI and BCM. Wot's that?
https://www.amazon.com/Coolwell-Waveshare-Raspberry-Adapter-Expansion/dp/B08RZCR7S8
Expensive
Just some ideas... things I used with normals Pis :-)
Loading Image...
Loading Image...
Loading Image...
Post by John Larkin
I can fix most mistakes there in software, just by reassigning port
names. But two pins are critical, the SWDIO and SWCLK debug lines out
to a Pi Pico or to the 2040 chip.
I suspect that on the Pi 400 pin 18 is GPIO5 = SWDIO and pin 22 is
GPIO6 = SWCLK.
Is that right? Does that actually work?
I dunno, have no 400 here.
Post by John Larkin
I also note that some people also connect the UART tx/rx between the
Pi400 and a Pico for debugging. Should I do that too? Does it help
software development?
Debugging via RS232 is a good thing.
Lasse Langwadt
2024-08-12 17:07:04 UTC
Permalink
Post by John Larkin
I want to use an Raspberry Pi 400 (the keyboard thing) as the
dev/debug system for an RP2040 based product.
https://www.amazon.com/Raspberry-Computer-Keyboard-Layout-Kabel/dp/B08QCQVWH2
It has a 40-pin connector on the back. Various sources say that pins 1
3 and 5 are either GPIO ports 8 9 and 7 or maybe 2 3 and 4.
Sometimes the pins are labeled WPI and BCM. Wot's that?
https://www.amazon.com/Coolwell-Waveshare-Raspberry-Adapter-Expansion/dp/B08RZCR7S8
I can fix most mistakes there in software, just by reassigning port
names. But two pins are critical, the SWDIO and SWCLK debug lines out
to a Pi Pico or to the 2040 chip.
I suspect that on the Pi 400 pin 18 is GPIO5 = SWDIO and pin 22 is
GPIO6 = SWCLK.
Is that right? Does that actually work?
yes I believe that is correct, looks like the PI400 uses the wiringpi
numbering instead of that actual raspberrypi GPIO numbers
https://pinout.xyz/pinout/wiringpi

anyway afaict the debugger just bitbangs the SWD and can be build to use
any available GPIO
Post by John Larkin
I also note that some people also connect the UART tx/rx between the
Pi400 and a Pico for debugging. Should I do that too? Does it help
software development?
definitely, it's an easy way to control and messages back and forth when
running something that's realtime and can't just be stopped to check
things with a debugger
a***@spenarnc.xs4all.nl
2024-08-15 11:13:57 UTC
Permalink
Post by John Larkin
I want to use an Raspberry Pi 400 (the keyboard thing) as the
dev/debug system for an RP2040 based product.
https://www.amazon.com/Raspberry-Computer-Keyboard-Layout-Kabel/dp/B08QCQVWH2
It has a 40-pin connector on the back. Various sources say that pins 1
3 and 5 are either GPIO ports 8 9 and 7 or maybe 2 3 and 4.
Sometimes the pins are labeled WPI and BCM. Wot's that?
https://www.amazon.com/Coolwell-Waveshare-Raspberry-Adapter-Expansion/dp/B08RZCR7S8
I can fix most mistakes there in software, just by reassigning port
names. But two pins are critical, the SWDIO and SWCLK debug lines out
to a Pi Pico or to the 2040 chip.
I suspect that on the Pi 400 pin 18 is GPIO5 = SWDIO and pin 22 is
GPIO6 = SWCLK.
Is that right? Does that actually work?
I also note that some people also connect the UART tx/rx between the
Pi400 and a Pico for debugging. Should I do that too? Does it help
software development?
Is the schematics from the R Pi 400 not available?
I have the orangepi 800. The schematics are such that I can trace the
connector pins to the soc pins. The RK3399 is fully documented.
Mapping the io I can do "das blinken light" on the 26 pin (rp1
compatible) connector, using ciforth (a Forth developed by me).
Or light the upper case or numlock leds.
Post by John Larkin
Thanks!
--
Don't praise the day before the evening. One swallow doesn't make spring.
You must not say "hey" before you have crossed the bridge. Don't sell the
hide of the bear until you shot it. Better one bird in the hand than ten in
the air. First gain is a cat purring. - the Wise from Antrim -
john larkin
2024-08-15 15:23:59 UTC
Permalink
Post by a***@spenarnc.xs4all.nl
Post by John Larkin
I want to use an Raspberry Pi 400 (the keyboard thing) as the
dev/debug system for an RP2040 based product.
https://www.amazon.com/Raspberry-Computer-Keyboard-Layout-Kabel/dp/B08QCQVWH2
It has a 40-pin connector on the back. Various sources say that pins 1
3 and 5 are either GPIO ports 8 9 and 7 or maybe 2 3 and 4.
Sometimes the pins are labeled WPI and BCM. Wot's that?
https://www.amazon.com/Coolwell-Waveshare-Raspberry-Adapter-Expansion/dp/B08RZCR7S8
I can fix most mistakes there in software, just by reassigning port
names. But two pins are critical, the SWDIO and SWCLK debug lines out
to a Pi Pico or to the 2040 chip.
I suspect that on the Pi 400 pin 18 is GPIO5 = SWDIO and pin 22 is
GPIO6 = SWCLK.
Is that right? Does that actually work?
I also note that some people also connect the UART tx/rx between the
Pi400 and a Pico for debugging. Should I do that too? Does it help
software development?
Is the schematics from the R Pi 400 not available?
Yes, but the port pin nunbering is different from the Pi 4 and 5, so I
was concerned about which pins to connect to a Pico (or a 2040 chip)
for program loading and debugging.

This apparently works

Loading Image...

and one can actually count the pins on the connectors.

One of my guys is hacking some connections and verifying. We're laying
out some PCBs for debugging and production test, and we need to get
the pins right.
Post by a***@spenarnc.xs4all.nl
I have the orangepi 800. The schematics are such that I can trace the
connector pins to the soc pins. The RK3399 is fully documented.
Mapping the io I can do "das blinken light" on the 26 pin (rp1
compatible) connector, using ciforth (a Forth developed by me).
Or light the upper case or numlock leds.
Post by John Larkin
Thanks!
Theo
2024-08-15 16:46:40 UTC
Permalink
Post by john larkin
Yes, but the port pin nunbering is different from the Pi 4 and 5, so I
was concerned about which pins to connect to a Pico (or a 2040 chip)
for program loading and debugging.
This apparently works
https://www.dropbox.com/scl/fi/sd8mkqz3rw55fcevjouvi/OKdo_Pi400_debug_Pico.jpg?rlkey=kb5xjo75n5e5k3ncy4qs2caur&raw=1
and one can actually count the pins on the connectors.
One of my guys is hacking some connections and verifying. We're laying
out some PCBs for debugging and production test, and we need to get
the pins right.
Ah, that's SWD *output*. None of the Pis have specific hardware to act as
an SWD debugger, so it's just bitbanged GPIOs. For that it's just down to
whatever pins your software has decided to use. You can presumably
reconfigure it to use any GPIO pins.

(5 and Pico have dedicated SWD input connectors, but that's to allow *them*
to be debugged)

Theo

Loading...