AVR32 online video

Gast #591585
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)
Persönliche Seite #591879
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...
Persönliche Seite #591920
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.
Persönliche Seite #591935
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
Persönliche Seite #591953
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?
Gast #591961
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.
Gast #592011
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
Persönliche Seite #592221
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.
Gast #592475
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?
Persönliche Seite #602486
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.
(Firma: 4D Engineering) #612682
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.
Gast #632096
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
Persönliche Seite #632978
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.
Gast #633478
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
Gast #635873
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
Persönliche Seite #635951
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
Gast #636861
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren