Forum: Mikrocontroller und Digitale Elektronik AVR32 online video


von Gast (Gast)


Lesenswert?

Hi Forum,
ein neuer Podcast ist online auf www.avrtv.com.
Gezeigt wird diesmal kurz das neue AVR32 Studio.

Have fun

von Sebastian (Gast)


Lesenswert?

Cool danke.
Weiß jemand ob (und wenn ja wo) (und wenn nicht wann) man einen AVR32 
bereits "nackt" bekommt also ohne das Board?

von Robert S. (razer) Benutzerseite


Lesenswert?

Digikey

von Benedikt K. (benedikt)


Lesenswert?

Aber nur die AT32AP im Bastler unfreundlichen BGA Gehäuse...
Die AT32UC mit internem Flash sollten irgendwann dieses Jahr vermutlich 
auch noch kommen. Für 5-8€ bei großen Stückzahlen, also ähnlich wie die 
ARM controller

von Clifford (Gast)


Lesenswert?

Die AT32AP7000 kosten um die 20€ Netto bei Abnahme einer VPE mit 90 
Stück. Zumindest war das der letzte Preis den ich bekommen hab. Bissel 
arg teuer. Und BGA... wer's kann.

Der AT32AP7001 is ja im TQFP, aber leider abgespeckt (ich glaub kein 
Ethernet)

von Stekker (Gast)


Lesenswert?

Gibt es denn schon eine GCC-Portierung für den AVR32 oder einen anderen 
funktionierenden C++ Compiler?

von Stekker (Gast)


Lesenswert?

