Raspberry Pi Pico Bare Metal programming

Başlatan z, 04 Mayıs 2022, 13:30:12

z

Raspberry Pi Pico'nun fiyati ve cift cekirdek olusu cazip geliyor.
Fakat bu cipi Linux yuklu olarak degil de STM32 programlar gibi sifirdan programlamak istiyorum.

Hangi derleyiciyi ve jtag unitesini almam gerekir?

Edit: Zaten cip linux icin tasarlanmamis. Bu iyi haber.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#1
Cipi ve uzerindeki programlari bilmiyorum ve fikir cimlastigi yapiyorum.

Cip uzerinde bir loader var. SD kartta Linux var. Cip power on asamasinda SD kartta istedigi ozelliklerde dosya bulunca onu yukluyor ve ardindan ona start veriyor.

Sanirim senaryo boyledir.

Eger SD karta kendi programimi cipteki bootlladerin istedigi formatta olacak sekilde yuklersem bu durumda benim kodlarimi da yukleyecek ve start verecektir.

Bu kisimdaki zorluklar az bir arastirma ile asilabilir.

Fakat jtag unitesi ile calisirken kodu yukle calistir hata ara imkanlari bu yapida olmayacak.



Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#2
https://blog.usedbytes.com/2021/12/pico-serial-bootloader/

Cip ARM islemci oldugu icinboot senaryosu aynen kullandigimiz "STM"lerdeki gibi.

Reset ardindan 0x0000 0000 dan klasik boot islemini yapmaya basliyor.
Flasin bu kismini cipin ureticisi degisitirilebilir yapmamis.

Boot kodu Bootsel pinine bakiyor. Eger aktif ise cip USB stick gibi davraniyor ve USB icindeki kodu yukluyor.
Eger pin aktif degilse ve flasha aktif bir program yuklu ise dogrudan programin basina ziplayip calismaya basliyormus.

Buraya kadarki bilgiler/detaylar cip ureticisi tarafindan detayli anlatilmis.

Boot rutinleri, flasha kod yaz, sil gibi hazir fonksiyonlari barindiriyormus.

Dolayisi ile kodu bir kereligine usb flasha (Raspberry PI pico) atip ardindan kendi kendini flasha kopyalayip ardindan usb flashdaki kodumuzu silebiliriz. External flashmis zaten. Cipin icinde flash oldugunu saniyordum ama yokmus.

Artik kodumuz her reset ardindan otomatik calismaya baslayayabilir.

Fakat bir sorun var. Read/write protection.

Cok fazla bakinmadim ama form sitelerindeki tartismalarda gozume carpan protection sorunu var gibi.

Cipte protection olmazsa isime yaramaz.

Ote yandan;

Cipin henuz dokumanlarina bakmadim ama cip  flasha da sahip degil. Kod sanki external flashda tutuluyor.
Raspberry PI Pico kartta MCU haricinde bir tane de Flash mi var bilmiyorum.

Eger oyle ise cip uzerinde kucuk bir rom var ve uzerinde sadece bootloader var. Kendi kodumuz vs external flasha yaziliyorsa tumden sakat.

Malesef dedigim gibiymis. Kartin ustunde minik bir flash var.

Hevesim kursagimda kaldi cop pis bir MCU ooooggg hemde M0 pis kaka  tuu..
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Tagli

#3
Kendim hiç uğraşmadım ama ilk çıktığında dokümanlarını biraz okumuştum.

Evet, çipin içindeki dahili ROM'da sadece fabrikada yüklenmiş bootloader ve ek olarak floating point işlemler için bu işlemciye özel optimize edilmiş bir kütüphane var. Kendi toolchain'i varsayılan olarak bu kütüphaneyi kullanacak şekilde ayarlanmış.

Kullanıcı kodu dışarıda Quad SPI ile bağlı flash çipinde. Herhangi bir koruma sistemi yok, kullanıcı kodu kabak gibi ortada.

RP2040 execute in place (XIP) destekliyor, yani kod doğrudan Quad SPI üzerinden çalışıyor. Emin değilim ama muhtemelen RAM'e aktarıp oradan çalıştırma özelliği de vardır, ancak hatırladığım kadarıyla buna gerek olmuyor çünkü bir çeşit caching mekanizması var.

Çipin içinde bootloader olduğundan, kod atmak için ayrı bir donanım gerekmiyor. USB bağlantısı üzerinden doğrudan kod atılabiliyor. Debug desteği nasıl emin değilim. Harici JTAG desteği olabilir. Bir Raspberry Pi (Linux yüklü olanlardan) veya kendisinin aynısı (Pico) ile debug edilebildiğini biliyorum, ancak arayüzün ne olduğunu hatırlamıyorum. En yaygın yöntem 2 tane Pico alıp birini diğerini debug etmek için kullanmak.

