Raspberry Pi 1 model B rev. 2.0

      V posledních letech se roztrhl pytel s různými miniaturními jednodeskovými počítači v celé výkonové škále - od lowendového Arduina s 8b AVRky a 32b embedded ARMy až po nabušený Odroid. Za cenu kolem 1000 Kč vám nabídnou výkon běžného PC před cca 10 lety na malé destičce velikosti kreditní karty s příkonem pár wattů. Ty výkonnější jsou většinou osazeny aplikačními SoC procesory ARM Cortex-A7 / A9, dnes běžně s více jádry a 64b architekturou. Počet nových modelů a jejich výkon neustále roste, ceny naopak klesají. Zde bych upozornil, že cena není až tak důležitá, mnohem důležitější je podpora výrobce a mohutnost uživatelské komunity. Sebelepší HW je totiž na nic, když na něm sotva běží neodladěný FW/OS, výrobce to neřeší, nejsou k dispozici zdrojáky ani dokumentace a slabá komunita s tím nedokáže pohnout... Zde je stručný přehled základních parametrů nejrozšířenějších jednodeskových počítačů (průběžně aktualizuju):

model CPU cores GPU RAM/Flash LAN USB SATA video audio ref
Raspberry Pi Pico RP2040, 133MHz 2 - 264kB/2MB - 1 OTG - - - 1, 2
Raspberry Pi Zero BCM2835, 1GHz 1 VideoCore IV 512MB/µSD - 1 OTG - HDMI HDMI 1
Raspberry Pi A BCM2835, 700MHz 1 VideoCore IV 256MB/SD - 1 OTG - HDMI, CSI/DSI, analog HDMI, analog 1
Raspberry Pi A+ BCM2835, 700MHz 1 VideoCore IV 256/512MB/µSD - 1 OTG - HDMI, CSI/DSI, analog HDMI, analog 1
Raspberry Pi B BCM2835, 700MHz 1 VideoCore IV 256/512MB/SD 100Mbit 2 - HDMI, CSI/DSI, analog HDMI, analog 1
Raspberry Pi B+ BCM2835, 700MHz 1 VideoCore IV 512MB/µSD 100Mbit 4 - HDMI, CSI/DSI, analog HDMI, analog 1
Raspberry Pi 2 B BCM2836, 900MHz 4 VideoCore IV 1GB/µSD 100Mbit 4 - HDMI, CSI/DSI, analog HDMI, analog 1, 2
Raspberry Pi 3 BCM2837 64b, 1,2GHz 4 VideoCore IV 1GB/µSD 100Mbit + WiFi + BT 4.1 4 - HDMI, CSI/DSI, analog HDMI, analog 1, 2, 3
Raspberry Pi 3 B+ BCM2837B0 64b, 1,4GHz 4 VideoCore IV 1GB/µSD 1000Mbit + WiFi + BT 4.2 4 - HDMI, CSI/DSI, analog HDMI, analog 1
Raspberry Pi 4 B BCM2711B0 64b, 1,8GHz 4 VideoCore VI 1-8GB/µSD 1000Mbit + WiFi + BT 5.0 2x 3.0 + 2 - 2x µHDMI 2.0, DPI/CSI/DSI, analog HDMI, analog 1, 2
Raspberry Pi 5 BCM2712 64b, 2,4GHz 4 VideoCore VII 4-8GB/µSD 1000Mbit + WiFi + BT 5.0 2x 3.0 + 2 - 2x µHDMI 2.0, 2*MIPI/PCIe 2.0 x1 HDMI 1
Banana Pi M1 Allwinner A20, 1GHz 2 Mali-400MP2 1GB/SD 1000Mbit 2 + 1 OTG 1 HDMI, LVDS, CSI, analog HDMI, analog, onboard mic. 1
Banana Pi M1+ Allwinner A20, 1GHz 2 Mali-400MP2 1GB/µSD 1000Mbit + WiFi 2 + 1 OTG 1 HDMI, LVDS, CSI, analog HDMI, analog, onboard mic. 1
Banana Pi M2 Allwinner A31S, 1,2GHz 4 PowerVR SGX544MP2 1GB/µSD 1000Mbit + WiFi 4 - HDMI, LVDS, RGB, CSI HDMI, analog, onboard mic. 1
Banana Pi M2+ Allwinner H3, 1GHz 4 Mali-400MP2 1GB/µSD, 8GB eMMC 1000Mbit + WiFi + BT 4.0 2 + 1 OTG - HDMI, CSI HDMI 1
Banana Pi M3 Allwinner A83T, 1,8GHz 8 PowerVR SGX544MP1 2GB/µSD, 8GB eMMC 1000Mbit + WiFi + BT 4.0 2 + 1 OTG 1 HDMI, MIPI/DSI, CSI HDMI, analog, onboard mic. 1, 2, 3
Banana Pi M64 Allwinner A53 64b, 1,2GHz 4 Mali-400MP2 2GB/µSD, 8GB eMMC 1000Mbit + WiFi + BT 4.0 2 + 1 OTG - HDMI, MIPI/DSI, CSI HDMI, analog, onboard mic. 1
Orange Pi One Allwinner H3, 1,2GHz 4 Mali-400MP2 512MB/µSD 100Mbit 1 + 1 OTG - HDMI, CSI HDMI 1, 2
Orange Pi One Lite Allwinner H3, 1,2GHz 4 Mali-400MP2 512MB/µSD WiFi 2 + 1 OTG - HDMI, CSI HDMI, onboard mic. 1
Orange Pi+ Allwinner H3, 1,6GHz 4 Mali-400MP2 1GB/µSD 1000Mbit + WiFi 4 + 1 OTG 1 HDMI, CSI, analog HDMI, analog, onboard mic. 1, 2
Orange Pi PC Allwinner H3, 1,6GHz 4 Mali-400MP2 1GB/µSD 100Mbit 3 + 1 OTG - HDMI, CSI, analog HDMI, analog, onboard mic. 1
Orange Pi PC+ Allwinner H3, 1,3GHz 4 Mali-400MP2 1GB/µSD, 8GB eMMC 100Mbit + WiFi 3 + 1 OTG - HDMI, CSI, analog HDMI, analog, onboard mic.  
Orange Pi mini 2 Allwinner H3, 1,6GHz 4 Mali-400MP2 1GB/µSD 100Mbit 4 + 1 OTG - HDMI, CSI, analog HDMI, analog, onboard mic. 1
Orange Pi 2 Allwinner H3, 1,6GHz 4 Mali-400MP2 1GB/µSD 100Mbit + WiFi 4 + 1 OTG - HDMI, CSI, analog HDMI, analog, onboard mic. 1, 2
Orange Pi+ 2 Allwinner H3, 1,6GHz 4 Mali-400MP2 2GB/µSD, 16GB eMMC 1000Mbit + WiFi 4 + 1 OTG 1 HDMI, CSI, analog HDMI, analog, onboard mic. 1
Orange Pi PC 2 Allwinner H5 64b, 1,6GHz 4 Mali-450MP4 (4k) 1GB/µSD, 2MB SPI 1000Mbit 3 + 1 OTG - HDMI 1.4, CSI HDMI, analog, onboard mic. 1
Orange Pi Lite 2 Allwinner H6 64b, 1,8GHz 4 Mali T-722 (4k) 1GB/µSD WiFi + BT 4.1 1x 3.0 + 1 - HDMI 2.0a, CSI HDMI, onboard mic. 1
PINE A64 Allwinner A53 64b, 1,2GHz 4 Mali-400MP2 512MB/µSD 100Mbit 2 - HDMI, CSI, DSI HDMI, analog 1
PINE A64+ Allwinner A53 64b, 1,2GHz 4 Mali-400MP2 1GB/µSD 1000Mbit 2 - HDMI, CSI, DSI HDMI, analog 1
PINE H64 Allwinner H6 64b, 1,8GHz 4 Mali T-722 (4k) 1-4GB/µSD, eMMC5.0 1000Mbit, mini PCIe 1x 3.0 + 2 - HDMI 2.0a, analog HDMI, analog 1
ODROID-C0 Amlogic S805, 1,5GHz 4 Mali-450MP2 1GB/µSD, eMMC4.5 - 2 neos. - HDMI HDMI, I2S 1
ODROID-C1+ Amlogic S805, 1,5GHz 4 Mali-450MP2 1GB/µSD, eMMC4.5 1000Mbit 4 + 1 OTG - HDMI HDMI, I2S 1
ODROID-C2 Amlogic S905 64b, 2GHz 4 Mali-450MP3 2GB/µSD, eMMC5.0 1000Mbit 4 + 1 OTG - HDMI 2.0 HDMI 2.0, I2S 1
ODROID-XU4 Samsung Exynos5422, 2GHz 4+4 Mali-T628MP6 2GB/µSD, eMMC5.0 1000Mbit 2x 3.0 + 1 - HDMI 1.4a HDMI 1.4a, I2S 1, 2
CHIP Allwinner R8, 1GHz 1 Mali-400 512MB/4GB WiFi + BT 4.0 1 + 1 OTG - analog analog 1, 2, 3, 4
Omega2 MT7688K (MIPS), 580MHz 1 - 64MB/16MB WiFi 1 - - - 1, 2, 3
intel Edison Atom Z34XX x86, 500MHz 2 - 1GB/4GB eMMC WiFi + BT 4.0 1 + 1 OTG - - - 1, 2
intel Galileo Quark SoC X1000 x86, 400MHz 1 - 256MB/8MB, µSD 100Mbit 1 + 1 cli - ext. PCIe 2.0 - 1
86Duino Vortex86EX, 300MHz 1 - 128MB/8MB, µSD ext. 100Mbit 1 + 1 cli 1 ext. PCIe 1.0 ext. HD Audio 1, 2

      25.10.2012 Různé vývojové destičky byly k dispozici i dříve, ale k masovému rozšíření došlo až po vydání prvního modelu Raspberry Pi 1 začátkem roku 2012. Vizí Raspberry Pi Foundation bylo vytvořit a dodávat malý, levný počítač pro výukové účely do škol. Eben Upton (jeden ze spoluzakladatelů) v té době pracoval ve společnosti Broadcom a podařilo se mu zajistit dodávku SoC BCM2835. Vývoj trval několik let a v době vydání už procesor nepatřil k nejvýkonnějším. Přesto však první několikatisícové série vyráběné v UK, prodávané za příznivých 25 $ (model A), resp. 35 $ (model B), zmizely z prodeje takřka okamžitě a do roku 2015 se jich prodalo už 5 miliónů kusů. Díky této rozšířenosti má Raspberry Pi silnou podporu OpenSource / OpenHW komunity (různé distribuce OS, knihovny a zveřejněné SW / HW projekty) a také řada výrobců začala nabízet pro Pi celou řadu produktů, od krabiček po různé periferie.
      V práci používáme Raspberry Pi všude tam, kde je potřeba pro nějakou specifickou úlohu rychle nasadit komplexnější systém jak jednočipáky, ale klasické PC je pro to zbytečně velké, žravé a drahé. Např. pro různé HW testery do výroby nebo dataloggery s přenosem dat po síti. I já jsem si pořídil jednu malinu na hraní. Počkal jsem si na HW revizi 2.0 s 512 MB RAM (starší revize měly jen 256  MR RAM). Dále se nebudu moc ze široka rozepisovat, neboť by to bylo nošení dříví do lesa. Spíše si zde budu zapisovat osobní poznámky k instalaci a konfiguraci, abych je měl přehledně k dispozici. Když to pomůže i někomu dalšímu, tím lépe. S dotazy se lze obrátit na mezinárodní fórum nebo na české fórum.

Raspberry Pi 1 model B top Raspberry Pi 1 model B bottom

Schéma zapojení a přehled parametrů:

SoC: Broadcom BCM2835
CPU jádro: ARM1176JZF-S, 1 jádro, 700 MHz
GPU: VideoCore IV, 250 MHz, OpenGL ES 2.0, HW kodeky MPEG-2, VC-1 (s licencí),
H264/MPEG-4 AVC (1080p30)
Paměť: 512 MB DDR3 SDRAM (sdílená s GPU) Samsung K4P4G324EB
slot na SD/MMC/SDIO kartu
Síťovka: SMSC LAN9514-JZX 10/100 Mbit Ethernet na vnitřním USB portu, RJ-45
Audio: analogový stereo výstup na 3,5mm jack, digitální přes HDMI
Porty: 2 x USB 2.0 (S7) + 1 x napájecí microUSB (S1)
1 x RJ45 pro LAN (P4)
1 x HDMI 1.3, max. 1920 x 1200 @60 Hz (S3)
1 x RCA kompozitní analogový video-výstup (S4)
1 x 15-pinový DSI digitální video-výstup (sériový, 2-lane) na LCD (S2)
1 x 15-pinový MIPI digitální vstup pro kameru (S5)
1 x 3,5mm analogový audio-výstup (S6)
2x13-pinový GPIO header s UART, I2C, SPI, I2S, 5 V, 3,3 V... (P1)
2x4-pinový neosazený GPIO header (P5)
Příkon: 3,5 W (700 mA)
Rozměry: 85,6 x 56,5 mm
Hmotnost: 45 g
Vydání: v roce 2012
Cena: 35 $

