Für C-Programmierung suche ich zum RP2040 die Include Datei mit den Registerdefinitionen. Wo kann ich die finden? Segger Embedded Studio unterstützt zwar den RP2040, aber die dortige RP2040.h enthält im Wesentlichen nur die ISR-Vektoren. Was ich an Beispielen finde, läuft alles auf Arduino-Ebene. Damit kann ich nichts anfangen. SDK-Software zum pico sieht nach Linux aus; auch damit kann ich nichts anfangen.
RP2040 Anfänger schrieb im Beitrag #6864609: > SDK-Software zum pico sieht nach Linux aus; auch > damit kann ich nichts anfangen. Du kannst das SDK auch unter Windows aufsetzen, beziehungsweise das Archiv dort entpacken und die Datei raussuchen. Die gesuchte Datei ist eine Textdatei; der ist weitgehend egal, unter welchem System sie angeschaut wird.
Danke, habe ich gemacht. Es sind viele kleine .h Dateien und nicht eine einzige große. Mal sehen, wie sich damit arbeiten läßt.
>Was ich an Beispielen finde, läuft alles auf Arduino-Ebene. Damit kann >ich nichts anfangen. Warum nicht? Du solltest lernen, damit umzugehen. Man kann das System mit VS-Code aufsetzten und mit GDB debuggen. Es sind also alle Möglichkeiten vorhanden und zusätzlich gibt es die Möglichkeit zur Verwendung 1000er Arduino Bibliotheken.
Markus schrieb: > Warum nicht? Du solltest lernen, damit umzugehen. Wenn man schon laufen kann, warum soll man sich dann ans krabbeln gewöhnen? Man könnte aber, wie auch schon für pico vorgeschlagen wurde, sich die Arduino-Sourcen anschauen. Da sollte ja auch alles gewünschte zu finden sein. Oliver
Oliver S. schrieb: > Man könnte aber, wie auch schon für pico vorgeschlagen wurde, sich die > Arduino-Sourcen anschauen. Da sollte ja auch alles gewünschte zu finden > sein. In den Quellen vom SDK findet sich zwar alles wieder, aber Dateien gleichen Namens in anderen Verzeichnissen haben ganz anderen Inhalt. Sehr unübersichtlich und verwirrend. Auch findet sich Quellcode in .h-Dateien. Vielleicht ist es sinnvoll, die vielen kleinen Schnipsel in eine große Datei zu kopieren, die dann alles im direkten Zusammenhang enthält. In der Segger IDE wäre das sicher transparenter.
RP2040 Anfänger schrieb im Beitrag #6865487: > In den Quellen vom SDK findet sich zwar alles wieder, aber Dateien > gleichen Namens in anderen Verzeichnissen haben ganz anderen Inhalt. Ja, klar. Ein Zweig ist für die Basisadressen der Peripherie-Units und die Bitdefinitionen zuständig, der andere für die Offsets der Register, bezogen auf die Basisadressen, dargestellt als Struktur-Deklarationen. Sowas macht immer dann Sinn, wenn es mehr als eine Unit gleicher Art gibt (oder zumindest geben könnte). Und von vielen Units gibt es ja tatsächlich mehr als nur eine. > Sehr unübersichtlich und verwirrend. Auch findet sich Quellcode in > .h-Dateien. So what? Was anderes als Quelltext sollte denn deiner Meinung nach in *.h-Dateien stehen? Wichtig ist doch nur, dass nur Quelltext mit rein deklarativem Charakter sein sollte. Und das ist der Fall (es sei denn, ich hätte was übersehen).
RP2040 Anfänger schrieb im Beitrag #6864609: > Für C-Programmierung suche ich zum RP2040 die Include Datei mit den > Registerdefinitionen. Wo kann ich die finden? Alternativ könntest du dir die benötigten SFRs selber definieren. Die Beschreibung findest du im Device Manual. Ist ein bisschen mehr Aufwand aber dafür schleppt man keine riesen Header Dateien mit, von denen man nur eine Handvoll Defines braucht. Das könnte z.B. wie folgt aussehen:
1 | #define RCC_BASE_ADDR ((unsigned int)(0x40023800))
|
2 | #define RCC_AHB1RSTR (*(volatile unsigned long*)(RCC_BASE_ADDR + 0x10))
|
Du kannst im Embedded Studio die RP2040_Registers.xml benutzen und dir damit die SFRs im Register Fenster anzeigen lassen. Das ist echt praktisch.
Til S. schrieb: >> Für C-Programmierung suche ich zum RP2040 die Include Datei mit den >> Registerdefinitionen. Wo kann ich die finden? > > Alternativ könntest du dir die benötigten SFRs selber definieren. Du hättest es eigentlich besser wissen können. Die .h Dateien sind in der hinterletzten Ecke versteckt. Bei mir zum Beispiel: C:\Users\XYZ\AppData\Local\SEGGER\SEGGER Embedded Studio\v3\packages\RP2040_Pico_BSP\pico-sdk\src\rp2040\hardware_structs\ include\hardware\structs oder C:\Users\XYZ\AppData\Local\SEGGER\SEGGER Embedded Studio\v3\packages\RP2040_Pico_BSP\pico-sdk\src\rp2040\hardware_regs\inc lude\hardware\regs Danach kann man sich ja dumm und dämlich suchen :-(
RP2040 Anfänger schrieb im Beitrag #6866441: > Danach kann man sich ja dumm und dämlich suchen :-( Dafür hat man einen Editor oder eine IDE. Das darf nicht mehr als einen Tastendruck brauchen. Wenn du da von Hand Dateien durchsuchen musst, nutzt du die falschen tools. Oliver
Oliver S. schrieb: > Dafür hat man einen Editor oder eine IDE. Das darf nicht mehr als einen > Tastendruck brauchen. Dann zeigt mir mal den Tastendruck. Ich würde erwarten, dass, wenn ich ein Projekt für den RP2040 anlege, der passende #include-Pfad gelegt wird. Ist nicht. Und wenn ein Segger Mitarbeiter empfiehlt, seine eigenen .h/.xyz-Dateien anzulegen, scheint die Lösung nicht offensichtlich zu sein. Aber gut, für einen Arduinofan muss sich sowieso alles mit einem Tastendruck zusammenklicken zu lassen.
Für Schnellklicker mal ein Beispiel, wie die Dateien "gpio.c" im RasPi-SDK und bei Segger aussehen. Es ist Glückssache, ob man den Müll oder den Eimer erwischt.
Hi Du kannst auch mal versuchen aus der SVD-Datei [1] mit SVDConv [2] die entsprechende Datei zu generieren. Da kommt manchmal was brauchbares raus. [1] https://github.com/raspberrypi/pico-sdk/blob/master/src/rp2040/hardware_regs/rp2040.svd [2] https://github.com/ARM-software/CMSIS_5/blob/develop/CMSIS/Utilities/Win32/SVDConv.exe Matthias
:
Bearbeitet durch User
RP2040 Anfänger schrieb im Beitrag #6866441: > Du hättest es eigentlich besser wissen können. Ich bin da leider auch nur Embedded Studio Kunde ¯\_(ツ)_/¯. Müsste ich mal die Kollegen fragen wie das gedacht ist. Kann ich gerne morgen machen. RP2040 Anfänger schrieb im Beitrag #6866522: > Für Schnellklicker mal ein Beispiel, wie die Dateien "gpio.c" im > RasPi-SDK und bei Segger aussehen. > > Es ist Glückssache, ob man den Müll oder den Eimer erwischt. Geraten würde ich ja sagen dass das pico-sdk von hier übernommen wurde, https://github.com/raspberrypi/pico-sdk, und die beiden gpio.c dort identisch aussehen. Ich habe es mir aber jetzt nicht im Detail angeschaut.
>von Oliver S. (oliverso) >01.11.2021 09:57 >Markus schrieb: >> Warum nicht? Du solltest lernen, damit umzugehen. >Wenn man schon laufen kann, warum soll man sich dann ans krabbeln >gewöhnen? Der Spruch muss anders heißen: Besser gut gefahren als schlecht gelaufen. Entwickler mit viel Erfahrung wissen, dass man mit großen Softwareframeworks die Ziele schneller erreichen kann als als Fußgänger. >Man könnte aber, wie auch schon für pico vorgeschlagen wurde, sich die >Arduino-Sourcen anschauen. Da sollte ja auch alles gewünschte zu finden >sein. So ist es. Und es macht mehr Sinn, bestehende Umgebungen zu erweitern als inkompatible Dinge selbst zu entwickeln.
Der Standard für die Header wird für die meisten Cortex bei ARM in der CMSIS gepflegt, nur bei RPi musste man erstmal seine eigene Wurst haben: https://github.com/raspberrypi/pico-sdk/issues/21 https://github.com/raspberrypi/pico-sdk/pull/384 Da saß wohl erstmal ein Praktikant dran der zum ersten Mal einen CM0 in der Hand hatte.
Johannes S. schrieb: > Da saß wohl erstmal ein Praktikant dran der zum ersten Mal einen CM0 in > der Hand hatte. Denk ich nicht. Das ist schlicht und einfach der Versuch eines Vendor Lock In. Das gleich was alle anderen mit ihren HALs, CUBEs oder MCUXpressos auch versuchen. Aber immerhin gibt es ja eine SVD-Datei. Matthias
aber auch die genannten haben sich beim Core auf CMSIS geeinigt, obwohl die alle gerne eigene Standards durchdrücken wollen. Bei der Peripherie gibts ja genug Freiheit, die sorgt dann schon noch genug für Wettbewerb. Und die weite Verbreitung von z.B. STMs Tools und Offenheit zeigt doch wie gut das angenommen wird. Das Lock In hat man schon dadurch das keine Prozessoren Herstellerübergreifend gleich sind.
Gefunden habe ich letztlich dies hier https://gitlab.com/khockuba/cmsis-pi-pico/-/blob/master/CMSIS/Device/Raspberry/RP2XXX/Include/RP2040.h
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.