Ekleme: Gerçekten çok acayip bir çip. Üzerinde Doom çalıştırmışlar. İlgili yazı serisi çok teknik ve hayranlık uyandırıcı (hayır hepsini okumadım, şöyle bir göz attım sadece). Ticari amaçla kullanımını kısıtlamak için kasıtlı olarak harici flash ile çalışacak şekilde tasarlanmış olabilir. Gerçi benzer başka ticari çipler de var, Cypress FX2 serisi gibi. Bilemiyorum...
Gökçe Tağlıoğlu

z

Kit fiyat olarak cazipti. Kodun korunakli olmamasi yuzunden cogu projede kullanilamaz.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

MrDarK

Espressiff varken neden heyecan aranır bilemiyorum.
Picproje Eğitim Gönüllüleri ~ MrDarK

Tagli

@MrDarK , bildiğim kadarıyla onun da flash'ı dışarıda, yanlış mı biliyorum?
Gökçe Tağlıoğlu

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

hasankara


esp32 için henüz denememiş olmakla birlikte "Enable flash encryption on boot" özelliği sanırım tamda bu kodun kopyalanmasına karşı eklenmiş bir özellik olabilir. esp8266 da bu özellik olmadığı için ticari maksatlı çok tercih edilmiyor diye hatırlıyorum. Son zamanlar mouser ve digikey stoklarını takip ediyorum s2 ve s3 versiyonları stoğa girdiği gibi tükeniyor hatta digikey elinde kalan son esp32s3 leri iki katı fiyatına çıkarmıştı.

bare metal programlamak adına güncel bir işlemci belki ilgi uyandırabilir "allwinner t113-s3" aliexpresste 10 adet kargo dahil 10 tanesi 70 dolara satıcı bulmuştum. 37 dolara da kitini sipariş etmiştim geçen hafta, sonra linux için biraz daha bekleme kararı alıp siparişi iptal etmiştim.



Firzen

Alıntı yapılan: z - 04 Mayıs 2022, 14:42:22Kit fiyat olarak cazipti. Kodun korunakli olmamasi yuzunden cogu projede kullanilamaz.

Ben şuan Raspberry Pi Pico ile uğraşıyorum da QSPI olmaksızın C/C++ gdb ile programlama olanağı var diye okumuştum kendi forum sayfasında.

https://forums.raspberrypi.com/viewtopic.php?t=313482

Burada da söylüyorlar bu konu hakkında zaten.
Kararsız...

MrDarK

Alıntı yapılan: Tagli - 04 Mayıs 2022, 16:20:57@MrDarK , bildiğim kadarıyla onun da flash'ı dışarıda, yanlış mı biliyorum?

Evet flash memory dışarıda fakat aes donanımı ile memory crypt edilerek kod koruma sağlanıyor. Bu durum için bircok farklı seçenek var.

Z eğer amaç bare metal programlamak ve ucuz fiyat ise esp32 den başka bir seçeneğinin olacağını sanmam. Arm olmayışı burun kıvırmaya sebep kabul fakat güzel bir alternatif milyon adet esp üretilmiş sonuçta çok yeni bir ürün değil
Picproje Eğitim Gönüllüleri ~ MrDarK

Tagli

Alıntı yapılan: MrDarK - 04 Mayıs 2022, 20:45:32Evet flash memory dışarıda fakat aes donanımı ile memory crypt edilerek kod koruma sağlanıyor. Bu durum için bircok farklı seçenek var.
Bilgilendirme için teşekkürler.

Alıntı yapılan: Firzen - 04 Mayıs 2022, 19:37:39QSPI olmaksızın C/C++ gdb ile programlama olanağı var diye okumuştum
Muhtemelen flash olmadan da dışarıdan kod atıp RAM üzerinde çalıştırmak mümkündür. Ancak sonuçta o kodun ürün içinde bir yerde olması lazım, flash da bu yüzden gerekiyor zaten. Sistemde ikinci bir işlemci varsa, mesela bir STM32, RP2040'ın programını kendi flash'ında tutup elektrik verildiğinde RP2040'a program atabilir. Ama bu da kurtarmaz, çünkü bir saldırgan araya girip programlama sırasında kodu çalabilir. Ancak @MrDarK 'ın bahsettiği gibi bir kripto sistemi RP2040 içinde varsa soruna çözüm bulunabilir, ama bildiğim kadarıyla yok.

Gökçe Tağlıoğlu

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

MrDarK

Alıntı yapılan: z - 04 Mayıs 2022, 21:54:17Keyler nerde saklaniyor?

Korumalı şekilde Esp'nin sınırlı ROM memory katmanı içinde saklanıyor.
Picproje Eğitim Gönüllüleri ~ MrDarK