Ja gibt es:
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4118
Allerdings ohne C++ Standard Library. :( Da bleib ich lieber bei ARM.

von Clifford (Gast)


Lesenswert?

> Allerdings ohne C++ Standard Library. :( Da bleib ich lieber bei ARM.

Wo steht das?

von Simon K. (simon) Benutzerseite


Lesenswert?

Stekker wrote:
> Allerdings ohne C++ Standard Library. :( Da bleib ich lieber bei ARM.

Hmmmmm?

Ich zitiere aus deinem Link:

> C-libraries for development of C/C++ programs


PS: Ich glaub son STK1000 werde ich mir mal holen. Einer von den 
"Homies" hier hat sich doch bereits so eins zugelegt, oder? Ich glaube 
Benedikt wars. Kann man mit dem Ding eigentlich auch debuggen? Sieht auf 
dem Video irgendwie danach aus...

von Simon K. (simon) Benutzerseite


Lesenswert?

Simon Küppers wrote:
> Kann man mit dem Ding eigentlich auch debuggen? Sieht auf
> dem Video irgendwie danach aus...

Okay habs schon gesehen, der hat da ein JTAGICE mkII dran :-)

von Benedikt K. (benedikt)


Lesenswert?

Nein, ich habe leider noch keines, der Preis hat mich bisher davon 
abgehalten. Sobald es die kleine Version mit Flash gibt, werde ich mir 
aber ein paar von den AVR32 holen.

von Simon K. (simon) Benutzerseite


Lesenswert?

Ah, hm dann war das wohl wer anders. Hab mich grad mal nach den Dingern 
etwas schlau gemacht. Das ATSTK1000 kostet 500 (!!!) Dollar. Auha! 
Nenenene..

Aber ich überlege mir grad ernsthaft mir ein ATEVK1100 zuzulegen. Das 
ist mit 150€ noch gut beschaffbar. Und das Dingen kann echt ne Menge. Am 
meisten reizt mich das SDRAM Interface(bis 128MB!), das Onboard MAC 
(Ethernet) Interface und der USB (Host-fähig!) Gedönsel. Außerdem sind 
da echt ne Menge GPIOs dran, die zudem auch noch 5V tollerant sind.

Ich guck grad aber noch. So wie es scheint hat das ATEVK1100 keinen 
Programmierer drauf, und wenn ich das richtig sehe lässt sich der 
AVR32UC3A nur per JTAG programmieren. Und son JTAGICE ist auch nicht 
gerade das billigste :(

Edit: Grad gelesen: Das/Die eingebaute(n) UART(s) haben die Möglichkeit 
die Daten manchester kodiert auszugeben, auch ne tolle Sache! Außerdem 
noch IrDA moduliert.

Auszug vom OnBoard Ethernet-Controller:

> • Automatic pad and CRC generation on transmitted frames
> • Address checking logic to recognize four 48-bit addresses

PadBytes einzufügen ist auch etwas neues. Das kann so'n popeliger 
bastelfreundlicher Realtek8019 soweit ich weiß nicht. Und dass man sich 
4 MAC-Adressen einstellen kann (versteh ich doch richtig so, oder?) habe 
ich auch bisher noch nicht gesehen.

von Simon K. (simon) Benutzerseite


Lesenswert?

Um meine Frage zur Programmierung zu beantworten:

Es gibt da anscheinend eine Software womit man über USB und RS232 den 
Flash beschreiben kann.
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3886
Aber braucht man dafür nicht ne Art Bootloader? Oder irgendein kleiner 
anderer Mikrocontroller der dann die Daten annimmt und sie in den AVR32 
flasht? *grübel

Ansonsten bliebe nur noch das Programmieren über JTAG. Und ein JTAGICE 
mkII kostet satte 350€!

PS: Hier etwas stuff dazu von avrfreaks.net: 
http://avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=50465

von Clifford (Gast)


Lesenswert?

Das EVK1100 versuch ich schon seit Wochen zu kriegen. Nix zu machen. Die 
UC3A gibts mit viel Glück Ende des Jahres.

Ich hab mir erstmal ein NGW100 geholt. Auch ein geiles Teil
http://shop.embedit.de/product__590.php

von Simon K. (simon) Benutzerseite


Lesenswert?

Clifford wrote:
> Das EVK1100 versuch ich schon seit Wochen zu kriegen. Nix zu machen. Die
> UC3A gibts mit viel Glück Ende des Jahres.
>
> Ich hab mir erstmal ein NGW100 geholt. Auch ein geiles Teil
> http://shop.embedit.de/product__590.php

Ich hab mir grad mal das NGW100 angeschaut. Das ding ist irgendwie etwas 
oversized für mich. Das hat ja echt nichts mehr mit dem klassischen AVR 
am Hut (Soll es aber auch nicht). Das kommt ja quasi mit Linux 
ausgeliefert... Nene, da kann ich ja direkt Anwendungen für meinen 
Core2Duo 1,8Ghz hier schreiben.

Ich wollte schon noch was mit Flash, wo man den Chip selber noch 
konfigurieren kann und die Register selbst beschreibt...

Schade, werde ich wohl auch warten müssen.

PS: Wo hast du denn überall versucht das EVK1100 zu bekommen, und wann 
war das?

von Mighty (Gast)


Lesenswert?

@Clifford
Schaut sehr gut aus; wie wird es programmiert?
Also aus dem AVR32 Studio mit JTAG? Funktioniert auch ein billig
programmer oder nur JTAGICE ?

von Florian (Gast)


Lesenswert?

Ich bastele hier lustig mit dem NGW100. Den kannst Du auch mit dem 
AVR32STUDIO 'nackt' programmieren, d.h. ohne Linux. Außerdem gab es 
irgendwo einen Deal bzgl. dem JTAGICE mkII. Das war im Bundle mit dem 
STK500 (leider nachdem ich schon teures Geld dafür ausgegeben hatte):

http://www.mikrocontroller.net/topic/69544


Hier

Beitrag "AT32AP7000 - USB Controller"

habe ich schon einmal ein wenig Quelltext veröffentlicht, der ohne Linux 
auf dem NGW100 auskommt.

von Clifford (Gast)


Lesenswert?

> PS: Ich glaub son STK1000 werde ich mir mal holen.

Hm, du wolltest dir das STK1000 holen und findest das NGW100 oversized? 
Da komm ich jetzt nicht hinterher

> Schaut sehr gut aus; wie wird es programmiert?

Gnu Toolchain und am besten auch das AVR32 Studio installieren (am PC). 
Ganz normal, wie unter Linux, ein Programm schreiben. Fertiges Programm 
per FTP hochladen.

Das NGW100 hat auch einen Bootloader namens U-Boot. Damit kann man sogar 
ohne Linux das Flash löschen und via FTP neue Programme ins Flash 
schreiben.

Den JTAGICE mkII braucht man nur zum Debuggen oder wenn man das Flash 
komplett geschossen hat

von Clifford (Gast)


Lesenswert?

Hier ein kleines Tutorial was man mit dem so machen kann
http://www.wiki.elektronik-projekt.de/w/index.php/NGW100_First_Steps

von Gast (Gast)


Lesenswert?


von Simon K. (simon) Benutzerseite


Lesenswert?

Clifford wrote:
>> PS: Ich glaub son STK1000 werde ich mir mal holen.
>
> Hm, du wolltest dir das STK1000 holen und findest das NGW100 oversized?
> Da komm ich jetzt nicht hinterher


Nö, ich wollte mir das EVK1100 holen, wie ich im Nachhinein festgestellt 
habe. Die AVR32AP7 Serie ist mir etwas zu High-End ;)

Deswegen wollte ich auch wissen, wo du probiert hast dein EVK1100 zu 
kaufen. Ich hab zwei oder drei Distributoren gefunden, die das im Shop 
haben. Was das heißen mag - keine Ahnung.

von Clifford (Gast)


Lesenswert?

> Nö, ich wollte mir das EVK1100 holen,

Das mußte dann aber auch sagen ;)


ich hab bei 4 Distributoren angerufen. Sind bestellt, aber noch nicht 
lieferbar. KW32 soll was kommen

von Power (Gast)


Lesenswert?

Die SW gibt's komplett bei http://www.atmel.no/beta_ware/
Aber 256MB sind reichlich, also Downloadzeit mitbringen! :)

