Forum: Mikrocontroller und Digitale Elektronik ICswift AT91SAM7


von Reinhard S. (rezz)


Lesenswert?

Ich habe mir hier im Shop das ICswift SAM7X256 gekauft und wollte nun 
per USB & SAM-BA darauf zugreifen. Allerdings zeigt mir mein PC beim 
Anstöpseln nur ein "USB-Gerät wurde nicht erkannt".

Die Platine an sich scheint zu funktionieren (Reaktion auf Reset-Taster, 
LED leuchtet), aber ich bekomm eben per USB keine Verbindung.

Btw. ist die Doku von der Platine eher schlecht, keine Beschriftung auf 
der Platine (ok, Platz) und auch keine Erklärung der einzelnen Jumper im 
Datenblatt, zudem hab ich 2 Jumper die dort gar nicht erwähnt werden.

von gerhard (Gast)


Lesenswert?

hallo,
sam-ba wird voraussichtlich bei deinem at91sam7x nicht aktiv sein.
um samb-ba zu aktivieren musst du entweder den den kompletten chip 
(mittels erase pin) oder gpnvm2 löschen.

gruss
gerhard

von Micha (Gast)


Lesenswert?

Hallo Reinhard,

das Verhalten nach anstöpseln an USB ist ja davon bestimmt, was für eine 
firmware dann auf dem SAM läuft. Beim frisch gelieferten soll das ja die 
Test-Firmware zur Funktionsüberprüfung sein. Ich denke, dass die 
Testsoftware nur den Ethernet-Port (und die LEDs) bedient und den USB
Teil uninitialisiert lässt (CAN???)...

Ich habe den ICSwift heute mal ans Eth-Netzwerk gehängt, eine von den 
SMD LEDs fängt dann das Blinken, an, aber weils in der Firma war konnte 
ich jetzt im Firmennetzwerk nicht herausfinden, ob ein neuer Teilnehmer 
mit einer neuen IP dazugekommen ist... Ich werde heute mal zuhause 
probieren und erwarte dann einen Webserver... Leider ist die 
Dokumentation bei www.eproo.de wirklich ziemlich sparsam...

Andererseits, wenn die Hardware in Ordnung ist, bekommt sie ja eh eine 
neue Firmware verpasst (wenn ich es denn mal schaffe den ARM zu 
programmieren)... Er wäre halt nett von den Machern der Hardware 
gewesen, wenn sie wenigstens das bin file zum download anbieten 
würden...

Grüße,
Micha

von Micha (Gast)


Lesenswert?

Hallo nochmal,

Falls die Jumper noch unklar sind:

Der Erase Jumper J9 für den SAM-BA ist beim Blick auf den SUBD-D 9 
Stecker links davon und J13 ist für den CAN Bus Abschlusswiderstand 120 
Ohm zuständig, beim Blick auf den SUB-D 9 Stecker, ist J13 rechts.

Die 3 Jumper für die Spannungsversorgung sind wohl klar, sonst hätte es 
ja noch nicht bei Dir geleuchtet...

Ansonsten wird das beim Blick auf den Schaltplan ja klar..

Die anderen Pfostenstecker sind keine Jumper sondern Port Pins (UART 
usw.)...

Grüße,
Micha

von Jörg W. (derjoerg)


Lesenswert?