Operační systémy a instalace

      Každá distribuce je zaměřená trochu na jiný účel a jinou skupinu uživatelů, takže podle toho se liší i její SW vybavení a paměťová náročnost. Kdyby někdo toužil po Windows, jsou nově k dispozici i Windows 10 IoT Core. Jelikož mám na PC nainstalovaný Debian Linux a mám s ním pár zkušeností, tak jsem si nainstaloval Raspbian (Debian-Jessie) lite. Pro zkopírování image na SD kartu lze použít např. WinHex nebo v Linuxu klasicky příkaz dd. Image SD karty je připravený pro jednu velikost SD karty, proto nezapomeň při úvodním nastavení expandovat souborový systém na plnou kapacitu konkrétně použité SD karty.

Základní nastavení

Zapnutí DHCP

Nastavení dynamické DNS služby

      Pokud máte k dispozici veřejnou IP adresu, avšak nikoliv pevnou (např. u ISP UPC) a chcete se na malinu snadno připojovat zvenku, je dobré si zařídit takovouto službu, která bude na DNS serveru automaticky aktualizovat vaši IP adresu a vy se budete připojovat na vaši registrovanou doménu.

Instalace a nastavení OpenVPN serveru

      Už dříve jsem si říkal, že náhodné připojování přes různé pochybné Wi-Finy ve městě či v zahraničí a přihlašování se skrz ně na své účty není zrovna nejbezpečnější. Komunikaci si může odposlechnout kde kdo - majitel Wi-Fi hotspotu (nebo ten, kdo ho hacknul), jeho ISP, či nějaký čmuchal sedící poblíž. Někteří vtipálci se dokonce baví tím, že spustí na místě, kde se vyskytuje hodně lidí, vlastní free Wi-Fi hotspot právě za účelem sběru dat. Zajímavý je též popis, jak pomocí VPN zachytávat a dešifrovat HTTPS komunikaci. Napadlo mě tedy zkusit si rozběhnout vlastní VPNku a malina se k tomu se svou malou spotřebou docela hodí. Android standardně podporuje VPN protokoly PPTP (už není bezpečný) a L2TP. Já jsem zvolil OpenVPN, pro níž je třeba na Androidu nainstalovat klientskou aplikaci. Vycházel jsem z těchto tutoriálů: Building A Raspberry Pi VPN pt.1, 2 a Set up a Hardened OpenVPN Server on Debian 8 pt.1, 2 3 a aplikoval je na Raspbian-Jessie. Podobný postup by šel použít i na chytřejší routery s Linuxem.