von Stekker (Gast)


Lesenswert?

Simon Küppers wrote:
> Ich zitiere aus deinem Link:
> > C-libraries for development of C/C++ programs

C-Libraries != C++ Libraries!

Entweder es gibt tatsächlich keine C++ Standard Libary in diesen 
Compiler oder die haben sich verschrieben. Hat mal jemand nachgeschaut?

von Florian (Gast)


Lesenswert?

Das ist doch der gcc, den die verwenden. Da kannst Du Dir im Fall, dass 
es das tatsächlich nicht gibt, den Kram einfach selbst kompilieren...

von Stekker (Gast)


Lesenswert?

So einfach ist das bei inoffiziellen Portierungen leider nicht. Beim 
MSPGCC kann ich auch nicht einfach die STL bauen. Da werde ich mit 
Tausenden von Fehlermeldungen bombardiert.

von Gast (Gast)


Lesenswert?

Hey, es gibt jetzt ein online Tutorial zum NGW auf avrtv.com!

Have fun

von Simon K. (simon) Benutzerseite


Lesenswert?

Argh, der interessante Teil kommt wohl erst im nächsten Part. Menno! 
Sieht aber interessant aus.

von Simon K. (simon) Benutzerseite


Lesenswert?

Sou, gestern ist mein EVK1100 angekommen. Wollte das ganze erstmal ohne 
JTAGICE mkII probieren. Manche Quellen sagen, dass es per USB-Bootloader 
gehen soll (DFU Class von Atmel). Aber ich krieg im AVR32 UC3 nicht den 
Bootloader gestartet. Die Docs vom Kit sagen, man soll den Joystick beim 
Reset gedrückt halten - geht nicht. Ich werd mal schauen ob ich irgendwo 
einen JTAGICE mkII auftreiben kann.

