Hallo Leute
was muss ich denn generell beachten bei einem ARM9 Board?
Hab einen 2GB NAND Flash, 256MB SDRAM und einen AT91SAM9260.
Ich hab mal wo gelesen das ich beim routen von den Verbindungen zum
SDRAM aufpassen muss.Wobei genau?
Könnt ihr mir ein paar Tipps geben?
Möchte das Board günstig herstellen, zwei Layer waren geplant.
Wens ned anders geht mach ich ein board mit 4 layer.
Danke für die Tipps im Voraus
Die Anschlussleitungen für den SDRAM sollten z.B. alle dieselbe Länge
besitzen (Signallaufzeit, Widerstand, Kapazität, Induktivität), und zur
Vermeidung von übermäßiger Kapazität auch nicht unnötig nahe aneinander
verlaufen.
Übrigens mein Controller ist im PQFP gefertigt,also kein BGA
>nicht unnötig nahe aneinander verlaufen.
Welchen Abstand sollten die Leitungen haben?
Muss ich bei der Leitung vom uC zum SDRAM etwas beachten?
Muss ich bei den Leitungen vom Flash aufpassen oder ist das egal?
kann mir kaum vorstellen, dass diese diversen leistungsstarken
mini-module (PC-s im Check-karten-format) irgendwelchen besonderen
design richtlinien folgen - die dinger sind doch viel zu klein um dem
Designer noch Platz dafür zu lassen. Ich denke mal die Signalqualität
wird dort einfach durch eine mehrlagige Platine erreicht.
Da hat Lupin völlig recht. Da wird weder auf Abstand, noch auf
Leitungslänge geachtet. Von Impedanzkontrolle ganz zu schweigen. Wie
willst du außerdem für Abstand sorgen, wenn die Daten- und
Adressleitungen schon am Chip nur 0,5mm auseinander sind, und sie auch
an den SDRAM-Bausteinen wieder nebeneinander liegen. Das ist Quatsch.
Beachten würde ich an deiner Stelle nur folgendes:
Die SDCK-Leitung hat die höchste Frequenz, diese mit einem kleinen
Serienwiderstand versehen (22 Ohm vielleicht, ausprobieren). Die
Leitungen für das Timing tendentiell eher länger als die Leitungen für
Daten- und Adressbus. Und natürlich im Rahmen des Möglichen keine arg
unterschiedlichen Längen jeweils für alle Daten- und alle
Adressbusleitungen. Im Rahmen des Möglichen heißt, nicht D1 auf 5mm von
Pin zu Pin und D2 einmal um die Platine herum. Meistens gibt es eine
bevorzugte Anordnung von SDRAM-Chips und Prozessor, wo es schon von
alleine recht gut passt. Einfach mal andere Boards mit dem '9260
anschauen.
Du kannst auch auf zwei Lagen routen. Allerdings nur dann, wenn du es
schaffst, die Betriebsspannungen ordentlich an die Bausteine
heranzuführen. Daß das eben nicht gut geht, ist meist der einzige Grund
für vier Lagen.
Meintest du 256 MBit oder 256 MByte? Letzteres wird aufwendig!
Ich bin gerade selbst an einem ARM9-Board zugange. Bei Bedarf kann ich
meine Anbindung der SDRAM-Chips mal posten.
P.S.: Errata sorgfältig durchgelesen?! -)
@Oliver Döring
danke für die Tipps
kannst du mir mal deine Schaltung posten?
wäre sehr nett
>P.S.: Errata sorgfältig durchgelesen?! -)
Ja habe ich durchgelesen.
Hab extra den neueren Chip bestellt.
@Oliver Döring
Ja schon richtig ich hab nen 256MByte SDRAM
Die Anbindung ist beim Schaltplan nicht so schwierig gewesen.
Mit dem Board hab ich noch nicht angefangen weil ich nicht ne Arbeit
umsonst
machen möchte.Hab noch nie eine Platine mit uC,SDRAM.. geroutet.
@Oliver Döring
entschuldige die Verspätung war gerade beim Erste Hilfe Kurs :-(
Mir ist leider ein Fehler unterlaufen ihr hattet Recht
ist ein 64MByte SDRAM
> Mir ist leider ein Fehler unterlaufen ihr hattet Recht> ist ein 64MByte SDRAM
Wenn du ohne BGA auskommen willst, bist du m.W. auf 16 bit Datenbus
festgelegt. Also besser 2 x 32 MByte.
Das Bild im Anhang zeigt, wie das auf zwei Lagen aussehen könnte.
Feinste Struktur 0,15mm
Kleinste Bohrung 0,3mm
Das könnten sogar die Grobschmiede bei PCBPool herstellen.
Hallo Newby,
Habe in der Firma im letzten Jahr einige kleine LPC2468 und LPC2478
Systeme auf 6-Lagigen Platinen mit 32MB SDRAM-60ns, 64MB SST-70ns FLASH
und 128MB NAND FLASH entwickelt und gebaut. Es wurden 208-TQFP und
48-TSOP1 Gehaeuse verwendet. Es wurde ein 16-bit Busbandbreite
verwendet. Es werden wegen der Geschwindigkeit der Peripherien
natuerlich einige Wait States gebraucht. In Bezug auf Layout habe ich
nur darauf geschaut dass die Laenge der Daten/Address Leitungen nach
Moeglichkeit die gleiche Laenge haben und nach Moeglichkeit im Innern
der Platine zwischen Masse und VCC Layers verlaufen. Die Breite der
Leitungen ist 6 mil und keine der Leitungzuege zu den Memories sind
laenger wie 5cm. Die Platine hat auf Anhieb funktioniert und es sind
keinerlei Anzeichen von irgendwelchen Problemen festzustaellen. Eine
Oszillographische Ueberpruefung der Steuersignale ergab eine gute
Qualitaet ohne nennenswertes Ueberschwingen. Temperaturtests zwischen
-45 bis + 85Grad ergaben keinerlei Stoerungen.
Dein ARM9 Syetm ist warscheinlich schneller in vieler Hinsicht nehme ich
an. Da kann es allerdings schon Ueberraschungen geben. Warscheinlich
musst Du schon das Risko auf Dich nehmen und die Schaltung ausprobieren.
Mit Multilayer Platinen ist es meist nicht so schlimm wenn man aufpasst.
Unsere Schaltungen sind ja schliesslich keine PCs mit 1000Mhz
Taktfrequenzen;-)
Auch EMC Vertraeglichkeit war sehr gut. Die Messwerte im fertigen Geraet
waren im schlimmsten Fall unter 20 dB zwischen 30MHz-1GHz um den
(EN55022, IEC/ CISPR22) Richtlinien zu genuegen.
Ich hoffe meine Erfahrungen helfen Dir ein wenig um Dir dafuer ein
gewissen Einblick im praktischen Sinn zu geben.
mfg,
Gerhard
> Hast du das mit Eagle gemacht?
Ja.
> Ginge es einfacher wenn ich eine BGA Chip verwenden würde?
Nein. Die Anforderungen an die Platine steigen (Micro-Vias), und um die
Signale unter dem BGA nach außen führen zu können, brauchst du mehr
Lagen. Man braucht auch etwas Erfahrung, um die Versorgungsleitungen
vernünftig zum BGA zu bringen. Das ist kein Projekt für jemand, der die
erste Platine entflechtet.
> Hab keine Ahnung wie ich einen BGA an die Platine löte
Am besten gar nicht. Ein Lohnbestücker nimmt ab 50 Euro aufwärts, um
einen einzelnen BGA auf eine Platine zu setzen. Ohne Funktionsgarantie.
Die zum Bild gehörige Schaltung findest du hier, sie basiert aber auf
dem AT91RM9200:
Beitrag ""Pingu920" - ARM9 Linux Embedded zum selbst Löten"> Brauche ich für die 1,8V beim SAM9260> eine Regulator(so ein LMXXX)?
Du brauchst 1,8V. Wo die herkommen, ist dem SAM9260 egal, so lange sie
sauber sind und mit ca. 100mA belastbar sind.
Newbie V0.2 wrote:
> Hallo Leute> was muss ich denn generell beachten bei einem ARM9 Board?>> Hab einen 2GB NAND Flash, 256MB SDRAM und einen AT91SAM9260.> Ich hab mal wo gelesen das ich beim routen von den Verbindungen zum> SDRAM aufpassen muss.Wobei genau?>> Könnt ihr mir ein paar Tipps geben?> Möchte das Board günstig herstellen, zwei Layer waren geplant.> Wens ned anders geht mach ich ein board mit 4 layer.> Danke für die Tipps im Voraus
Das ist ja wohl nicht dein Ernst, oder? Am besten noch mit Eagle
entflechten, oder?
Also, für die Leiterplatte würde ich jetzt schon mal von mindestens 6
-10 Layern ausgehen.
Die Leiterplatte muss impedanzkontrolliert aufgebaut werden.
Besonders die Daten und Adressleitungen zum Flash sind kritisch. Alle
müssen gleich lang sein, alle müssen die richtige Breite und den
richtigen Abstand zueinander haben. Und auch der Abstand zum GND-Layer
sowie das Epsilon Er des Leiterplattenmaterials muss stimmen...
Viel Spass
> Also, für die Leiterplatte würde ich jetzt schon mal von mindestens 6> -10 Layern ausgehen.> Die Leiterplatte muss impedanzkontrolliert aufgebaut werden.> Besonders die Daten und Adressleitungen zum Flash sind kritisch. Alle> müssen gleich lang sein, alle müssen die richtige Breite und den> richtigen Abstand zueinander haben. Und auch der Abstand zum GND-Layer> sowie das Epsilon Er des Leiterplattenmaterials muss stimmen...
Erde an Frank: Wir reden hier über 100 MHz Grundfrequenz der
SDCK-Leitung. Laß mal die Kirche im Dorf.
Ich habe vor zwei Jahren ebenfalls ein ARM9 Board mit AT91SAM9260
entworfen.
Prinzipiell stimme ich den vorangegangenen Antworten zu, doch ganz außer
acht, darf man Design Rules nicht lassen. Das System soll ja nicht durch
schlechtes Layout zu einer lahmen Ente werden.
Mindestanforderungen an das Layout:
# Die Länge der Clockleitung soll zu sämtlichen SDRAM Bausteinen gleich
sein. Gute Layout Programme haben eigene Algorithmen integriert, die
dies sicherstellen.
# Clockleitung soll (wie bereits erwähnt) einen Serienwiderstand zur
Anpassung besitzen. Dieser muss bei der Quelle platziert werden, also
dem µC.
# Selbiges gilt auch für Daten- und Adressleitungen, sofern es sich
platzmäßig ausgeht. Bei den Datenleitungen sind Serienwiderstände auf
beiden Seiten, also µC und SDRAM zu empfehlen.
# Leitungslängen prinzipiell kurz halten. 0.2mm Leitungsbreite und
Abstand ist ausreichend.
# Adressleitung SA10 sollte mehr Aufmerksam gewidmet werden!!
# Clockleitung eventuell in Masse einbetten um Impedanz auf etwa 50 Ohm
zu bekommen --> mit Hyperlynx kann dies aus den Layoutdaten berechnet
werden.
# Sind die Leitungen schlecht verlegt, dann kann man den SDRAM nicht mit
seiner maximalen "Frequenz" betreiben --> lahme Ente.
# Das Versorgungskonzept des AT91 unbedingt beachten. Wie das Layout
aussehen sollte, kann man in Application Notes nachlesen. Eventuell
Versorgungsinseln über Ferrite + C anbinden.
# Für BGA muss man nicht unbedingt Micro Vias verwenden. Bestückbar ist
BGA jedoch nur für erfahrene Leute ratsam.
# AT91SAM9260 zieht schon recht viel Strom --> unbedingt großen Tantal
Elko vorsehen.
# Keinen Linearregler zur Versorgung nehmen!!! Der produziert nur Wärme.
Besser wäre ein Schaltregler mit hohem Wirkungsgrad.
# Achtung bei der Reset-Beschaltung. Reset muss so lange low sein, bis
sich der 32kHz Quarz stabilisiert hat.
# Wenn du Peripherie hast, die nach einem Reset das NWAIT des µCs auf
low ziehen (weil sie nicht konfiguriert sind), dann wird dein Controller
niemals hochfahren.
Hi,
gibts keinen Designguide für den Chip? Naja, egal.
Ich hab mal einen ixp270 entwickelt mit 2*128Mbyte
Kurze Zusammenfassung:
# Lagenaufbau Kupferfolie-> Prepreg 100µ->Kupferfolie->Prepreg 100µ
->Kupferfolie->Kern ~1,5mm ->Kupferfolie-> Prepreg
100µ->Kupferfolie->Prepreg 100µ ->Kupferfolie. 1 Signal-2 Masse-3
Signal-4 Signal-5 Power-6 Signal
(4 Lagen gehen auch, dann Signal-Masse-Power-Signal. Keine Signale in
die Planes legen!)
# Längenabgleich: Alle Signale auf 20mil abgeglichen, Clocks auf
Innenlage, Daten/Adressen/Steuerleitungen oben.
# Speicher: SSOP ist zum fädeln besser als BGA
# Terminierung: Immer am Sender, in dem Fall am ARM
also sd-ram ist wirklcih nicht so kritisch aber DDR müsste schon
matching length etc. eingehalten werden .... aber sonst stimme cih
Rooney Bob vollkommend zu
@Rooney Bob
Hallo kannst du mir deine Schaltung posten?
># Clockleitung soll (wie bereits erwähnt) einen Serienwiderstand zur
Anpassung besitzen.
Wie groß sollte dieser sein?
># Die Länge der Clockleitung soll zu sämtlichen SDRAM Bausteinen gleich
sein.
Wenn ich nur ein SDRAM habe ist dieser Punkt egal, oder muss die
Clockleitung
zum Flash auch gleich lang sein?
Kann ich 8 100nF Kondensatoren durch einen 800nF Kondensator ersetzen?
Denn bei der Parallelschaltung von C addiert man die Kapazität.
(Bild im Anhang)
Sorry, aber das ist ein kommerzielles Produkt.
Wie groß der sein muss hängt von der Leitung selbst ab. Mit 33R bist du
aber gut bedient. Eine "kleine" Fehlanpassung ist nicht so
problematisch.
Nein, bei mehreren SDRAMs wird ja auch gleichzeitig von
unterschiedlichen ICs gelesen. SDRAM und Flash werden jedoch nie
gleichzeitig gelesen, deswegen ist das egal, abgesehen davon braucht man
für Flash keine Clockleitung...
Du kannst nicht einfach 1 größeren C statt mehreren kleinen nehmen.
Warum das nicht geht wäre ein anderes Thema.
Pro VCC Pin benötigst du einen 100nF C. Bei "hochfrequenten" Schaltungen
wäre es auch ratsam 1nF zusätzlich vorzusehen. Diese Stützkondensatoren
sollten so nah wie möglich zum dazugehörigen Pin platziert werden.
Stichleitungen unbedingt vermeiden!!! Also Strom fließt durch C in den
Pin.
Der große Tantal-C, davon brauchst du nur einen für den µC, kann ruhig
etwas weiter weg platziert werden.
>Keinen Linearregler zur Versorgung nehmen!!! Der produziert nur Wärme.
Besser wäre ein Schaltregler mit hohem Wirkungsgrad.
Hat jemand ein Schaltungsbeispiel dazu?
Welchen Schaltregler kann ich nehmen?
Laut Datenblatt
Peripheral Consumption Unit μA/MHz
PIO Controller 10
USART 30
UHP 14
UDP 20
ADC 17
TWI 21
SPI 10
MCI 30
SSC 20
Timer Counter Blocks 6
ISI 8
EMAC 88
ist 49320uA bei 180MHz
und beim Aktiven Modus noch 130mA dazu
müssten 180mA sein.
muss ich da Output Current dazuzählen (sind max 16mA)?
möchte noch lcd controller,ethernet phy und das lcd aufm board.
werde ich mit 1A auskommen?
gibt es software zum dimensionieren der schaltung?
Nimm es mir nicht übel, aber anhand der Fragen, die du stellst, erkennt
man, daß deine Erfahrung noch nicht ausreicht, ein solches Projekt
anzugehen.
Dir fehlen die Grundlagen zu verstehen, was du da machst, und ohne
dieses Verständnis kannst du die während des Schaltungsdesigns und
Platinenlayouts anstehenden Entscheidungen nicht richtig treffen. Es
gibt keine Software, um eine solche Schaltung zu dimensionieren. Alles,
was der Designer wissen muß, ergibt sich aus seinem Grundlagenwissen und
den Hinweisen in den jeweiligen Datenblättern. Du kommst weder ohne das
eine noch ohne das andere aus.
Wenn du einen LCD-Controller brauchst, eröffnet das schon wieder viele
neue Möglichkeiten für Probleme.
Überlege dir dringend, ob du nicht mit einem
AT91SAM9261-Development-Board zeitlich, finanziell und auch
"erfolgstechnisch" besser beraten bist!
Nein, nicht ein Buch für alles. Du brauchst vor allem nicht nur Wissen,
sondern auch Erfahrung. Backe erstmal kleinere Brötchen.
Wieviel Erfahrung hast du mit AVR, ARM7? Was hast du daraus gelernt?
Wieviele Platinen hast du schon gelayoutet?
Ich verwende in meiner Schaltung einen MAX1536 für 3.3V und einen
MAX8560 für 1.8V
Bei mir hängt so einiges noch zusätzlich an 3.3V, du wirst also nicht
unbedingt so hohe Leistungen benötigen wie ich.
SDA10 -->
http://www.freescale.com/files/32bit/doc/app_note/AN2148.pdf?fpsp=1&WT_TYPE=Application%20Notes&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation
--> Seite 3
ODER
http://www.atmel.com/dyn/resources/prod_documents/doc6256.pdf
Kann Oliver nur beipflichten, es wird sicherlich nicht gerade einfach
für einen Anfänger werden.
Nichts desto trotz kann man nur etwas lernen, wenn man auch etwas dafür
tut. Wenn du wirklich gleich mit ARM beginnen magst, dann wäre ein ARM7
sicher die bessere Wahl. Ein Layout für beispielsweise den AT91SAM7S256
wäre relativ einfach zu implementieren. Es kommt eben auf deine
Anwendung drauf an. Wenn du die Taktfrequenz von >180MHz brauchst, dann
kommst um einen ARM9 ohnehin nicht herum. Oder wenn Linux relevant ist,
und und und...
Egal wofür du dich entscheidest, setzt dich mit dem Thema auseinander.
Befrage Google um dir nicht nur Grundkenntnisse zu verschaffen sondern
auch Expertenwissen. Lies dir unbedingt EMC, Layout and PCB Guidelines
durch, damit du ein Gefühl bekommst, auf was man bei einem Layout achten
muss. Damit bei der Schaltung (Reset, SDRAM, NAND, Boot-Flash, Power
Supply etc.) nichts schief rennt, ist es empfehlenswert sich
Referenz-Schaltungen anzusehen und die Applicationnotes von ATMEL zu
lesen.
Danke für den Link!
Hatte gedacht ich lass bei Conrad fertigen aber da kostet eine 160x100
Platine 4lagig 164Euro, aber ohne Stoplack bei Eurocircuits kostet sie
130Euro mit Stoplack und dazu noch 15 Euro Versand
Wie bootet eigentlich dein 9260?
Vom NAND booten geht nicht (siehe Errata).
Hast Du da noch einen Atmel Dataflash oder ein NOR mit dran?
Noch ein paar Tipps zum AT91SAM92xx / RM9200 :
- Übernimm die PLL Beschaltung 1:1 aus dem Atmel STKs!
- Mach einen Bogen um Mobile SDRAM
- Wenn Du dein Filesystem im NAND hast nimm SLC NANDs
- Achte auf das Powesequencing wie im Datenblatt (Vbu ist auch wichtig)
- An jeden VCC Pin Stützkondensatoren (Datenblatt)
- Saubere Groundplane
- PLL VCC mit Filter
- Und falls Ethernet drauf soll , nimm einen "Allerwelts" PHY und hänge
ihn mit MII an den MAC ( Beitrag "bootbarer Linuxkernel ohne Bootloader für ARM9" )
Das meiste davon habe ich Schmerzhaft selbst erfahren müssen :-)
@Claude
Ich entwickle derzeit auch ein Board mit dem 9260.
Hier habe ich den PHY per RMII angeschlossen, da ich sonst nicht genug
Pins am Controller habe. Gibt es ein Problem mit dem RMII Interface?
Gruß Mario
@Newbie
Schaltung ist fertig, jetzt gehts ans Layouten. Da es sich um ein
geschäfftliches Projekt handelt kann ich die Schaltung leider nicht
Posten.
Gruß Mario
@Mario
Nein , kein Hardware Problem. Blos würde ich vorher sicherstellen ob der
dazugehörige Linux Treiber / Uboot mit dem RMII und deinem PHY umgehen
kann.
Aber bei "Allerwelts" PHYs und dem aktuellen macb Treiber sollte das
auch kein Problem sein. War nur ein Hinweis, keine Panik :-)
@Newbie
Ah bekommt man die schon! Gut zu wissen
Wir haben nur die erste Revision des 9260(Engineering Samples auf dem
STK und Rev.A auf den Produktionsboards) , da geht der NAND-Boot nicht.
Bei Eurocircuit musst du dir auch ein Angebot für 4 oder 5 Platinen
einholen. Dann wirst du sehen, dass du eventuell günstiger weg kommst.
Nur eine Platine fertigen zu lassen ist ohnehin Verschwendung.
Ich habe mal bei Eurociruit ein Angebot eingeholt:
4 Platinen, 160x100mm, inkl. Versand = 201,68€
Je mehr du also bestellst, desto günstiger wird der Stückkostenpreis.
Eventuell findest du in diesem Forum Interessenten.
Hallo,
habe ein paar Fragen zu einem selbstgebauten SAM9260 Board, dass wie das
Atmel EK ist, allerdings nur mit 32MB RAM.
Nun habe ich das Problem mit der Speicherverwaltung mit U-Boot und
Kernel.
Ich verwende die U-Boot Version 1.3.4 und den Kernel 2.6.28
Allerdings kann ich kein Ramdisk-Image laden. Ich bekomme immer die
Meldung: Kernel panic - not syncing: VFS: Unable to mount root fs on
unknown-block(1,0)
ich rufe den Kernel mit folgenden bootargs auf:
mem=32M initrd=20800000,2450122 root=/dev/ram rw ramdisk_size=10280
console=ttyS0,115200
UBoot:
cp.b 0xd0252000 0x20800000 0x2562CA
bootm 0xd0042000 0x20800000
Kernel wird geladen, Ramdisk aber nicht!
hat jemand von euch eine idee
DANKE
> @Newbie> Ah bekommt man die schon! Gut zu wissen> Wir haben nur die erste Revision des 9260(Engineering Samples auf dem> STK und Rev.A auf den Produktionsboards) , da geht der NAND-Boot nicht.
Ich habe einen parallelen NOR-Flash an NSC0. Dabei habe ich an ebenfalls
Probleme. In den Erratas habe ich nur Probleme an NSC3 gelesen. Oder
meint ihr noch ein anderes Problem?
MaPa (Gast)
Hast du im Kernel EABI aktiviert?
Und dazu den Unterhaken kompatibel zum alten System?
Die elf-File Struktur wurde geändert. EABI ist die neuere und wenn dein
Kernel EABI nicht unterstützt, kennt er nicht die Dateistruktur.
MaPa wrote:
> Hallo,>>> Allerdings kann ich kein Ramdisk-Image laden. Ich bekomme immer die> Meldung: Kernel panic - not syncing: VFS: Unable to mount root fs on> unknown-block(1,0)>> ich rufe den Kernel mit folgenden bootargs auf:> mem=32M initrd=20800000,2450122 root=/dev/ram rw ramdisk_size=10280> console=ttyS0,115200>
Die Fehlermeldung sieht doch eher aus, als fehlt dir doch etwas anderes.
Hast du Blockdevice und ext Filesystem im Kernel aktiviert.
Bei dem zu vor gepostetem Vorschlag EABI müsste das Filesystem noch
mounten und als Fhelermeldung kann init nicht finden kommen.
Versuche doch den Filesystem über NFS zu mounten. So habe ich es
gemacht. Setzt natürlichen LAN an deinem Board voraus.
Hat du ein Image vorher erzeugt?
Deine Ramdisk musst du noch mit dem untenstehenden Befehl Informationen
anfügen.
mkimage -n 'RAM disk' -A arm -O linux -T ramdisk -d ramdisk.img.gz
initrd.boot
qemu kann arm emulieren.
Ich hab mein komplettes ubuntu-arm rootfs mit qemu gebaut und
anschliessend ueber NFS auf meinem olimex sam9-l9260 board gemounted.