Instalace a nastavení klienta OpenVPN Connect pro Android

      Nejprve si vytvoříme OpenVPN profil v unifikovaném formátu - jediný, snadno přenositelný soubor, který obsahuje všechny potřebné certifikáty a klíče (soubory: ca.crt, clientname.crt, clientname.3des.key a ta.key, které jsme si vytvořili v postupu výše).
OpenVPN Connect

Elektronický mikroskop s Raspberry Pi

      3.1.2022 Zajímavou aplikací Raspberry Pi je také třeba poměrně levný elektronický mikroskop pro jemnou elektroniku či mechaniku s realtime výstupem na monitor přes HDMI. Stačí malinu doplnit o kvalitní modul 12MP kamery s C-mountem za 1499 Kč a mikroskopovým objektivem s 300x zvětšením za 1999 Kč. Pracovní vzdálenost objektivu nad pozorovaným předmětem je cca 10 - 15 cm a proti levným plastovým USB čumítkům má mnohem menší latence přenášeného obrazu. Takto s ním uživatel zxcygnus na OldCompu vyfotil čip staré EPROM Tesla 2716: downscale 1600 x 1199 a výřez 1:1. Za ty peníze bych řekl, že je to docela použitelný výsledek.

Raspberry Pi Pico

      22.1.2022 Loni vydala organizace Raspberry Pi Foundation novou malou levnou destičku Raspberry Pi Pico, která se velmi podobá různým Arduino / BluePill destičkám s STM32, srovnání zde. Je osazena novým MCU RP2040 (navrženým přímo organizací) s 2 jádry ARM Cortex-M0+ na 133 MHz, 264 kB SRAM, 2x UART, 2x SPI, 2x I2C, 16x PWM, 4x 12b ADC 0,5 MS/s, DMA. Zajímavé jsou programovatelné jednotky PIO bloků (nezávisle běžící stavová mašina - max. 32 instrukcí v ASM). Destička dále obsahuje externí 2MB QuadSPI FlashROM (na čipu je pouze malá ROM s USB bootloaderem), krystalový oscilátor, USB konektor (podporuje USB 1.1 device i host) a 40 pinů ve tvaru pouzdra obvodu DIL. Napájecí napětí je 1,8 – 5,5 V. GPIO nejsou 5 V tolerantní, max. 3,3 V a dají proud kolem 12 mA, max. jen 50 mA na všechny GPIO. U nás se dá Pico koupit za 109 Kč (v Praze ho má i GM Electronic za 149 Kč), či ještě menší destička s více GPIO, případně i samotný MCU RP2040 za pouhých 29 Kč (a v dnešní době nedostatku čipů jsou kupodivu skladem).
      Dozvěděl jsem se o něm z vlákna na OldCompu, kde si s ním začal hrát Panda (samozřejmě že né v Pythónu, ale pěkně low-level) a naprogramoval pěknou OpenSource C-čkovou grafickou knihovnu PicoVGA, resp. zjednodušené verze Pico16VGA a PicoQVGA, s kterou lze s pomocí pár odporů zobrazovat grafiku na běžném VGA monitoru nebo LCD s paralelním RGB interfacem. Zde je podobný projekt pro generování obrazu na kompozitní výstup s jednoduchým odporovým R-2R DACem a experimentální projekt digitálního výstupu PicoDVI se silně přetaktovaným MCU. Spolehlivě prý běží cca do 250 MHz (jako první začne chybovat SPI FlashROM, ale zjistilo se, jak zvýšit děličku SPI hodin pro flešku a pak se dá dostat v pohodě přes 300 MHz), utilita pro nastavení PLL je zde. Panda také připravil minimalistické RaspPicoSDK včetně popisu pro začátečníky, které se obejde bez dalšího bloatware a vystačí si jen s ARM-GCC (použité binárky neběží na Windows XP, ale dají se nahradit těmito ze SourceForge). Věnoval se též assembleru a měření doby zpracování instrukcí.

      28.1.2022 mi z RPiShopu dorazily 2 Pico destičky a 1 samostatný čip RP2040. Dále jsem se dozvěděl o další větší OpenHW destičce VGA, SD Card & Audio Demo board for Raspberry Pi Pico aka Pimoroni Pico VGA Demo Base. Ta obsahuje VGA konektor s odporovým DACem RGB555, audiokodek PCM5101 s výstupem na stereo jack, slot na microSD kartu, microUSB host konektor, 3 tlačítka a ladicí pin header. PCB Layout a schéma v KiCADu je zde a zdrojáky demo programů jsou na GitHubu. Za jednu neosazenou destičku děkuju vanthomasovi z OldComp fóra. Chtěl bych na ní zkusit rozjet Pandovu knihovnu PicoVGA, která používá méně barevný výstup RGB332 mapovaný na jiné GPIO a také sloučený signál SYNC místo HSYNC a VSYNC. Snad to půjde přizpůsobit úpravou souboru vga_config.h. Nechal jsem si také vyrobit u JLCPCB 5 destiček PicoDVI.

      5.2.2022 Od Pandy jsem se dozvěděl, že výstupy pro RGB DAC na výše zmíněné destičce bohužel přemapovat nepůjdou, protože program pro PIO blok prochází popořadě za sebou jednotlivé GPIO, což zde není splněno, neboť GPIO5 je použit pro hodiny microSD karty. Také nepotěší, že použité footprinty pro tyto SMD odpory jsou zcela zbytečně velikosti 0402, když by se tam v pohodě vešly 0603. Vyřešil jsem to jednoduše přelepením dané oblasti na desce proužkem kaptonové pásky a připájením 0603 odpůrků podle Pandova zapojení přímo k vývodům Pico modulu. Na druhé konce odpůrků jsem připájel drátky a propojil je v odpovídajícími R, G, B piny VGA konektoru. Panda šetří GPIO a používá smíšenou synchronizaci zavedenou na pin HSYNC (13) místo původních HSYNC a VSYNC.