Hallo,
ich bin neu hier und habe seit gestern ebenfalls das ICswift.
Soweit habe ich es gestern Abend geschafft, mit SAM-BA eine .bin auf das 
Board zu laden.
Zunächst habe ich mittels J9 ein Erase durchgeführt. Nach dem 
Anschliessen des USB musste ich Windows dabei unterstützen, den 
richtigen Treiber zu installiern, selbst auswählen-> atm6124.
SAM-BA 2.8 startete nun mit '\usb\arm0' als mögliche Verbindung.
Da ich bislang Nut/OS benutzt habe, lag es nahe, das Beispiel 'httpd' zu 
benutzen. Im Configurator habe ich die at91sam7x-ek.conf geladen, da das 
ICswift anscheinenend, jedenfalls größtenteils, Pin-kompatibel dazu ist 
und wohl auch den gleichen NIC drauf hat.
Danach Nut/OS und das Beispiel gebaut.
Die .bin habe ich dann mit SAM-BA - Registerkarte 'Flash' - auf das 
Board geladen und das Script ausgeführt, das besagt, das vom Flash 
gebootet werden soll.
Leider tat sich nach dem Booten nichts, die LED's am angeschlossenem 
Netzwerk-Hub blieben aus.
Ich habe dann, weil es spät war, abgebrochen.

Falls es jemanden gibt, der bereits eine Nut/OS-Applikation auf dem 
ICswift zum Laufen gebracht hat, wäre ich für Tips dankbar.

Grüße
Jörg

von Reinhard S. (rezz)


Lesenswert?

Jörg Wolff wrote:

> Da ich bislang Nut/OS benutzt habe, lag es nahe, das Beispiel 'httpd' zu
> benutzen. Im Configurator habe ich die at91sam7x-ek.conf geladen, da das
> ICswift anscheinenend, jedenfalls größtenteils, Pin-kompatibel dazu ist
> und wohl auch den gleichen NIC drauf hat.

Das mit dem Pin-kompatibel eher nicht. Ich bin an NutOS schon 
gescheitert weil ich nicht die fertig erstellte Datei gefunden habe...

Bei SAM-BA hab ich zuerst den Fehler gemacht die Datei hochzuladen, auf 
den Button "Execute" zu klicken (mit der Option "Boot from Flash") und 
dann zu meinen das mein Programm ja jetzt starten müsste.
War aber erst nach einem kompletten Neustart der Fall :)

von Jörg W. (derjoerg)


Lesenswert?

Reinhard S. wrote:
>
> Das mit dem Pin-kompatibel eher nicht.

Ich habe einmal die Schaltpläne beider Boards nebeneinander gelegt. Mich 
interessiert zunächst nur der Teil mit dem DM9161A. Bei dem AT91SAMX-EK 
ist der TX_CLK mit Jumpern konfigurierbar, ist aber per default, genau 
wie beim ICswift, auf PB0 gelegt. Beim ICswift hat der MDIO noch einen 
zusätzlichen Pullup-Widerstand. Ansonsten sind die DM9161 auf beiden 
Boards gleich beschaltet. Die anderen Komponenten unterscheiden sich 
natürlich zum Teil.


> Ich bin an NutOS schon gescheitert weil ich nicht die fertig erstellte
> Datei gefunden habe...

Bei dem Nut/OS muss man sich strikt an die Installationsanweisung 
halten, dh. im Configurator die Pfade richtig setzen, danach das OS 
bauen und dann die Beispiel-Projekte erstellen. Im Beispiel, etwa in 
'httpd', per make die binaries erstellen. Die .bin kann dann, so wie 
oben beschrieben, mit SAM-BA auf das Board geflasht werden.
Auf ethernut.de befinden sich mittlerweise sehr gute Anleitungen zur 
Installation.

Auf jeden Fall habe ich die LED1 auf dem ICswift schon einmal zum 
Blinken gebracht, nur der Ethernetport bleibt stumm.
Ich werde mir jetzt erstmal einen RS232 an das Board bauen, damit ich 
die Meldungen verfolgen kann.

Grüße
Jörg

von Reinhard S. (rezz)


Lesenswert?

Jörg Wolff wrote:

> Auf jeden Fall habe ich die LED1 auf dem ICswift schon einmal zum
> Blinken gebracht, nur der Ethernetport bleibt stumm.
> Ich werde mir jetzt erstmal einen RS232 an das Board bauen, damit ich
> die Meldungen verfolgen kann.
>

