Frage zum MapleCUL Bootloader + Lötkolben TS100

Begonnen von juergs, 20 Juni 2019, 11:36:43

Vorheriges Thema - Nächstes Thema

Telekatz

Nein, der Maple hat die LED an PB1, der Blue Pill an PC13 und der Black Pill an PC12.

Mit der angehängten Version braucht man die zweite Taste nicht mehr. Zweimal innerhalb einer Sekunde Reset betätigt startet den Bootloader. Funktioniert aber wegen der unterschiedlichen USB Reset Schaltung auch nicht mit dem Blue Pill.

juergs


juergs

 :)

Hallo Telekatz,

klasse funktioniert!

USB Laufwerk geht unter Win10 auf!

:D

juergs

#18
Wenn ich eine Arduino kompilierte Firmware ins Laufwerk lege, reagiert es wie erwartet.
Der Bootloader führt aber den ArduinoCode auch nach einem Reset nicht aus.
Muss da ein Adress-Offset für den Linker hinzugefügt werden? 

Memory Configuration

Name             Origin             Length             Attributes
ram              0x20000c00         0x00004400         xrw
rom              0x08005000         0x0001b000         xr
*default*        0x00000000         0xffffffff

juergs

#19

Telekatz

Zitat von: juergs am 23 Juni 2019, 15:00:53
Muss da ein Adress-Offset für den Linker hinzugefügt werden? 
Das Programm muss an der Adresse 0x8002000 starten.

juergs

#21
Ah, klar!
/edit: Das war auch das Problem in der ersten Version des Bootloaders ... 
Die sollte dann auch funktionieren....

Arduino startet @rom   0x08005000.
Mal schauen, wie man das in Arduino konfigurieren kann.

Vielen Dank! 

/Edit: Moving the start address to 0x8005000 (or 0x8002000)

  C:\Users\js\Documents\Arduino\hardware\Arduino_STM32\STM32F1\boards.txt (4 hits)
Line 26: mapleMini.menu.bootloader_version.original.build.vect=VECT_TAB_ADDR=0x8005000
Line 70: maple.build.vect=VECT_TAB_ADDR=0x8005000
Line 83: mapleRET6.build.vect=VECT_TAB_ADDR=0x8005000
Line 121: microduino32_flash.build.vect=VECT_TAB_ADDR=0x8005000


Memory Configuration

Name             Origin             Length             Attributes
ram              0x20000c00         0x00004400         xrw
rom              0x08002000         0x0001ec00         xr
*default*        0x00000000         0xffffffff


juergs

#22
Hallo Telekatz,

habe in Arduino die Maple Linker-Konfiguration auf ROM: 0x8002000 gesetzt...
... und siehe da!

Es geht!!!! Super!

Leider ist das nicht mehr Standard-Konform, aber immerhin!

Ich vermute, die Start-Adresse 0x8002000 macht den zusätzlich gewonnenen Flash-Bereich von 0x3000 Bytes für die Anwendung nutzbar ...

Hier meine Änderungen, die ich dafür durchgeführt habe:

  • C:\Users\js\Documents\Arduino\hardware\Arduino_STM32\STM32F1\boards.txt  => alle Vorkommnisse von  0x8005000 durch 0x8002000  ersetzt
  • C:\Users\js\Documents\Arduino\hardware\Arduino_STM32\STM32F1\variants\maple_mini\ld\flash.ld  => nichts gefunden ... aber in dessen include:
  • C:\Users\js\Documents\Arduino\hardware\Arduino_STM32\STM32F1\variants\maple_mini\ld\mem-flash.inc

Neu mem-flash.inc:
MEMORY
{
  ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K
  rom (rx)  : ORIGIN = 0x08002000, LENGTH = 120K
}


Original stand drin:

MEMORY
{
  ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K
  rom (rx)  : ORIGIN = 0x08005000, LENGTH = 108K
}


und voilá: "special", aber geht!

Allerdings würde das, (natürlich) den Wunsch aufwerfen: StartAdresse 0x08005000 um im Arduino-Standard bleiben zu können. ;D ;)

Kleine Korrektur: 108K + 0x3000 = 120K (!)


Telekatz

Die Startadresse ist deshalb 0x8002000, um mit dem bisherigen MapleCUN Bootloader kompatibel zu sein.

Die Änderungen an dem Bootloader kann man hier finden. Damit kannst du dir auch einen Bootloader für eine andere Startadresse bauen.

juergs

#24
Hallo Telekatz,
besser geht es nicht.

Mit welcher Toolchain? IAR? VSCode integriert?

Vielen Dank + Grüße!

Jürgen

/edit: environment:

            PREFIX: "~/toolchains/gcc-arm-embedded/bin/arm-none-eabi


juergs

#26
Da die Arm-Toolchain nicht mal so einfach (unter Windows) zu installieren ist,
habe ich mich für die Docker-Lösung entschieden und werde diesen Weg über Docker ausprobieren:
https://dev.to/dalimay28/using-docker-for-embedded-systems-development-b16

/edit:
Kleine Ergänzung: mir der WSL (Windows Subsystem für Linux) explizip Ubuntu, geht der Compile mit der ARM-Toolchain rel. einfach, wenn man den Kompiler und die Tools explizit mit Pfad zur spezifischen Toolchain im Make-File versieht.  ;) :)
https://forum.fhem.de/index.php/topic,106278.msg1043378.html#msg1043378
https://forum.fhem.de/index.php/topic,106278.msg1043704.html#msg1043704
https://github.com/juergs/maple_binaries/blob/main/README.md