Forum: Compiler & IDEs winAVR + atmega328pb


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von grundschüler (Gast)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
wie wäre es mal mit einer aktuellen toolchain ?

von Johann L. (gjlayde) Benutzerseite


Bewertung
1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-2 lesenswert
nicht 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


Bewertung
1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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


Bewertung
1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
conf-Datei findet sich hier:
https://github.com/watterott/ATmega328PB-Testing

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

von m.n. (Gast)


Bewertung
-2 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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

Antwort schreiben

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

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.