Hab ich auch schon, sogar beide mit den Beispielen von Atmel. Hätte 
nicht gedacht das ein einfaches Blinken soviel Quellcode braucht.

Ist das beim M3 genauso heftig?

Ich hab mal einen FT232 an den Debug-Uart gehängt, es kam auch was raus, 
nur verständlich wars nicht.

von Jörg W. (derjoerg)


Lesenswert?

Hallo,

ich habe nun das Nut/OS-Beispiel 'httpd' auf dem ICswift zum Laufen 
gebracht.

Nachdem ich ein MAX3232 an den Debug-Port J6 gebaut habe, konnte ich die 
Meldungen am Terminal verfolgen. Ich habe mir an einigen Stellen im 
Sourcecode 'at91_emac.c' Meldungen eingebaut und konnte so zurück 
verfolgen, dass die 'NIC_PHY_ID1' und 'NIC_PHY_ID2' auf 0xFFFF standen, 
was wohl bedeutet das überhaupt nichts aus dem DM9161 gelesen wird. 
Zuvor hatte ich mir die Anleitung 'Olimex AT91SAM7X256-Board' im 
ARM-Tutorial durchgelesen und das Powerdown-Bit auf 18 gelegt. Aber 
warum erwacht der DM9161 nicht zum Leben? Ein erneuter Vergleich der 
Pläne brachte es dann, ich hatte übersehen, dass der Reset des DM9161 
beim ICswift an dem PA21 angebunden ist.
Ich habe dann folgende Änderungen in 'at91_emac.c' vorgenommen,
im Bereich Definitionen für MCU_AT91SAM7X256:
1
...
2
#define PHY_MDINTR_BIT          26
3
4
/*+ICswift
5
*/
6
#define PHY_RESET_BIT    21
7
//-ICswift

und in Funktion EmacReset:
1
...
2
#ifdef PHY_PWRDN_BIT
3
    /* Disable PHY power down. */
4
    outr(EMAC_PIO_PER, _BV(PHY_PWRDN_BIT));
5
    outr(EMAC_PIO_OER, _BV(PHY_PWRDN_BIT));
6
#ifdef PHY_PWRDN_NEGPOL
7
    outr(EMAC_PIO_SODR, _BV(PHY_PWRDN_BIT));
8
#else
9
    outr(EMAC_PIO_CODR, _BV(PHY_PWRDN_BIT));
10
#endif
11
#endif
12
13
/*+ICswift
14
Beim ICswift liegt der Reset des DM9161 am PA21.
15
Reset durchführen wenn Powerdown auf 0 ist.
16
*/
17
  outr(PIOA_PER, _BV(PHY_RESET_BIT));
18
  outr(PIOA_OER, _BV(PHY_RESET_BIT));
19
  outr(PIOA_CODR, _BV(PHY_RESET_BIT));
20
  NutDelay(20);
21
  outr(PIOA_SODR, _BV(PHY_RESET_BIT));
22
//-ICswift

Danach das Nut/OS und 'httpd' nochmal gebaut, und Bingo!
Auf dieser Basis kann ich nun weiter machen. Das nächste, das ich 
brauche, ist die Can-Funktionalität. Aber das hat erstmal Zeit.

Grüße
Jörg

von Micha (Gast)


Lesenswert?

Hallo,

mir ist es jetzt auch gelungen die Demo-App von FreeRTOS für den 
AT91SAM7X256 Eclipse (->Yagarto) zum Laufen zu kriegen. Man muss nur die 
Portzugriffe für die LEDs anpassen (ParTest.c), dann noch in der 
Hardware Initialisierung in main.c den Port-Ausgang für die 
EMAC-Reset-Leitung auf low setzen und in der Initialisierung für den 
EMAC (funktion: xEMACInit) die Befehle für das ARM interne Reset-Modul 
(auf dem Atmel EK ist die Reset Leitung der EMAC an den Reset-Ausgang 
des ARM angeschlossen) gegen "EMAC-Reset-Leitung (PA21) auf high setzen" 
austauschen.

