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!
Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?
- lab-freund
- 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?
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
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
- lab-freund
- 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?
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
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
Re: Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?
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
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
- lab-freund
- 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?
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
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
Re: Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?
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
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
Re: Welche Toolchain ist für Modifikationen der C-Firmware erforderlich?
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:
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
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
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