Nunja, ansonsten macht das Board aber einen sehr guten Eindruck. Das 
"Control Panel", was standardmäßig auf den Chip geflasht ist, macht auch 
nen tollen Eindruck ;) So konnte man wenigstens schon ein bisschen mit 
der Peripherie spielen.

ISP und IIC/I²C/TWI ist per 100mil (2,54mm RM) unbestückter Steckleiste 
herausgeführt. Die kompletten Ports aber als 50mil (1,27mm RM) ebenfalls 
unbestückter Steckleiste.

Nunja, ich hab mal Atmel eine E-Mail geschickt. Vielleicht wissen die 
ja, was vor sich geht.

von Robert S. (razer) Benutzerseite


Lesenswert?

Wo hast du das Board bestellt? Bei Digikey?

von Simon K. (simon) Benutzerseite


Lesenswert?

Von der Elmicro "filiale" in Detmold:
http://elmicro.com/de/atevk1100.html

von Simon K. (simon) Benutzerseite


Lesenswert?

Auf www.avrtv.com ist jetzt der interessante Teil des NGW100 online. 
Sieht ganz interessant aus.

von Matthias B. (Firma: 4D Engineering) (bauershias)


Lesenswert?

Hat jemand Infos darüber, wie viel Strom das Board (NGW) aufnimmt?

Habe im Forum einen Beitrag gefunden, in dem ca. 110 mA genannt wurden. 
Leider stand nichts dabei, unter welchen Bedingungen. Ich habe vor, das 
Board als Web-Interface für meine Rollosteuerung zu betreiben, d. h. 
eine Netzwerkschnittstelle muss dauernd in Betrieb sein.

Weiß jemand vielleicht, ob die Versorgungsspannung sich unter 9V 
reduzieren lässt? Laut Schaltbild 
http://www.avrfreaks.net/wiki/index.php/Documentation:NGW/NGW100_Power_system
müsste es eigentlich reichen ca. 5 V über J16 einzuspeisen.

von Thomas (Gast)


Lesenswert?

Hi Simon,

wie sieht es denn mit C++ Code bei deinem Board aus? Kannst du in der 
Software C-Programmer schreiben, die die STL benutzen (z.B. die vector 
Klasse)?

Außerdem würde es mich interessieren, ob man überhaupt sinnvoll (im 
Bezug auf die Code Größe eigener Klassen) C++ Programme dort schreiben 
kann. Ich hatte vor ein paar Monaten mal mit einem AVR Compiler (weiß 
gerade nicht mehr ob es ICC oder AVRGCC war) versucht ein 
objektorientiertes Programm mit 2 sehr einfach gestrickten Klassen 
(jeweils nur eine integer Variable) zu kompilieren. Das ging auch und 
hat sogar korrekt funktioniert - allerdings hatte eine nahezu leere 
Klasse schon 2kB an Code gehabt (wahrscheinlich wegen Default/Copy 
Konstruktoren, Destruktor usw.). Damit hatte sich dann die Frage nach 
objektorientierter Programmierung beim AVR für mich erledigt. Ich würde 
gern wissen, wie das mit den AVR32 Prozessoren aussieht, da ich aufgrund 
der Wartbarkeit größerer Programmer lieber objektorientiert arbeite.

Danke schonmal,
Thomas

von Simon K. (simon) Benutzerseite


Lesenswert?

Ich versteh nicht so ganz wo dein Problem liegt. Klassen aus der STL 
lassen sich wunderbar kompilieren.

Folgender simpler Code beispielsweise kompiliert ohne Probleme:
1
#include <string>
2
#include <iostream>
3
4
int main()
5
{
6
  std::string Test("Teststring");
7
  
8
  std::cout << Test;
9
  
10
  return 0;
11
}