Die Leds blinken dann wie im flash-task gewollt und der Webserver ist 
auf der in FreeRTOSConfig.h angegebenen IP-Adresse erreichbar...

Quick & dirty, aber man kann gleich sehen, ob der ICSWIFT auch 
funktioniert...

Grüße,
Micha

von R. H. (jodogi)


Lesenswert?

Hi,
versuche auch den ICSwift mit Sam-Ba zu flashen, jedoch meldet das 
Sam-Ba immer "Faild to open connection". bekomm das irgendwie nicht hin. 
Teiber habe ich manuel eingebunden, und es ist ein COM Port entstanden. 
Laut Beschreibung und den Beitra sollte nun \usb\arm0 als Connection 
eingetragen werden, jedoch funst das nicht. Controller ist per Jumper 
auch gelöscht.
Vielleicht kann einer von Euch das Problem erkennen???

Gruß Roger

von Jörg W. (derjoerg)


Lesenswert?

Hi Roger,
ich habe versucht auf meinem Windows 7 64bit - Rechner SAM-BA zu 
installieren und bin gescheitert. Wenn das SAM7x angestöpselt wird 
installiert sich ein GPS Kommunikations Treiber als COMx. Vielleicht ist 
das dein Problem. Wie es aussieht, ist der Treiber atm6124.sys nicht 
64bit-fähig (auch nicht Vista 64bit).
Ich habe danach SAM-BA auf einen virtuellen PC unter Vista 32bit (mit 
VirtualBox) installiert und es hat sofort geklappt.
Wichtig: Die Software AT91-ISP v1.13 installieren (enthält SAM-BA 2.9) 
und den Rechner neu starten. Dann den gelöschten Controller anstöpseln. 
Wenn Windows den richtigen Treiber nicht findet, dieses manuell machen. 
Unter z.B. "C:\Program Files\ATMEL Corporation\AT91-ISP v1.13\sam-ba 
2.9\drv" ist der Treiber zu finden.
Viel Erfolg.

Grüße
Jörg

von Roger (Gast)


Lesenswert?

Hi,
danke für die schnelle Antwort. Hat alles super funktioniert.

Merci
Gruss Roger

von Jodogi (Gast)


Lesenswert?

Hi,
hat jemand schon geschafft das web server demo von FreeRTOS auf dem 
ICSwift zu kompelieren und dann ans laufen gebracht?
Habe es zwar kompeliert, jedoch wurde vom Kompiler ein Fehler aus 
gegeben:
make all
arm-elf-gcc -c -g -O3 -Tatmel-rom.ld -I . -I ../../../Source/include -I 
../../../Source/portable/GCC/ARM7_AT91SAM7S -I ../../Common/include -I 
./webserver -I ../../Common/ethernet/uIP/uip-1.0/uip -I ./SrcAtmel -I 
./USB -D SAM7_GCC -D THUMB_INTERWORK -mcpu=arm7tdmi -D 
PACK_STRUCT_END=__attribute\(\(packed\)\) -D 
ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) -fomit-frame-pointer 
-mthumb-interwork -fno-strict-aliasing -fno-dwarf2-cfi-asm  -mthumb 
main.c -o main.o
cc1: error: unrecognized command line option "-fno-dwarf2-cfi-asm"
make: *** [main.o] Error 1


Habe dann die Kompiler Option "-fno-dwarf2-cfi-asm "weggelassen und 
konnte dann kompelieren. Nach dem flashen war leider der Controller 
stumm.

Vielleicht hat jemand es schon geschafft, das ICSwift Board mit FreeRTOS 
zum leben zu erwecken??? Würde mich sehr über eine Antwort freuen.

Gruß Roger

von Till Hober (Gast)


Lesenswert?

