- RP2040'ın güçlü yanları PIO·DMA·overclock olsa da, çekirdek performansı, RAM, GPIO, PIO kaynakları ve QSPI PSRAM eksikliği nedeniyle bazı projelerde STM32H7'ye geçmek gerekiyordu; RP2350 bu boşluğu büyük ölçüde dolduruyor
- RP2350, çift Cortex-M33F, kayan nokta desteği, çift hassasiyetli matematiği hızlandıran özel komutlar, 2 kat RAM ve RISC-V çekirdek seçeneği sunuyor; çeşitli projelerde 300MHz'de kararlı biçimde kullanılmış
- PIO, FIFO'yu bellek gibi kullanarak rastgele okuma-yazma yapabiliyor ve 3 PIO, PIO'lar arası kesme ile iyileştirilmiş DMA sayesinde Sony Memory Stick slave ve SDIO slave uygulamaları bile mümkün hale geliyor
- QSPI PSRAM okuma-yazma ve cache ile çalışıyor; STM32H7'de duran veya çöken bellek testleri RP2350'de çalışmayı sürdürdü ve 2 katmanlı el yapımı bir karta 16MB RAM eklemek de basitleşti
- İlk kamuya açık RP2350 projesi olan DEFCON 32 badge, Game Boy emülatörü ve PalmOS çalıştırmayı gösterdi; RP2354A/RP2354B ise paket içi 2MB flash, aynı pin dizilimi ve 80 pinlik GPIO genişleme varyantları sunuyor
RP2040'ta Eksik Kalanlar ve İstenen İyileştirmeler
- RP2040, birçok projede kullanılan bir mikrodenetleyiciydi; özellikle PIO, iyi tasarlanmış DMA ve yüksek overclock potansiyeli güçlü yanlarıydı
- PIO ve DMA birleşimi şu uygulamalarda kullanıldı
- gelişmiş ekran sürücüleri
- RAM ve ROM içeren tam bir sistem veri yolu gibi çalışan kartlar
- MC68328 işlemcisine bağlanan yapılar
- RP2040'ta yetersiz kalan noktalar çevrebirim kaynakları ve bellek genişletilebilirliği üzerinde yoğunlaşıyordu
- başka kanalları harcamayan DMA için sonsuz aktarım modu
- daha fazla DMA kanalı
- PIO state machine içinde geçici değişken saklamak için daha fazla register
- daha fazla PIO birimi
- PIO başına 32'den fazla komut yuvası
- daha fazla GPIO
- Yüksek saat hızı, büyük ölçüde Cortex-M0+ çekirdeğinin zayıflıklarını gizliyordu; Cortex-M4F gibi daha iyi bir çekirdek olsaydı kayan nokta veya hafif SIMD iş yüklerinde avantaj sağlayacağı düşünülüyordu
- QSPI PSRAM desteği ve daha fazla RAM de önemli beklentiler arasındaydı
STM32H7 QSPI RAM Deneyimi ile Karşılaştırma
- Bazı kullanım senaryolarında RP2040 yerine STM32H7 kullanmak gerekse de, STM32H7'nin hataları ve STMicro'nun errata yaklaşımı ciddi bir güvensizlik bırakmış durumda
- STM32H7'nin QSPI RAM desteğinde şu sorunlar görüldü
- cache olmadan yazıldığında write işlemleri kayboluyor
- cache açıldığında bazı 1 baytlık write işlemlerinin çevresine rastgele garbage yazılıyor
- kod PSRAM'den çalıştırıldığında milyarlarca erişim sonrası tüm çip kilitleniyor ve debugger da bağlanamıyor
- Sorun raporlandı ve demo sağlandı, ancak STMicro'nun yanıtı yeterli olmadı
- Geçici çözümler bulundu ama %7~10 performans tükettiği için çipin kullanışlılığı azaldı
RP2350'de Karşılanan İyileştirmeler
- Son 1 yılda Raspberry Pi'nin desteğiyle RP2350 örnekleri kullanılarak hatalar bildirildi, öneriler sunuldu ve RP2040 kullanım senaryolarının nasıl iyileştiği görüldü
- Çekirdek ve hesaplama performansı büyük ölçüde iyileşti
- 2 adet Cortex-M33F çekirdeği içeriyor
- kayan nokta desteği var
- Cortex-M33F'nin genel single-precision yeteneklerinin ötesinde double-precision matematiği hızlandıran özel komutlar sunuyor
- double-precision işlemler tek çevrimlik değil ama işlem başına 2~3 çevrim düzeyinde
- RISC-V çekirdeği de kullanılabiliyor, ancak gerçek projelerde Cortex-M33 tercih edilmiş
- Çeşitli projelerde RP2350'yi 300MHz'de çalıştırırken sorun yaşanmadı
- RAM kapasitesi, RP2040'a göre 2 katına çıktı
PIO ve DMA'daki Değişiklikler
- RP2350'de PIO, FIFO'yu bellek gibi kullanarak rastgele okuma-yazma yapabiliyor; bu da eskiden geçici değişken eksikliği nedeniyle zor olan PIO yapılarını kolaylaştırıyor
- Çip içindeki PIO sayısı 3'e çıktı
- PIO'lar arasında kesme aktarımı mümkün hale geldi; böylece PIO'lar arası senkronizasyon ve daha karmaşık yapılar kurulabiliyor
- Geliştirilmiş PIO ve DMA birleşimi gerçek projelerde şu uygulamalarda kullanıldı
- Sony Memory Stick protocol slave: cihazlar bunu gerçek bir Memory Stick gibi tanıyor
- SDIO slave device: test edilen cihazlar bunu SDIO aygıtı olarak tanıyor
- DMA da aktarım sürekliliği ve adres kontrolü açısından güçlendirildi
- başka kanal kullanmadan sonsuz aktarım mümkün
- her erişimde bellek adresini ayarlama seçenekleri arttı
- RP2040'taki “aynı adres” veya “erişim boyutu kadar artış” dışında azalma ve farklı boyutta artış seçenekleri eklendi
QSPI PSRAM Desteği
- RP2350, QSPI PSRAM desteği sunuyor ve okuma-yazma çalışıyor
- cache de mevcut ve düzgün çalışıyor
- STM32H7'de duran ya da çöken bellek testleri RP2350'de çalışmayı sürdürdü; veri kaybı veya çip kilitlenmesi yaşanmadı
- Mümkün kombinasyonlar şöyle
- 1 flash + 1 PSRAM
- 2 flash
- 1 boot flash + çalışma zamanı için 2 PSRAM
- VTOR, SP ve PC'nin tamamını PSRAM'e koyup, PSRAM hedefli çok sayıda LDM/STM komutu çalıştırırken kesme alan yapı da sorunsuz çalıştı
- Yapılandırma için C kodunda 3 satır yeterli ve 2 katmanlı el montajlı bir karta 16MB RAM eklemek de basit hale geliyor
- İlk RP2350 örnek kartı olan Pi Pico 2'de PSRAM footprint yoktu; bu yüzden PSRAM dead-bug yöntemiyle lehimlendi, ama buna rağmen tam hızda çalıştı
Korunan Güçlü Yanlar ve Geliştirme Deneyimi
- RP2040'tan RP2350'ye geçerken çevrebirim tasarımı ve dokümantasyon kalitesi korunmuş
- Çevrebirimlerin vaat edildiği gibi çalıştığı değerlendiriliyor
- SDK açık ve sade; büyük Cube/HAL tarzı araçları indirmek gerekmiyor
- Kod macro hell değil ve düzgün çalışıyor
- Raspberry Pi'nin RP2350 geliştirme kartı rPiPico uyumlu ve PiPico 2 üzerinde birçok projeyi kolayca çalıştırmak mümkün olmuş
İlk Kamuya Açık RP2350 Projesi: DEFCON 32 badge
- Kamuya açık RP2350 projelerinden biri DEFCON 32 badge
- Donanım Entropic Engineering tarafından geliştirildi ve firmware, küçük Game Boy emülatörü uGB'nin bir portu
- 2 çekirdek görev paylaşımıyla kullanılıyor
- bir çekirdek, Cortex-M33'ün SIMD komutlarını kullanarak Game Boy ekranını 1.5 kat büyütüyor
- diğer çekirdek emülasyon, UI ve kalan işleri yürütüyor
- Geçerli Game Boy oyunları en fazla 2MB boyuta kadar çalışıyor; daha büyük bir flash çipi takılırsa daha büyük oyunlar da mümkün
- Ön yüklü Game Boy oyunları DEFCON ekibi tarafından yazıldı
- Bu badge'de çip muhafazakâr biçimde 125MHz'de saatlenmiş
- test için fazla zaman yoktu ve üretim ara aşama olmadan 10 adetten 28.000 adede çıktı; ayrıca bir plan B de yoktu
- ekranın azami saat hızı 62.5MHz idi ve bunu PIO state machine sağladığı için ekran saatinin sistem saatinin tam sayı katı olması gerekiyordu
PalmOS Çalıştırma ve Firmware
- Aynı DEFCON 32 badge donanımı, rePalm project üzerinden tam sürüm PalmOS da çalıştırabiliyor
- Varsayılan badge üzerinde PSRAM takılı değil ama PalmOS çalışıyor
- bellek çok sınırlı olsa da infrared beaming, SD card, basit oyunlar, memo pad ve audio çalışıyor
- AP Memory 64Mbit PSRAM çipi takılırsa ikinci imaj kullanılabiliyor; daha fazla bellekle oyun yüklemek veya TCPMP üzerinden MP4'ü gerçek zamanlı oynatmak mümkün oluyor
- Firmware imajları dokümanda yer alıyor; SD karta
FIRMWARE.BINadıyla koyupFNdüğmesi menüsündenfirmware updateseçilerek yükleniyor - stock firmware'i geri yüklemek, USB ve UF2 protocol üzerinden herhangi bir bilgisayarda mümkün; stock image de aynı dokümandan alınabiliyor
RP2354 ve Daha Fazla GPIO
- Sonuç olarak STM32H7 projelerinin RP2350 ile yeniden planlanabileceği düşünülüyor
- RP2350'nin harici SPI flash gerektirdiği eleştirisine karşı, yerleşik flash varyantları olan RP2354A ve RP2354B bulunuyor
- RP2354A/RP2354B, paket içinde 2MB flash içeriyor
- Pin dizilimi RP2350A/B ile aynı
- Daha fazla GPIO sunan 80 pinli paket varyantı da var
Çıkar İlişkisi Beyanı
- Bu yazı için herhangi bir maddi ödeme veya karşılık alınmadı
- Yazının yazılması talep edilmedi ve herhangi bir onay da alınmadı
- RP2350 için early access, kamuya açık biçimde olumlu konuşma ya da belirli ifadeleri kullanma şartına bağlı değildi
1 yorum
Hacker News yorumları
Son birkaç yıldır RP2040 tabanlı fırçasız motor sürücüsü geliştiriyorum; bu duyuru beni gerçekten heyecanlandırdı.
Sürücü modülü en fazla 53V, sürekli 30A ve tepe 50A kaldırabiliyor. Kısa süre önce sürücüyü ayrı bir modül olarak ayırdım; bu hem tarım robotlarında kullanışlı hem de tasarım iyileştirmeleri sırasında sürücü testleri için önemli. Bu revizyon epey kararlı görünüyor, bu yüzden yakında RP2350 ile düşük maliyetli, tek kartta tümleşik 1 motorlu bir sürücü yapabilirim. RP2040’ta döngü hızı 8kHz idi; büyük tarım robotlarının tahrik motorları için yeterli, ancak kayan nokta kullanan yüksek performanslı sürücüler arasında 50kHz döngü hızına çıkanlar da var.
Kart SimpleFOC çalıştırıyor ve forumda bir amiral gemisi tasarım yapma fikri konuşulmuştu. Ancak sensörsüz kontrol ve kayan nokta desteği gerektiğinden, 8 ADC pinli RP2350’nin yeni büyük pin düzenli varyantını kullanarak 3 akım sinyalini ve 3 köprü gerilimini ölçüp makul bir sensörsüz sürücü yapılabilir. Tasarımın hazır olması birkaç ay sürecek, ama son gelişmeler için Git deposuna veya Twitter profilime bakabilirsiniz.
https://github.com/tlalexander/rp2040-motor-controller
https://twitter.com/TLAlexander
Ayaklarda ve tekerleklerde bisiklet parçaları kullanılmasını gerçekten sevdim.
Özel çevre birimleri, sensörlü/sensörsüz BLDC kontrolü için uygulama notları ve kod örnekleri olan özel MCU’lar zaten var; bence RP2040 bu iş için özellikle iyi donatılmış bir çip değil.
Çocukken oyuncak arabaları parçalayıp motorunu çıkarınca bir şey başarmış gibi hissettiğim zamanları hatırlatıyor.
RP2040’ı gerçek bir üründe kullanmayı hayal etmek zordu, ama RP2350 şikâyetlerimin önemli bir kısmını giderdiği için denemek isteyecek kadar heyecan verici.
RP2040’ın da pek çok güçlü yanı vardı. TBMAN harika bir kavram ve hız aşırtma konusunda da inanılmaz iyi. PIO gerçekten yenilikçi; 8051 türü çözümleri ek kart biçiminde Arm çekirdeğiyle değiştirmek isteyen birçok şirket için büyük değer taşıyor.
Ama her güzel yanın yanında bir eksik de vardı. DSP sınıfı saat hızına sahip ama FPU yok, donanımsal tamsayı bölme de yok. Bellek koruması olmayan bir MCU’da boot ROM içinde USB DFU işlevinin bulunması da pek arzu edilir değil. Zephyr gibi üçüncü taraf SDK’larda PIO desteği son derece sınırlı olduğundan büyük projelerde kullanım alanı daralıyor.
RP2350 bu şikâyetlerin neredeyse hepsini çözdüğü için çok heyecan verici. Yine de CAN veya SDMMC gibi yaygın çevre birimlerini PIO ile uygulamak gerekiyorsa hemen dezavantajlı duruma düşüyor. Esneklik harika, ama bir ürünü hızlıca ayağa kaldırmanız gerektiğinde özel amaçlı bir assembly diliyle uğraşmak istemezsiniz. Sonuçta SD/MMC, MII, Bluetooth HCI gibi yaygın işlevler için hazır yazılım çevre birimi kütüphaneleri sağlanırsa Zephyr vb. ile entegrasyon da kolaylaşır ve çipin kullanım alanı ciddi ölçüde genişler gibi geliyor.
Daha olgun hâle getirilebilirler, ama “hazır” biçime epey yakınlar.
PIO büyük bir avantaj ve yeni sürümde bu yönün daha da güçlendirilmiş olması sevindirici. İnsanlar CAN, WS2812 gibi çeşitli çevre birimleri için şimdiden PIO sürücüleri geliştiriyor; bu, umduğum görünüme yakın.
Otonom çevre birimi çalışması, op-amp’ler, karşılaştırıcılar, yakalama/karşılaştırma zamanlayıcıları da benzer. Zephyr masaüstü işletim sistemi gibi ortak arayüzler sunmaya çalışıyor, ama gömülü dünyada bu pek iyi uymuyor. Masaüstünde çoğu zaman en küçük ortak payda yeterlidir; gömülüdüyse platformu çoğu kez tam da o ortak olmayan özellikler yüzünden seçersiniz.
RP2040’ı seçme nedenlerimiz arasında tasarım felsefesi de vardı, ancak çip kıtlığı sonrasında tedarikinin kolay olması da büyük etkendi.
Gerçekte “örnekler” var; bunların birinci sınıf desteklenen şeyler olarak sunulması daha iyi olurdu.
Teknik özelliklere buradan bakılabilir: https://www.digikey.ca/en/product-highlight/r/raspberry-pi/r...
Raspberry Pi tarafından Birleşik Krallık’ta tasarlanan RP2350 tabanlı; FPU’lu 150MHz çift Arm M33, 520KiB SRAM, imzalı önyükleme, OTP, SHA-256, TRNG, glitch algılayıcı, Cortex-M için Arm TrustZone gibi güvenlik özellikleri, isteğe bağlı 150MHz çift RISC-V Hazard3 CPU, düşük güçte çalışma, özel çevre birimi desteği için 3 adet PIO v2 ve 12 durum makinesi, PSRAM desteği, daha hızlı harici XIP QSPI flash arayüzü, kart üzerinde 4MB QSPI flash, 5V toleranslı GPIO, açık kaynak C/C++ SDK ve MicroPython desteği, Pico 1/RP2040 yazılım uyumluluğu, USB yığın depolama üzerinden sürükle-bırak programlama, taşıyıcı karta doğrudan lehimlenebilen castellated modül, Pico 1 ile aynı footprint ve pin uyumluluğu, 3 analog giriş dahil 26 çok işlevli GPIO, -20°C~+85°C çalışma sıcaklığı, 1.8VDC~5.5VDC giriş gerilimi
Sonradan bakınca 14.8.2.1 bölümünde “Standard Digital” ve “Fault Tolerant Digital” olmak üzere iki tür dijital pin geçiyor; FT Digital pinleri 5V toleranslı gibi görünüyor
Pigweed ekibi için büyük bir gün
RP2350/Pico 2’nin ana duyurusunda da bazı çalışmalardan bahsedildi [1], ancak son birkaç aydır Bazel [3] üzerine inşa edilen yeni uçtan uca SDK [2] üzerinde çalışıyoruz ve hem RP2040’ı hem de RP2350’yi destekliyor. Buna Pico SDK’ya Bazel desteğini upstream etme çalışması da dahil. Yeni “Tour of Pigweed” [4], hermetik build’ler, cihaz içi birim testleri, RPC merkezli iletişim ve masaüstü fabrika testi gibi çeşitli Pigweed özelliklerinin tek bir codebase içinde birlikte nasıl çalıştığını gösteriyor. Sorular Discord’da [5] alınır
[1] https://www.raspberrypi.com/news/raspberry-pi-pico-2-our-new...
[2] https://opensource.googleblog.com/2024/08/introducing-pigwee...
[3] https://blog.bazel.build/2024/08/08/bazel-for-embedded.html
[4] https://pigweed.dev/docs/showcases/sense/
[5] https://discord.gg/M9NSeTA
Her şeyin hermetik biçimde entegre edilip iş akışının tek bir Bazel komutuna indirgenmesini görmek büyük fark yaratıyor
Pigweed duyurusunda bundan hiç bahsedilmemesi şaşırtıcı
Mikrodenetleyici ekosisteminde Java’yı dışarıda bıraksalar keşke
Aynı die üzerinde Arm çekirdekleri ile RISC-V çekirdekleri arasında seçim yapılabilen bir tasarımı ilk kez görüyorum
Fiyat ve güç tüketimine etkisi olup olmayacağını merak ediyorum. Hazard3 çekirdekleri isteğe bağlı; önyükleme sırasında dahil edilen Arm Cortex-M33 çekirdek çiftini ya da Hazard3 çekirdek çiftini seçip 150MHz’de çalıştırabiliyorsunuz. Daha cesur bir şekilde bir RV ve bir Arm’ı birlikte çalıştırmak da mümkün
Hazard3 açık kaynak bir tasarım ve dokümantasyonu yayımlanmış durumda. Donanımsal çarpma-bölme, atomik komutlar, bit işleme vb. destekleyen 32 bit temel RISC-V ISA’ya sahip, hafif, 3 aşamalı, sıralı yürütmeli bir RV32IMACZb* makinesi
Eben Upton şöyle açıklıyor: “Önyükleme sırasında seçilebilir. Bus fabric’e giren her portu bir mux üzerinden M33 ya da Hazard3’ten birine bağlayabiliyorsunuz. Biraz geek’lik yapmak isterseniz her birinden birer tane de çalıştırabilirsiniz”
Kaynak: https://www.theregister.com/2024/08/08/pi_pico_2_risc_v/
Gerçek komut çekirdeğinin kapladığı alan, çevre birimleri veya dahili belleğe kıyasla genelde oldukça küçük
Ayrı bir çipi yeniden tape-out etmekten çok daha düşük maliyetle hem teknik doğrulama hem de pazar kabulü ölçülebilir
İstenirse tamamen açık kaynak olan RISC-V’nin seçilebilmesi çok güzel. RV çekirdeği saat başına performansta M33’ten daha yavaş olacak gibi, benchmark skorlarında M33’ün daha iyi çıkmasını bekliyorum. Bunun nedeni Hazard3’ün 3 aşamalı pipeline’a sahip olması, gerçi M33 de 3 aşamalı. Benchmark’ları sabırsızlıkla bekliyorum
Resmî haber yazısı: https://news.ycombinator.com/item?id=41192341
Resmî ürün sayfası: https://news.ycombinator.com/item?id=41192269
Doom, RP2040’a port edilmişti: https://kilograham.github.io/rp2040-doom/
RP2350 Quake çalıştırabilecek gibi görünüyor. Bazı değişiklikler neredeyse bu amaç için tasarlanmış gibi hissettiriyor. FPU, 150MHz çift çekirdek, 300MHz üzeri overclock olasılığı, donanımsal okuma/yazma sayfalamasıyla 16MB’a kadar PSRAM desteği var
Geliştirme kartının micro-USB kullanması pek iyi değil. 2024’te bile böyle
Bunun dışında harika ve mevcut dev oyuncularla rekabet etmek için tam gereken ürün
Modern ürünlerin hepsinin USB-C olması güzel, ama elimizde hâlâ çok sayıda micro-USB kablo olduğu için resmî Pico ve Pico 2’nin micro-USB olması da büyük bir sıkıntı değil. Projeye göre istediğiniz portu seçebilme seçeneğinin olması iyi
Arayüz çipinin de daha karmaşık olması gerekir ve bu yüzden muhtemelen daha pahalıdır. AliExpress’te hâlâ micro-USB kullanan çok sayıda düşük maliyetli cihaz var ve buna talep de olacaktır. Müşteri kitlesine bağlı olarak geliştirme kartının aynısıyla tüketici ürünü bile yapılabilir
Tüketici odaklı görünen genç bir şirketin ikinci mikrodenetleyicisine bu kadar çok güvenlik koyması biraz beklenmedik
Başta deneyim eksikliği nedeniyle güvenliğe güvenmenin zor olduğunu düşündüm. Ama “deneyimli” tedarikçilerin güvenli mikrodenetleyicilerinde de bilinen çok sayıda güvenlik hatası var ve daha önemlisi, bu sorunları örtbas etmeye çalıştıklarının ortaya çıktığı durumlar oldu. Güvenlik mimarisi için iki kez denetim yaptırmaları, 10 bin dolarlık bug bounty koymaları ve DEF CON rozeti gibi glitching için kart tasarlamaları, güvenliğe oldukça ciddi bir bağlılık gösteriyor. Redundancy Coprocessor’ın nasıl çalıştığını da merak ediyorum. Yine de birilerinin bunun en azından bir kısmını kırabilmesi şaşırtıcı olmaz
Algı açısından tüketici odaklı demek istiyorum; gelir ve tedarik açısından ise endüstriyel kullanıcıları önceliklendirmiş gibi görünüyorlar
Resmî duyuruyu ya da veri sayfasını henüz bulamadım, ancak bu yazıya göre RP2040’a kıyasla büyük bir sıçrama gibi görünüyor
2× Cortex-M33F, iyileştirilmiş DMA, daha fazla ve iyileştirilmiş PIO, harici PSRAM desteği, dahili 2MB flash ve 80 pinli varyant, iki katına çıkarılmış 512KiB RAM, birkaç RISC-V çekirdeği içeriyor gibi. Düşük güç için olabilir