Ich arbeite mit winAVR2010 und wollte auf den Atmega328pb umsteigen. Läuft leider nicht. Nach dieser Anleitung die toolchain geändert: Beitrag "WinAVR und neue Toolchain" winAVR scheint zu funktionieren. Nur leider kennt das Programm den pb nicht. iom328pb.h ist nicht vorhanden. Wenn man diese Datei hinzufügt, fehlt irgendwas wie crm328p.o. Es gibt eine Datei specs-atmega328pb, die wohl damit was zu tun haben muss, nur was man damit machen soll, ist mir leider völlig unklar. # # Auto-generated specs for AVR device atmega328pb (core avr5, 16-bit SP) # # Generated by : ./gcc/config/avr/gen-avr-mmcu-specs.c # Generated from : ./gcc/config/gcc.c # ./gcc/config/avr/specs.h # ./gcc/config/avr/avrlibc.h # Used by : avr-gcc compiler driver # Used for : building command options for sub-processes # # See <https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html> # for a documentation of spec files. # If you intend to use an existing device specs file as a starting point # for a new device spec file, make sure you are copying from a specs # file for a device from the same core architecture and SP width. # See <https://gcc.gnu.org/gcc-5/changes.html> for a description # of how to use such own spec files. *avrlibc_startfile: crtatmega328pb.o%s *avrlibc_devicelib: %{!nodevicelib:-latmega328pb} *cc1_n_flash: %{!mn-flash=*:-mn-flash=1} .... Bin für jede Hilfe dankbar.
Mit welchem Teil der Doku bzw. was in den Links beschrieben ist gibt's denn Probleme? TestX schrieb: > wie wäre es mal mit einer aktuellen toolchain ? Diese spec-Files werden erst ab avr-gcc v5 verwendet, so alt kann die Toolchain also nicht sein...
die toolchain ist aktuell, Dateien vom 20.6.2016. Das ist die Fehlermeldung: Compiling C: main.c avr-gcc -c -mmcu=atmega328pb -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wa,-adhlns=./main.lst -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o In file included from main.c:7:0: c:\winavr-20100110\avr\include\avr\io.h:623:6: warning: #warning "device type not defined" [-Wcpp] # warning "device type not defined" ^ In file included from c:\winavr-20100110\avr\include\avr\io.h:99:0, from main.c:7:
Ich habe jetzt die toolchain 4.9.2 in at-studio 6.1 - welches ich sonst nicht benutze - kopiert. der 328pb wird immer noch nicht angezeigt. jetzt müsste ja irgendwie "Auto-generated specs for AVR device atmega328pb (core avr5, 16-bit SP)" aktiviert werden? Wie bekomme ich den 328pb ins Studio???? Bin mental kurz vor dem Umstieg auf STM.
"Download and install Atmel Studio version 6.2 SP2 (6.2.1563) or later versions. 2. ATmega328PB Part Pack for Atmel Studio 6.2 available in the Atmel Studio link has to be installed. This bundle adds support for ATmega328PB device in Atmel Studio 6.2.SP2. Note: There is no need to install part pack for Atmel Studio future versions. 3" geht mit 6.1 gar nicht???
grundschüler schrieb: > "Download and install Atmel Studio version 6.2 SP2 (6.2.1563) or later versions. > 2. ATmega328PB Part Pack for Atmel Studio 6.2 available in the Atmel > Studio link has to be installed. > This bundle adds support for ATmega328PB device in Atmel Studio 6.2.SP2. > Note: There is no need to install part pack for Atmel Studio future versions. > geht mit 6.1 gar nicht??? Genau das steht dort !
grundschüler schrieb: > ATmega328PB Part Pack for Atmel Studio 6.2 danke, findet sich hier: http://www.atmel.com/tools/studioarchive.aspx wenn es funktioniert, werde ich die toolchain mit den pb-files in winAVR kopieren.
Für den Hausgebrauch kann doch einfach für einen unterstützten ATmega328* compiliert werden. Die einzige hier relevante Änderung dürfte die Device-ID sein, die bestenfalls das Flash-Tool (z.B. avrdude o.ö.) interessiert. Dem Compiler ist das konkrete Device eh schnurz... Was ein eigenes specs-File für den ATmega328PB angeht, hätte es gelohnt, bis zum Ende der Datei zu lesen. Da ist exakt beschrieben, wie die cpp-spec anzupassen ist, damit AVR-LibC in avr/io.h auf den entsprechende Device-Header abbilden kann. Die Warnung kommt nämlich aus genau diesem Header:
1 | # AVR-LibC's avr/io.h uses the device specifying macro to determine |
2 | # the name of the device header. For example, -mmcu=atmega8a triggers |
3 | # the definition of __AVR_ATmega8A__ and avr/io.h includes the device |
4 | # header 'iom8a.h' by means of: |
5 | # |
6 | # ... |
7 | # #elif defined (__AVR_ATmega8A__) |
8 | # # include <avr/iom8a.h> |
9 | # #elif ... |
10 | # |
11 | # If no device macro is defined, AVR-LibC uses __AVR_DEV_LIB_NAME__ |
12 | # as fallback to determine the name of the device header as |
13 | # |
14 | # "avr/io" + __AVR_DEV_LIB_NAME__ + ".h" |
15 | # |
16 | # If you provide your own specs file for a device not yet known to |
17 | # AVR-LibC, you can now define the hook macro __AVR_DEV_LIB_NAME__ |
18 | # as needed so that |
19 | # |
20 | # #include <avr/io.h> |
21 | # |
22 | # will include the desired device header. For ATmega8A the supplement |
23 | # to *cpp would read |
24 | # |
25 | # -D__AVR_DEV_LIB_NAME__=m8a |
26 | |
27 | |
28 | *cpp: |
29 | -D__AVR_ATmega328P__ -D__AVR_DEVICE_NAME__=atmega328p |
30 | |
31 | # End of file |
Johann L. schrieb: > Für den Hausgebrauch kann doch einfach für einen unterstützten > ATmega328* compiliert Die Device-id hätte ich in der iom328p.h auf pb geändert. Nützt aber nichts, da es mir um die zusätzlichen Timer geht. > Da ist exakt beschrieben, wie die cpp-spec anzupassen ist, wie crm328pb.o generiert werden soll, erschließt sich mir nicht, deswegen hatte ich gefragt. Oft ist Fragen der richtige Weg zur Selbsthilfe, habe den richtigen download ja jetzt gefunden. Das ganze ist jedenfalls umständlich und nervt. der Part Pack ist übrigens auch für as6.1 - upgrade auf 6.2 wäre gar nicht nötig gewesen. Das schöne an den AVRs ist, dass es mit winAVR recht flott geht. Bevor ich mir das studio antue, steige ich lieber auf STM um.
grundschüler schrieb: > wie crm328pb.o generiert werden soll, erschließt sich mir nicht, > deswegen hatte ich gefragt. Das ist der Startup-Code; falls das neue Device keine anderen IRQ-Vektoren hat, funktioniert eine Kopie des CRT für ATmega328*. Im installierten Compiler ist das i.d.R. in avr/lib/avr5. Bei neueren Versionen heißt die Datei crtatmega328*.o, bei älteren Versionen noch crtm328*.o.
6.2 hat 3 toolchains: native\3.4.2.1002+3.4.1061 snapshot\3.4.1091 in letzterer steht zwar jetzt die iom328pb.h, der pb wird trotz Auswahl der toolchain immer noch nicht angezeigt. Fazit: Wechsel zu STM
Seit wann ist die Atmel Toolchain von der Version des Atmel Studios abhängig? Ich verwende das 6.2. mit der aktuellen Toolchain (3.5.3.)!
studio geht nicht aber die toolchain vom Studio in winAVR kopiert scheint zu funktionieren. Jetzt hapert es an avrdude: System wide configuration file is "C:\WinAVR-20100110\bin\avrdude.conf" avrdude: AVR Part "atmega328pb" not found. Valid parts are: t10 = ATtiny10 [C:\WinAVR-20100110\bin\avrdude.conf:15443] Wo bekomme ich die Informationen für die conf-Datei her? den 328b einfach zu kopieren ist mir zu riskant.
conf-Datei findet sich hier: https://github.com/watterott/ATmega328PB-Testing man glaubt es nicht, aber die led blinkt...
grundschüler schrieb: > studio geht nicht Mit AS6.2 klappt es nicht, den 328PB direkt zu verwenden. Mit AS7 ist es hingegen kein Problem: einfach auswählen. Wie Du immer wieder angedeutet hattest, dürfte ein Cortex-M0 letztlich die bessere Wahl sein. Auch, wenn die Umstellung etwas Zeit benötigt, die Vorteile sind einfach zu deutlich.
m.n. schrieb: > Mit AS7 ist es > hingegen kein Problem: einfach auswählen. Habe ich auch probiert. Problem: läuft nicht mit XP. Windows7 habe ich im Büro ein halbes Jahr getestet. Das kostet gegenüber XP einfach zu viel Lebenszeit.
Wie wäre es denn mit diesem nützlichen Hinweis - zumindest für Freunde von avr-gcc und avrdude: https://gist.github.com/goncalor/51e1c8038cc058b4379552477255b4e1
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.