Hast du das Problem gelöst? Ich stecke nämlich gerade an der selben 
Stelle fest.

von R.Heil (Gast)


Lesenswert?

Hi,
das Problem habe ich nicht gelöst. Bin daher auf Ethernut umgestiegen.
Dies kann leider von Haus aus kein CAN, ist aber sonst nicht schlecht.
Wenn gewollt kann ich eine Version per email senden.

Gruß Roger

von Markus (Gast)



Lesenswert?

Hier ein kleines, sehr simples Beispielprogramm fuer den ICswift 
AT91SAM7 da auch ich sehr lange gebraucht habe das Ding ueberhaupt zum 
Laufen zu bringen. Es laesst sich mit GCC kompilieren. Sollte dies nicht 
funktionieren hier auch das .bin File, damit man wenigstens die Funktion 
des Boards testen kann. Das Programm bringt eine der beiden LED's auf 
dem Board zum blinken und gibt seriell Text ueber die Debugschnittstelle 
aus (Baudrate 115200, Datenbits 8, Paritaet keine, Stoppbits 1, 
Flussteuerung keine). Die Daten kommen also an der Steckerleiste mit 
DRXD und DTXD an. Einen Pegelwandler (Anhang) von RS232 auf 3,3V kann 
man also verwenden um die Daten in einem Hyperterminal anzuzeigen. 
Zusaetzlich gibt es eine printf Funktion mit der man die Textdaten 
formatiert ausgibt.

Vorgehensweise beim Flashen mit SAMBA:

1. ERASE Jumper bruecken
2. USB Stecker einstecken (nur fuer Stom)
3. ERASE Jumper entfernen
4. Erneut USB Stecker einstecken
5. SAMBA Starten mit Connection \usb\ARM0 und Board at91sam7x256-ek
6. Mit SAMBA Send File im Register Flash durchfuehren
7. Boot from Flash (GPNVM2) und Execute
8. USB stecker ziehen
9. USB stecker wieder reinstecken (nur fuer Strom), jetzt sollte eine 
der gruenen LED's blinken

von Markus (Gast)


Lesenswert?

Zei Anmerkungen noch.

Verwendet habe ich WinArm (der Standard download) und damit SAMBA 
funktioniert muss man zuerst den USB-Treiber fuer den SAM7X256 von Atmel 
installieren.

von Sven123 (Gast)


Lesenswert?

Um Jörgs Beitrag zu ergänzen. Ich habe folgende Änderung in der 
SAM7_EMAC.c eingefügt und schon läuft der FreeRTOS-Server mit dem 
ICSwift-Board.

/* Clear PB18 <=> PHY powerdown. */
AT91C_BASE_PIOB->PIO_PER = 1 << 18;
AT91C_BASE_PIOB->PIO_OER = 1 << 18;
AT91C_BASE_PIOB->PIO_CODR = 1 << 18;

// EINGRIFF: Der Reset muss beim ICSwift manuell angesteuert werden
AT91C_BASE_PIOA->PIO_PER = 1 << 21;
AT91C_BASE_PIOA->PIO_OER = 1 << 21;
AT91C_BASE_PIOA->PIO_CODR = 1 << 21;
unsigned int ui;
for(ui = 0; ui < 5000; ui++ )
  __asm volatile ( "NOP" );
AT91C_BASE_PIOA->PIO_SODR = 1 << 21;
// ende EINGRIFF

/*/ After PHY power up, hardware reset. //
AT91C_BASE_RSTC->RSTC_RMR = emacRESET_KEY | emacRESET_LENGTH;
AT91C_BASE_RSTC->RSTC_RCR = emacRESET_KEY | AT91C_RSTC_EXTRST;

// Wait for hardware reset end. //
while( !( AT91C_BASE_RSTC->RSTC_RSR & AT91C_RSTC_NRSTL ) )
{
  __asm volatile ( "NOP" );
}*/
__asm volatile ( "NOP" );

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.