Raspberry Pi Pico na VGA demoboardu

      Po prvním připojení Pica do PC přes USB se mi detekovalo složené USB zařízení se zařízením třídy mass storage a neznámé zařízení "RP2 Boot" s USB PID: 0003h, k němuž není pro Windows žádný ovladač, ale není pro naprogramování potřeba. Raspberry Pi Foundation používá USB VID: 2E8Ah a zde je seznam všech jejich PIDů. Některé programy dále používají virtuální sériový port (CDC), pro který stačí nainstalovat tento INF soubor. Jak jsem zjistil, zařízení "RP2 Boot" využívá utilita picotool (zdrojáky zde) ke komunikaci s bootloaderem přes knihovnu libusb. Zařízení je třeba ručně zaregistrovat k WinUSB/libusb driveru pomocí utility Zadig, viz obrázek níže. Jediná binárka picotool.exe 1.1.0, kterou jsem našel, bohužel neběží pod Windows XP a pod Windows 10 mi při pokusu o spojení s Picem opakovaně spadla. Nakonec se mi podařilo zkompilovat vlastní build verze 1.1.0 [422 kB], který funguje i pod Windows XP. Umožňuje nahrávat a verifikovat programy pro Pico do/z SPI FlashROM, restartovat z boot módu do aplikačního módu (obráceně mi to nefungovalo) a vypsat nějaké informace, viz níže.

