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 !
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
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
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.
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.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang