Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?

Wenn unter den anderen Software-Themen kein passendes dabei ist oder wenn das Thema mehrere Bereiche überspant, dann versuche es hier einmal.
Antworten
Benutzeravatar
lab-freund
kann c't-Lab-Module konstruieren
kann c't-Lab-Module konstruieren
Beiträge: 109
Registriert: 23.01.2015, 20:27

Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?

Beitrag von lab-freund »

Hallo Freunde des c't-labs,

welche Werkzeuge sind erforderlich, wenn man den C-Code der Module modifizieren und kompilieren will?

Mich interessiert die "Toolchain" für das Altbetriebssystem Windows 7.

Vielen Dank!
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 953
Registriert: 25.01.2008, 23:34

Re: Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?

Beitrag von psclab38 »

Hi!

Als Minimum brauchst Du den avr-gcc oder alternativ eine IDE z. B das "Microchip Studio for AVR and SAM devices". Kann man beides auf der Microchip-Seite runterladen. Microchip hat ja vor geraumer Zeit Atmel übernommen. Das sollte alles auf Win 7-11 laufen.

Ich meine mich erinnern zu können, dass ich zuletzt mit dem avr-gcc 3.7.0 [EDIT: es war die 3.6.2] compiliert habe, es gibt aktuell die Version 4.0.0. Das sind zumindest die Microchip Versionsnummern.

Die verwendenten Compileroptionen kriegen wir notfalls aus meinen Unterlagen raus.

Welches Modul möchtest Du compilieren und was möchtest Du ändern?

Grüße
Paul
Benutzeravatar
lab-freund
kann c't-Lab-Module konstruieren
kann c't-Lab-Module konstruieren
Beiträge: 109
Registriert: 23.01.2015, 20:27

Re: Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?

Beitrag von lab-freund »

Hallo Paul,

ich möchte gerne ändern, dass die Feineinstellung des DCG-Moduls nicht timergesteuert wieder auf die Grobeinstellung zurückspringt, sondern dass man stattdessen durch einen weiteren Druck auf den Drehgeber in den Grobmodus zurückspringt.

Gruß
Martin
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 953
Registriert: 25.01.2008, 23:34

Re: Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?

Beitrag von psclab38 »

Hi Martin,

hmm, das funktioniert bislang so, dass man nach einem Druck auf den Encoder die Dezimalstelle auswählt, dann wieder auf den Encoder drückt, um dann diese Dezimalstelle durch den Encoder einzustellen (ja, es springt auch von selbst nach einem Timout zurück). Es gibt bisher keine "Grob- oder Feineinstellung" beim DCG.

Verstehe ich da was falsch?

Grüße
Paul
Benutzeravatar
lab-freund
kann c't-Lab-Module konstruieren
kann c't-Lab-Module konstruieren
Beiträge: 109
Registriert: 23.01.2015, 20:27

Re: Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?

Beitrag von lab-freund »

Hallo Paul,

da muss ich aber noch einmal genau hingucken, ich habe 2 DCGs, einmal mit der Pascal- und einmal mit der C-Firmware!
Melde mich noch mal!

Ich wünsche Dir und den Deinen ein frohes und besinnliches Weihnachtsfest!

Gruß
Martin
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 953
Registriert: 25.01.2008, 23:34

Re: Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?

Beitrag von psclab38 »

Hi Martin,

ich hoffe, alle hatten schöne Feiertage und wünsche allen ein gutes neues Jahr!

Ja, bitte schau nochmal nach. Für Verbesserungen und Fehlerbehebungen bin ich immer zu haben!

Viele Grüße
Paul
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 953
Registriert: 25.01.2008, 23:34

Re: Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?

Beitrag von psclab38 »

Hallo in die Runde,

ich habe mir mal diesen Thread wieder hervorgeholt und meinen Computer in Sachen C-Firmware Quellen, Compiler und Git auf den aktuellen Stand gebracht. Nach zwei Rechner-Umzügen in den letzten Jahren war ich mir nicht so ganz sicher ob, noch alles da ist und auch läuft. Aber im Prinzip habe ich weitgehend gute Nachrichten:

Die Quellen kompilieren auch mit den beiden aktuellen avr-gcc Compilern, die Microchip bereitstellt: V3.7.0 und V4.0.0. mit den folgenden Details:
a) Ich habe mir nur die von mir gepflegten Sourcen ADA, DCG2, DDS, DIV, EDL2 und FPGA angesehen.
b) Zuletzt (2020) habe ich die Version 3.6.2 verwendet, alle Sourcen lassen sich auch mit der Version 3.7.0 compilieren.
c) Mit der Version 4.0.0 gibt es Probleme, die aber nicht im Compiler liegen, sondern in den Quellen. Der neue Compiler ist nur etwas pingeliger, und das zurecht, er hat auch zwei Fehler und eine uneindeutige Sitatution gefunden. Ich habe inzwischen alle problematischen Quellen (ADA, FPGA) wieder so auf Stand gebracht, dass sie auch compilieren.

