Forum: Compiler & IDEs winAVR + atmega328pb


von grundschüler (Gast)


Lesenswert?

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.

von TestX (Gast)


Lesenswert?

wie wäre es mal mit einer aktuellen toolchain ?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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...

von grundschüler (Gast)


Lesenswert?

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:

von grundschüler (Gast)


Lesenswert?

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.

von grundschüler (Gast)


Lesenswert?

"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???

von Karl M. (Gast)


Lesenswert?

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 !

von grundschüler (Gast)


Lesenswert?

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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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

von grundschüler (Gast)


Lesenswert?

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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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.

von grundschüler (Gast)


Lesenswert?

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

von Ingo Less (Gast)


Lesenswert?

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.)!

von grundschüler (Gast)


Lesenswert?

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.

von grundschüler (Gast)


Lesenswert?

conf-Datei findet sich hier:
https://github.com/watterott/ATmega328PB-Testing

man glaubt es nicht, aber die led blinkt...

von m.n. (Gast)


Lesenswert?

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.

von grundschüler (Gast)


Lesenswert?

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.

von Steinwech (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.