Ich guck aber gerade noch, wo ich die Größe des eigentlichen Binaries, 
das im Nachhinein auf den Prozessor geflasht wird, finde.

von Thomas (Gast)


Lesenswert?

Hi,

es ist eigentlich weniger ein Problem als mehr meine Neugier :)
Insbesondere der Teil mit der Code Größe würde mich interessieren, da ja 
offenbar eine Implementierung der STL beiliegt.

Gruß,
Thomas

von Simon K. (simon) Benutzerseite


Lesenswert?

Ah, wusste garnicht, dass es ein avr32-size Tool gibt. Warum wird das 
nicht ins managed Makefile aufgenommen? :-(
1
D:\_Projekte\_avr32\cpptest\Debug>avr32-size -x main.o
2
   text    data     bss     dec     hex filename
3
   0x88    0x78     0x1     257     101 main.o

Das ist obiger Code kompiliert. Ist also nicht wirklich groß ;)

von Thomas (Gast)


Lesenswert?

Hi Simon,

wie sieht denn ein Vergleich folgender Möglichkeiten aus? Ich denke, 
dass das etwas aussagekräftiger ist, als ein einfaches ausgeben per 
cout.

----------Version in C++ mit Klasse----------

#include <iostream>
#include <vector>

class Test
{
  unsigned char value;
  Test() : value(0)
  {}

  Test(unsigned int value_) : value(value_)
  {}

  void print(void)
  {
    std::cout << value << ' ';
  }
};

int main()
{
  std::vector<Test> bla(50, Test(1));

  //Alternativ mit for Schleife
  /*
  std::vector<unsigned char> bla;
  for (unsigned int i=0; i<50; ++i)
  {
    bla.push_back(Test(1));
  }
  */

  for (unsigned int i=0; i<50; ++i)
  {
    bla[i].print();
  }
  std::cout << endl;

  return 0;
}

----------Version in C++----------

#include <iostream>
#include <vector>
#include <algorithm>

void print (int val)
{
  std::cout << val << ' ';
}

int main()
{
  std::vector<unsigned char> bla(50, 1);

  //Alternativ mit for Schleife
  /*
  std::vector<unsigned char> bla;
  for (unsigned int i=0; i<50; ++i)
  {
    bla.push_back(1);
  }
  */

  std::for_each (bla.begin(), bla.end(), print);
  std::cout << endl;

  return 0;
}

----------C-ähnliche Version in C++----------

#include <iostream>
#include <vector>

int main()
{
  unsigned char bla[50];
  for (unsigned int i=0; i<50; ++i)
  {
    bla[i] = 1;
  }

  for (unsigned int i=0; i<50; ++i)
  {
    std::cout << bla[i] << ' ';
  }
  std::cout << endl;
  return 0;
}


----------Version in C----------

#include <stdio.h>

int main()
{
  unsigned char bla[50];
  unsigned int i = 0;
  for (; i<50; ++i)
  {
    bla[i] = 1;
  }

  for (i=0; i<50; ++i)
  {
    printf("%d ", bla[i]);
  }
  printf("\n");
  return 0;
}

Ich hoffe mal, dass ich mich jetzt nicht vertippt habe :)
Es wäre sehr interessant, wenn du das mal ausprobieren könntest.

Danke schonmal im voraus,
Thomas

von Simon K. (simon) Benutzerseite


Lesenswert?

Etwas korrigiert (std::endl statt endl), folgende Ergebnisse (Debug 
Compilat)
1
#include <iostream>
2
#include <vector>
3
4
class Test
5
{
6
public:
7
  
8
  unsigned char value;
9
  Test() : value(0)
10
  {}
11
12
  Test(unsigned int value_) : value(value_)
13
  {}
14
15
  void print(void)
16
  {
17
    std::cout << value << ' ';
18
  }
19
};
20
21
int main()
22
{
23
  std::vector<Test> bla(50, Test(1));
24
25
  for (unsigned int i=0; i<50; ++i)
26
  {
27
    bla[i].print();
28
  }
29
  std::cout << std::endl;
30
31
  return 0;
32
}
1
D:\_Projekte\_avr32\cpptest\Debug>avr32-size main.o
2
   text    data     bss     dec     hex filename
3
   2288     366       1    2655     a5f main.o
1
#include <iostream>
2
#include <vector>
3
#include <algorithm>
4
5
void print (int val)
6
{
7
  std::cout << val << ' ';
8
}
9
10
int main()
11
{
12
  std::vector<unsigned char> bla(50, 1);
13
14
  std::for_each (bla.begin(), bla.end(), print);
15
  std::cout << std::endl;
16
17
  return 0;
18
}
1
D:\_Projekte\_avr32\cpptest\Debug>avr32-size main.o
2
   text    data     bss     dec     hex filename
3
   2296     403       1    2700     a8c main.o
1
#include <iostream>
2
#include <vector>
3
4
int main()
5
{
6
  unsigned char bla[50];
7
  for (unsigned int i=0; i<50; ++i)
8
  {
9
    bla[i] = 1;
10
  }
11
12
  for (unsigned int i=0; i<50; ++i)
13
  {
14
    std::cout << bla[i] << ' ';
15
  }
16
  std::cout << std::endl;
17
  return 0;
18
}
1
D:\_Projekte\_avr32\cpptest\Debug>avr32-size main.o
2
   text    data     bss     dec     hex filename
3
    276     148       1     425     1a9 main.o
1
#include <stdio.h>
2
3
int main()
4
{
5
  unsigned char bla[50];
6
  unsigned int i = 0;
7
  for (; i<50; ++i)
8
  {
9
    bla[i] = 1;
10
  }
11
12
  for (i=0; i<50; ++i)
13
  {
14
    printf("%d ", bla[i]);
15
  }
16
  printf("\n");
17
  return 0;
18
}
1
D:\_Projekte\_avr32\cpptest\Debug>avr32-size main.o
2
   text    data     bss     dec     hex filename
3
    136      64       0     200      c8 main.o

Hier nochmal im Überblick die 4 Varianten:
1
D:\_Projekte\_avr32\cpptest\Debug>avr32-size main.o
2
   text    data     bss     dec     hex filename
3
   2288     366       1    2655     a5f main.o
4
5
D:\_Projekte\_avr32\cpptest\Debug>avr32-size main.o
6
   text    data     bss     dec     hex filename
7
   2296     403       1    2700     a8c main.o
8
9
D:\_Projekte\_avr32\cpptest\Debug>avr32-size main.o
10
   text    data     bss     dec     hex filename
11
    276     148       1     425     1a9 main.o
12
13
D:\_Projekte\_avr32\cpptest\Debug>avr32-size main.o
14
   text    data     bss     dec     hex filename
15
    136      64       0     200      c8 main.o

von Thomas (Gast)


Lesenswert?

Hi,

das ist ja sehr interessant. Offenbar macht ihm der Vector doch deutlich 
zu schaffen. Möglicherweise kommt es daher, dass er ja dynamisch den 
Speicher erweitern muss.

Was mich überrascht ist, dass die Version mit der eigenen C-Klasse nicht 
viel größer ist als die Version ohne.

Könntest du da nochmal folgendes gegen Checken?:

#include <iostream>
#include <vector>

class Test
{
public:

  unsigned char value;
  Test() : value(0)
  {}

  Test(unsigned int value_) : value(value_)
  {}

  void print(void)
  {
    std::cout << value << ' ';
  }
};

int main()
{
  Test bla[50];

  for (unsigned int i=0; i<50; ++i)
  {
    bla[i].value = 1;
  }

  for (unsigned int i=0; i<50; ++i)
  {
    bla[i].print();
  }
  std::cout << std::endl;

  return 0;
}

Vielen Dank übrigens für Deine Mühen.

Gruß,
Thomas

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.