Updated (.UF2 binary) to RP2040 v2.3.2 & SDFat v2.2.0
Updated (.UF2 binary) to RP2040 v2.3.2 & SDFat v2.2.0
Das neue "Internal CCP v2.5" enthaelt den internen Befehl VOL
Dieser zeigt von dem aktuellen Laufwerk und allen User-Areas den Inhalt der dort abgelegten
INFO.TXT
Dies soll laut dem Autor Marcelo Dantas helfen die besser Uebersicht zu behalten, welche Programme man wo abgelegt hat
Da ich eine einfache Loesung zum erstelen der Datei suchte, habe ich ein kleine MBASIC Programm geschrieben - mit Namen CINF - dass diese Datei erstellt nach einer Text-Eingabe
Es ist so compiliert, dass es die BRUN.COM nicht braucht
Anbei das .UF2-Binary und im .ZIP auch CINF.COM/BAS
Hallo Guidol,
ich habe mit Deinem Binary jetzt auch mal ein Raspberry Pico als CP/M System aufgebaut. Fliegt Prima! Danke.
Jetzt habe ich noch eine Frage dazu: Und zwar möchte ich die UART benutzen.
Nach dem Bild hast du die Pins 26,27 dazu verwendet. So wie ich das Pinning verstehe sind die UARTs aber auf den Pins 1/2 bzw. 6/7.
Kannst Du mir einen Tipp geben wo mein Fehler liegt.
Schon mal Danke
Udo
Jetzt habe ich noch eine Frage dazu: Und zwar möchte ich die UART benutzen.
Nach dem Bild hast du die Pins 26,27 dazu verwendet. So wie ich das Pinning verstehe sind die UARTs aber auf den Pins 1/2 bzw. 6/7.
Kannst Du mir einen Tipp geben wo mein Fehler liegt.
Bei Dir liegt kein Fehler vor - Du nutzt wohl nur ein anderes Pinout Bild
Bevor ich RunCPM auf dem Pico umsetzte, nutzte ich auf einem meiner anderen Picos das Projekt Picomite.
Da nach dem Pinout Bild des Picomite auf
Pin 26 (GPIO20) COM2RX = Pin 7 (GPIO5) COM2RX
und
Pin 27 (GPIO21) COM2TX = Pin 6 (GPIO4) COM2TX
die selben Signale moeglich sind, habe ich mit damals beim Picomite und RunCPM entschlossen die ganzen Kabel in einer Ecke "anzustecken"
Im void setup des Arduino-Source koennte man am Anfang vor dem oeffnen des seriellen Ports die Pins definieren (entsprechendes auskommentieren und drauf achten, dass der Source normal Serial. (fuer USB) und nicht Serial2. (Pin 26/27) nutzt):
// Serial port speed
#define SERIALSPDONE 115200
#define SERIALSPDTWO 115200
void setup(void) {
// If Pins for Serial. not set = USB-Port
// Serial.setRX(1); // GPIO0
// Serial.setTX(2); // GPIO1
// Serial2.setRX(7); // GPIO5
// Serial2.setTX(6); // GPIO4
// or
// Serial.setRX(22); // GPIO17
// Serial.setTX(21); // GPIO16
Serial2.setRX(27); // GPIO21
Serial2.setTX(26); // GPIO20
Serial2.begin(SERIALSPDTWO, SERIAL_8N1);
Alles anzeigen
Auf dem Standard Pinout Bild sieht man bei Pin 26/27 nur I2C SDA/SCL, aber auf dem Picomite Pinout Bild auch COM2TX/RX wie bei Pin 6/7
Wenn es Dir wichtig ist, kann ich Dir auch mal ein Binary machen mit Pin 1/2 oder 6/7, aber wie Du auf der ersten Seite dieses Themen-Threads sehen kannst, habe ich auch eine TTL-serielle auch mal an COM1 Pin 21 (GPIO16) und 22 (GPIO17) genutzt - dass ist dann anstatt Serial2. dann Serial. in der Arduino-IDE.
Zum seriellen Port habe ich jetzt doch noch eine andere Info zu Serial. in Verbindung zu USB gefunden
Serial. ist immer USB
So gelten fuer den Earlephilhower Arduino-PicoCore laut einer Github-Issue also folgende Namen:
(BTW: hatte vorher an Pin1/2 RX/TX vertauscht - OOPS)
// Serial. =USB / Serial1. =UART0/COM1 / Serial2. =UART1/COM2
// Serial1.setRX(2); // GPIO1
// Serial1.setTX(1); // GPIO0
// Serial2.setRX(7); // GPIO5
// Serial2.setTX(6); // GPIO4
// or
// Serial1.setRX(22); // GPIO17
// Serial1.setTX(21); // GPIO16
// Serial2.setRX(27); // GPIO21
// Serial2.setTX(26); // GPIO20
Alles anzeigen
orion7 als Anhang mal ein Binary, dass Serial1. an Pin 1/2 nutzt mit 115.200 Baud
(habe es aber noch nicht selbst getestet)
Hallo Guidol,
danke für Deine prompte Antwort. Ich probiere später Dein Binary aus und berichte dann.
Hallo Guidol,
danke für Deine prompte Antwort. Ich probiere später Dein Binary aus und berichte dann.
Bevor Du das Binarys ausprobierst.... ich hab wohl noch nicht viel Uebung mit der Nutzung/Angabe des seriellen Ports - im Gegensatz um USB.
Ich wollte das Binary testen und musste feststellen, dass der Pico als USB-device nicht erkannt wird
Also habe ich mir meinen alten Source vom 05.11.2021 angesehenund festgestellt, dass man bei setRX/setTX die GPIO-Nummern und nicht die Pin-Nummern angeben muss...deshalb wurde der Pico nicht als USB-Device erkannt
Also aendert sich die Definition im Arduino .ino wie folgt:
// ======================
// Serial Port Definition
// ======================
// Serial =USB / Serial1 =UART0/COM1 / Serial2 =UART1/COM2
Serial1.setRX(1); // Pin 2
Serial1.setTX(0); // Pin 1
// Serial2.setRX(5); // Pin 7
// Serial2.setTX(4); // Pin 6
// or
// Serial1.setRX(17); // Pin 22
// Serial1.setTX(16); // Pin 21
// Serial2.setRX(21); // Pin 27
// Serial2.setTX(20); // Pin 26
// ==============================
Alles anzeigen
D.h. ich habe Dir ein neues Binary gemacht fuer GPIO0/GPIO1
und habe es getestet mit einem ESP8266-Telnet-Modem
Hallo Guidol,
kein Problem, Anscheinend ist mein USB-RS232 Adapter vorhin gestorben. Er redet auch mit meinem Junior nicht mehr.
Ich komme auf das Thema zurück sobald ich wieder eine Laufende RS232 habe.
Dann spiele ich Dein Image gern auf.
Anscheinend ist mein USB-RS232 Adapter vorhin gestorben.
Ich komme auf das Thema zurück sobald ich wieder eine Laufende RS232 habe.
Du hattest nur einen?
Bei den Preisen nehm ich immer gleich nen 5er Pack (also die CH340 China USB-TTL - die laufen gut)
CP2102 mag ich nicht so und die original FTDI sind mir zu teuer.
Ansonsten kann man (wenn man hat) einen Arduino dafuer zweckentfremden der hat ja auch nen USB-TTL-RS232 drauf.
Hallo Guidol,
jetzt lauft das Image auf meinem PICO mit Terminal wunderbar. - Nochmals Danke für Deine Hilfe.
Zum besseren finden per Google (neben dem Thread hier) habe ich nun einen Wordpress-Eintrag angelegt fuer RunCPM auf dem Pico
Nebenbei habe ich auch RunCPM fuer den Pico mal mit der fast fertigen Arduino IDE 2.0.0rc9.2 compiliert
(Binary im Anhang)
Klasse, guidol!
/* Scherz */ Es würde mich nicht wundern, wenn es demnächst eine Version für Armbanduhren mit Touchscreen gibt!
Klasse, guidol!
/* Scherz */ Es würde mich nicht wundern, wenn es demnächst eine Version für Armbanduhren mit Touchscreen gibt!
Nunja - das Pyboard v1.1 auf dem es nun auch laeuft vertraegt sichernoch ein Display mit Touchscreen
Das Board selbst mit dem eingebauten MicroSD-Slot ist ja schon klein genug (4x3cm) fuers Handgelenk.
Da kommt aber dann wieder der Witz mit der ersten Digitaluhr und den zwei Koffern um die Ecke....
ZitatDie Uhr ist ja super klein, aber die Batterien brauchen zwei Reisekoffer..
Gruß Jörg
Als Info, da ich es bis jetzt nicht getestet hatte....
Das schalten der GPIOs geht auf auf dem RunCPM Pico Port, wie auf dem RunCPM Arduino DUE Port
D,h, ich konnte erfolgreich die gruene OnBoard-LED an Pin (GPIO) 25 mit den Beispiel-Programmen LED.BAS und LED.PAS aus dem ArduinoInterface-Ordner vom original RunCPM-github ein- und ausschalten.
Ich gehe mal davon aus, dass dies dann auch erfolgreich fuer andere GPIO-Pins/Nummern klappen wird
(habe leider gerade keine LEDs und passende Widerstaende zum testen)
BTW: Aufpassen mus man beim uebertragen der Sources, da die bei mir als Linux-Zeilenende-Format vorlagen.
Ich habe diese dann im NotePad++ auf Windows-Zeilenende (CR+LF) umgestellt.
Dann konnte ich diese auch per Zwischenablage in die MBASIC/Turbo-Pascal-Editoren pasten.
Da ich bei dem Projekt RC2040 (eine RC2014 Emulation auf dem Pico mit eigener Platine inkl. MicroSD-SLot) mitgemacht habe, habe ich fuer das Projekt RP2040 arduino-pico eine Boards-Defintion fuer RC2040 angelegt und eingereicht
Ein File mit Binary und Source gibts auch
Nachtrag zur RC2040 GPIO Liste....
// GPIO 6 RC2040-RED-User-LED
RunCPM Pico Update auf RP2040 arduino-core v2.5.2
Der Pico emuliert einen Arduino und auf dem Arduino läuft dann RunCPM?
Der Pico emuliert einen Arduino und auf dem Arduino läuft dann RunCPM?
Nicht ganz
Durch den arduino-pico bekommt der Pico sozusagen eine Befehls-API wie ein Arduino,
d.h. die Arduino Befehle werden auf die entsprechenden des Pico gemappt.
Es wird keine Rechenzeit fuer eine Arduino-Emulation genutzt/verschwendet.
ZitatRaspberry Pi Pico Arduino core, for all RP2040 boards
This is a port of the RP2040 (Raspberry Pi Pico processor) to the Arduino ecosystem.
It uses the bare Raspberry Pi Pico SDK and a custom GCC 10.3/Newlib 4.0 toolchain.
Wie guidol schon geschrieben hat, es wird die IDE vom Arduino verwendet. Der passende Cross Compiler und Boardsupport muss vorher installiert werden.
Es ist das gleiche Spiel wie für ESP32 usw.
Ich versuch mir gerade vorzustellen, wie "schnuckelig" klein solch ein Pico-CP/M wird, wenn man einen MicroSD-SPI-Reader/Writer nimmt und anstatt des normalen RPi Pico einen DFRobot Beetle RP2040
Die eine Seite (GP0-GP3) passt ja prima fuer das SD-SPI und VCC/GND liegen schon gegenueber an der USB-C-Buchse.
Mal sehen, wann der hier erhaeltlich sein wird
Im RunCPM Pico github Repository gibt es nun einen angepassten Sourcecode fuer folgende Picos:
- normaler Raspberry Pi Pico (SPI-config bei mir wie bei Picomite (MMBASIC))
- Extreme Electronics RC2040 Pico
und
- Cytron Maker Pi Pico
Der Cytron nutzt im Gegensatz zu den anderen beiden den SPI1-Bus anstatt den SPI0-Bus.
Das war ein wenig aufwaendig rauszufinden, wie man das im Zusammenhang mit der SdFat-Library
angeben/konfigurieren muss
Aber wenn man eine Konfig mal erstellt hat, die funktioniert - sind die anderen auch schnell erstellt und nutzen andere SPI-Pins (und der Cytron den SPI1-Bus fuer den onBoard-MicroSD-Slot).
compiled with RP2040 Arduino-Core v2.5.4 and 50Mhz SDCard-Init
(klappt hier, und bei Euch?)
Wenn ich wuesste, warum es mal nur mit 19Mhz klappt und dann wieder mit den max. 50Mhz...
Auch wenn die Ladezeiten nicht schneller werden
Update auf "Internal CCP v2.6"
Es kommt etwas mehr Bewegung (Fehlerbehebung/Features) gerade in die Entwicklung
dehalb gab es einen Versionssprung auf RunCPM v5.8
"TestDrive"-v6.0 fuer den Pico - also eher Proof-of-Concept
ein paar Commits weiter... vom 11.10.2022
RunCPM auf dem Pico-W nutzt den selben Source wie der Pico- nur muss man die Definiton fuer die HDD-LED
(die gruene LED onboard) von GPIO25 auf GPIO32 (GPIO32 laeuft nach dem Netz ueber den WLAN-Chip) aendern.
Im Source aendert sich das durch
// Raspberry Pi Pico - normal (LED = GPIO25)
// #include "hardware/pico/pico_sd_spi.h"
// Raspberry Pi Pico W(iFi) (LED = GPIO32)
#include "hardware/pico/pico_w_sd_spi.h"