Ich muss mir das aber nochmal in Ruhe ansehen; eigentlich möchte ich die Korrekturen, und die neuen Hexfiles vor dem Hochladen auch testen.

Damit zum zweiten Teil der Nachricht.

Die Frage von Martin hat mich dazu gebracht, ein Batchfile zum Compilieren für jedes Modul zusammenzustellen, das im Moment so aussieht:

Code: Alles auswählen

@echo off

rem ********************************************
rem Select avr-gcc version
rem ********************************************
rem set VERSION=3.6.2.1778
rem set VERSION=3.7.0.1796
set VERSION=4.0.0.52

rem ********************************************
rem Set the path to the avr-gcc toolchain
rem ********************************************

set AVRGCCPATH=c:\AVR8GCC\%VERSION%\avr8-gnu-toolchain

rem ********************************************
rem Set the project parameters
rem ********************************************

set TARGETNAME=DCG2

set MCU=atmega32
set F_CPU=16000000UL

set DEFINES=
rem set DEFINES=-DDUAL_DAC

set SOURCES=uart.c dcg.c dcg-hw.c dcg-panel.c dcg-parser.c encoder.c i2c.c i2creg.c lcd.c parser.c timer.c dcg-hw-asm.S

rem ********************************************
rem Let's compile and convert
rem ********************************************

echo on

"%AVRGCCPATH%\bin\avr-gcc.exe" -mmcu=%MCU% -I. -gdwarf-2 -DF_CPU=%F_CPU% -DUART_2X -DUART_BAUDRATE=38400 -I "%AVRGCCPATH%\avr\include" -Os -mcall-prologues -funsigned-char -funsigned-bitfields -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -fno-inline-small-functions -fno-split-wide-types -fno-tree-scev-cprop -ffreestanding -Wall -Wextra -Werror -Wstrict-prototypes %OPTION% -std=gnu99 -Wl,--relax,--gc-sections,-Map=%TARGETNAME%_%MCU%%DEFINES%.map,--cref,-u,vfprintf -MD -MP %SOURCES% --output %TARGETNAME%_%MCU%%DEFINES%.elf -lprintf_flt -lm 

"%AVRGCCPATH%\bin\avr-objcopy" -O ihex -R .eeprom %TARGETNAME%_%MCU%%DEFINES%.elf %TARGETNAME%_%MCU%%DEFINES%_Firmware.hex

@echo off

"%AVRGCCPATH%\bin\avr-size" -C --mcu=%MCU% %TARGETNAME%_%MCU%%DEFINES%.elf
rem "%AVRGCCPATH%\bin\avr-size" -G %TARGETNAME%_%MCU%%DEFINES%.elf

pause
Man kann den Pfad auf den bzw. die Compiler oben einstellen und dann bei den Parametern "DEFINES" wählen, ob man die einfache DAC-Variante oder den Dual-DAC hat. Die Quellen werden im gleichen Verzeichnis wie das Batchfile erwartet.

Das funktioniert auch schon sehr schön, nur hat sich leider jemand beim Tool "avr-size" gedacht, er müsse mal die Kommandozeilenparameter ändern. Damit geht der "avr-size" vom Compiler V4.0.0 nur mit "-G" und gibt leider nicht so schön die Summe des Flash und des RAM aus, wie der alte. Man kann den alten aber auch für das elf-File des neuesten Compilers verwenden.

Ich stelle mir vor, dass ich dann für jedes der genannten Module auch dieses Batchfile auf SourceForge mit zur Verfügung stelle, dann gibt es auch kein Raten zu den Compileroptionen.

Die Codegrößen unterscheiden sich zwischen den verschiedenen Versionen (ich habe derzeit fünf in der Liste) nicht wirklich. Da ist wohl die Luft schon weitestgehend raus. Aber wie man sieht gibt es durchaus Verbesserungen, die noch Fehler finden. Ich bin aber erstaunt, dass nur eine Handvoll Änderungen an den Quellen nötig war, nach mindestens 6 Jahren Pause.

Wer noch Ideen oder Wünsche hat, bitte melden!

Bis demnächst.
Paul
Antworten