Installing RP2 Boot driver - libusb in Zadig


C:\RaspPicoSDK\_exe>picotool.exe info -a

Program Information
 name:          pico
 web site:      https://github.com/raspberrypi/pico-examples
 features:      USB stdin / stdout
 binary start:  0x10000000
 binary end:    0x10055bc0

Fixed Pin Information
 none

Build Information
 sdk version:       1.0.1
 pico_board:        pico
 build date:        Jun  6 2021
 build attributes:  Release

Device Information
 flash size:   2048K
 ROM version:  2

      Zkusil jsem do Pica nahrát program Vlak (Train), který je portem stejnojmenné staré DOSové hry od Golem Software. Naprogramování (pokud už bylo do Pica dříve něco nahráno, je třeba zmáčknout tlačítko BOOTSEL a RUN/RESET#, pak se jednoduše zkopíruje zkompilovaný .UF2 soubor na virtuální disk Pica) a start programu proběhl bez problémů a na monitoru se objevil starý známý Vlak, který jsem mohl ovládat klávesama přes Putty (115200 baud) skrz virtuální sériák (lze překonfigurovat i na UART na GPIO). Obraz běžel rychle a stabilně bez jakýchkoliv rušivých jevů. UPDATE: Na Pico byla portována i legendární střílečka Doom. Zdrojáky jsou k dispozici na GitHubu a ukázkové video je zde. Sharewarová epizoda Doomu se díky kompresi vešla do standardní 2MB SPI FlashROM a obraz se generuje odporovým DACem na VGA v 16-bitových barvách RGB565. Za zmínku stojí také projekt emulátoru Pico-ZXspectrum, který využívá výše zmíněnou knihovnu PicoDVI.

      30.3.2022 Tak mi konečně s várkou plošňáků z JLCPCB dorazily 4-vrstvé destičky na PicoDVI zmíněné výše, mírně upravené pro jiný footprint HDMI konektoru. Mám navíc 5 ks, takže případným zájemcům můžu z tohoto přebytku nabídnout. Zatím jsem osadil MCU RP2040 v QFN pouzdru a 12MHz krystal, ale chybí mi pasiva velikosti 0402, která budu muset někde koupit (toto smetí běžně nevedu).

Raspberry Pi PicoDVI PCB-top Raspberry Pi PicoDVI PCB-bottom
PicoDVI PCB top PicoDVI PCB bottom

      20.4.2022 Před 2 týdny jsem sehnal součástky a doosadil destičku, ale nevyzkoušel ji, protože jsem nikde nenašel zkompilovanou binárku s nějakým demem pro správnou konfiguraci pinů (našel jsem akorát zkompilované binárky, které byly určené pro Wrenův adaptér DVI Sock s jiným zapojením TMDS párů). Nyní jsem konečně překonal nechuť a odhodlal se rozběhnout toolchain s CMake. Kompilace se samozřejmě (na Windows) neobešla bez problémů. Použil jsem poslední verzi CMake 3.23.1, Python 3.10.4 (vyžadovaný nějakými build skripty) a ARM-GCC 9.3.1 toolchain. Dále je potřeba mít někde staženou a rozbalenou originální verzi PicoSDK 1.3.0 (ne tu upravenou Pandovu verzi). Pustil jsem CMD a nastavil cesty k ARM-GCC, MinGW, CMake, Pythonu a nastavil proměnnou PICO_SDK_PATH do adresáře s rozbaleným PicoSDK. V top-level adresáři zdrojáků PicoDVI jsem v souboru CMakeLists.txt změnil řádek s konfigurací pinů z set(DVI_DEFAULT_SERIAL_CONFIG "pico_sock_cfg" CACHE STRING na set(DVI_DEFAULT_SERIAL_CONFIG "picodvi_dvi_cfg" CACHE STRING (příp. lze předat jako parametr CMake -DDVI_DEFAULT_SERIAL_CONFIG=picodvi_dvi_cfg). Vytvořil jsem podadresář build, vstoupil do něj a spustil cmake -G "MinGW Makefiles" -DPICO_COPY_TO_RAM=1 .., měl by vzniknout soubor Makefile a mělo by stačit už jen zavolat make. Ale protože mi nějak selhala kompilace utilit pioasm a elf2uf2 z PicoSDK, tak jsem nakopíroval staženou binárku pioasm.exe do build\pioasm\ a elf2uf2.exe do build\elf2uf2\. Pak jsem musel zavolat make -i, aby se ignorovaly errory během kompilace, protože CMake se pokoušel pomocí ARM-GCC zkompilovat nějaký testovací soubor pro Windows s neznámým linker parametrem --major-image-version, ale to nemá vliv na kompilaci ARMového kódu a nakonec se mi přeložily všechny dema. Pro test zde přikládám zkompilovaný image dema christmas_snowflakes.uf2 [114 kB], které je vidět na fotce níže. Vyzkoušel jsem všechny dema a zobrazení bylo v pořádku, až na 1 demo vista-palette, které mi negenerovalo žádný obraz.

Raspberry Pi PicoDVI assembled PCB-top Raspberry Pi PicoDVI assembled PCB-bottom Raspberry Pi PicoDVI-Christmas snowflakes demo Raspberry Pi PicoDVI-Pico-ZXspectrum
PicoDVI top PicoDVI bottom Christmas snowflakes Pico-ZXspectrum

      Povedlo se mi též zkompilovat emulátor Pico-ZXspectrum, který využívá knihovnu PicoDVI. Pro jeho kompilaci je třeba navíc stáhnout balíčky (nejlépe přes GIT dle popisu v odstavci Build) no-OS-FatFS-SD-SPI-RPi-Pico, pico-dvi-menu, pico-emu-utils a upravenou knihovnu TinyUSB, kterou nahradíme starší verzi v PicoSDK (nezapomenout na git checkout hid_micro_parser). Konfigurace pinů pro HDMI výstup se použije dle konfigurační proměnné DVI_DEFAULT_SERIAL_CONFIG z nadřazeného CMakeLists.txt z PicoDVI knihovny, pak už jen stačí přeložit make -i zxspectrum. Emulátor podporuje funkci USB host a lze ho ovládat USB HID zařízeními (klávesnice a joysticky), které lze připojit i přes USB hub. Zatím ale nemám připájený konektor pro microSD kartu.

      30.6.2022 Raspberry Pi Foundation představilo novou verzi Raspberry Pi Pico W za 6$, která ke stávajícímu MCU RP2040 přidává WiFi modul založený na čipu Infineon CYW43439. Ten podporuje též Bluetooth 5.2, ale tato funkcionalita zatím není na Pico W k dispozici (v budoucnu možná bude). Softwarová podpora založená na síťovém stacku lwIP je zahrnutá v Pico SDK. Rozměrově a pinově je nové Pico kompatabilní s předchozí verzí.

      12.1.2023 Raspberry Pi Pico lze také použít jako levný logický analyzátor s 21 digitálními kanály s vzorkováním do 120 MHz a 3 analogovými kanály s vzorkováním do 500 KHz. Viz též diplomová práce z ČVUT: Vít Vaněček - Logický analyzátor s Raspberry Pi Pico. Zásadní omezení je úzké hrdlo v podobě pomalého USB, nicméně kratší záznamy se vejdou do interní RAM (lze samplovat rychle na limitu přenosu GPIO-DMA) a u signálů s málo změnami v čase může pomoci RLE komprese. Uživatel Pico-coder na svém GitHubu dal k dispozici OpenSource firmware pro Pico včetně zkompilovaného UF2 souboru, napsal driver do knihovny libsigrok (zatím se nedostal do oficiální větve), kterou využívá populární aplikace PulseView - zde je třeba použít speciální build se zakompilovaným driverem (může vyžadovat knihovnu mscvr100.dll, pokud ji už nemáte v systému). Firmware Pica komunikuje s libsigrok přes virtuální sériový port (CDC). Po připojení se objeví jako USB zařízení s VID, PID: 2E8A:000A:00 - Board CDC (Interface 0) a je pro něj třeba nainstalovat INF soubor zmíněný výše. Číslo sériového portu zjistíme ve Správci zařízení a v PulseView v menu "Connect to Device" vybereme driver "raspberrypi-pico" a příslušný Serial Port (bitovou rychlost není třeba u CDC zadávat). Pozor na to, že GPIO na Pico jsou nechráněné a snadno by se mohly odprásknout větším napětím než 3,3 V, takže doporučuji přidat alespoň nějaké sériové odpory pár set ohmů.

PulseView configuration

      9.2.2023 Raspberry Pi Pico bylo použito jako základ OpenHW/FW emulátoru PicoGUS historické zvukové karty Gravis Ultrasound (podporuje též AdLib/OPL2 a MPU-401 MIDI v provedení 8-bitové ISA karty). Zatím není zdaleka 100% kompatabilní, ale s novějším FW se to postupně zlepšuje, viz compatibility list. Nová verze firmware 1.2.0 přidává podporu emulace Sound Blaster 2.0.

      11.2.2024 Další využití Raspberry Pi Pico jako experimentální analyzátor LPC sběrnice přináší projekt Pico TPMSniffer. Využívá k tomu rychlé PIO (modul lpc_sniffer.pio), výstup je na sériový port.



Zpět

Aktualizováno 12.4.2024 v 23:23