Hallo, was muss ich mir genau unter dem großen Adressenbereich vorstellen, der für die EBI Chip Selects drauf geht? Tina
Was soll man sich darunter schon vorstellen? In den Adressbereich wird externe Peripherie gehangen die über den Daten/Adressbus angeschlossen ist. Dafür hast du mehrere Chipselects zur Verfügung. Jeder Chipselect hat einen 256MB großen Speicherbereich (ein Display braucht den eher nicht, ein Flash oder RAM dagegen schon - wenn auch nicht ganz). In diesem Speicherbereich laufen die Zugriff auf die Peripherie. Die Hardware kümmert sich dann selber um das schalten der CS-Leitungen. Oder hab ich die Frage falsch verstanden? Grüße
>In diesem Speicherbereich laufen die Zugriff auf die Peripherie.
genau, das hab ich noch nicht ganz verstanden, wie die einzelnen
Vorgänge da nach einander ablaufen.
Wenn man z.B. seinen Programmcode im externen Flash-Speicher hat, wird
dann in diesem Speicherbereich die Adressen angelegt für den externen
Speicher, die benötigt werden für einen Zugriff?
Tina
> Wenn man z.B. seinen Programmcode im externen Flash-Speicher hat, wird > dann in diesem Speicherbereich die Adressen angelegt für den externen > Speicher, die benötigt werden für einen Zugriff? Also wenn ich z.B. ein externes Businterface habe, und habe mein 16Bit NOR-Flash dran mit dem Program (CS0 meistens). Außerdem habe ich an CS1 ein SRAM mit x KB/MB größe. In meiner IDE (Keil µVision) habe ich z.B. 3 möglichkeiten für onChip-Memory und 3 Möglichkeiten für offChip-Memory. Dort stelle ich ein das an CS1 (also in dessen Speicherbereich von - bis) Read/Write Speicher ist. Natürlich muss ich auch das NOR-Flash angeben (als ReadOnly Speicher). Der Compiler resp. Linker stetzt die Adressen dann automatisch um, im Startup-File müssen zudem die ChipSelects konfiguriert werden (Busbreite, Wait-States etc.). Die Adressen kann man natürlich auch manuell ansprechen über Pointer (z.B.). Natürlich auch erst nach Konfiguration. Bei einem 8051 mit seinem sehr begrenzen Adressraum braucht man z.B. externe Adressdecoder, die es einem ermöglichen Speicher, LCD etc. an den Datenbus zu hängen. Diese Logic hat der ARM bereits eingebaut. Außerdem hat man hier durch 32Bit Register wesentlich mehr Adressraum zur Verfügung. Welcher µC genau und welche IDE?
ich hab auch seit gestern die Keil µVision Umgebung. Jedoch hab ich da noch einige Probleme mit dem Linker-File (ELF wird bei GNU Compiler nicht erzeugt, obwohl das compilieren erfolgreich ist - keine ahnung, was da noch falsch ist) und das Startup-File muss ich mir auch noch genau anschauen. >In meiner IDE (Keil µVision) habe ich z.B. 3 möglichkeiten für onChip->Memory und 3 Möglichkeiten für offChip-Memory. unter Options for Target - Target? >Welcher µC genau und welche IDE? AT91RM9200 und Keil µVision - dazu gibt es als Beispiel-File von µVision das Blinky-Programm... >Startup-File müssen zudem die ChipSelects konfiguriert werden >(Busbreite, Wait-States etc.). im Startup-File vom AT91 sehe ich die ganzen Felder, wie NWS, WSEN etc. Kennst du dazu ein gutes pdf, Buch etc. wo ich mit diesen ganzen Werten besser vertraut werden kann? Chip-Select Signale sind mir schon ein Begriff - wird ein Speicher etc. am Datenbus hängend ausgewählt bzw. angesprochen.. Tina
Also ein Buch dazu kenne ich nicht. So viel ist das eigentlich nicht. Such mal bisschen im www. Außerdem stehen die Parameter alle in den Datenblättern drin. Den GNU Compiler nutze ich nicht, kann daher dazu leider auch nicht weiterhelfen. Aber unter Options - Target sind die Einstellungen. Bei dem RM9200 kommt es auch auf den Bootmode an (Boot-ROM oder Flash an CS0).
>Bei dem RM9200 kommt es auch auf den Bootmode an (Boot-ROM oder Flash an >CS0). anfangs wollte ich ohne Bootloader arbeiten, um mit der ganzen thematik warm zu werden.. und erst danach den u-boot bootloader wieder aufspielen... bis jetzt ist dieser bootloader noch drauf, den ich über die RS232 erstmal löschen muss, ansonsten kann ich eh nichts mit JTAG auf den Prozessor spielen... >Den GNU Compiler nutze ich nicht, kann daher dazu leider auch nicht >weiterhelfen. verwendest du den Keil CARM Compiler oder den RealView Compiler (mit dem funktioniert es bei mir bis jetzt). Bei den CARM Compilern hab ich gelesen, dass diese mit der neuen Installation von Keil nicht mehr mitgeliefert werden. Konnte jedenfalls keinen entsprechenden Ordner finden. Das Problem mit dem GNU Compiler haben zum Glück auch ein paar andere Leute, aber leider bis jetzt keine lösung im netz gefunden. Wahrscheinlich stimmt die Meldung, dass alles gelinkt worden ist, nicht. Aber warum der Linker nicht angesprochen wird - vielleicht muss man da irgendwas im linker-file noch verändern... Tina
Ich arbeite mit dem RealView Compiler .. bislang ohne Probleme. Den RM9200 kenn ich nur vom Datenblatt, ich arbeite Hauptsächlich mit den neueren SAM926x. Dort auch ohne Bootloader (also Programm im Flash an CS0). Welche Peripherien willst du denn anschließen? Nur RAM/Flash oder sonst noch was?
hab mir das board hier zukommen lassen. http://www.taskit.de/produkte/portux/index.htm auf dem Board sind zwei SDRAMs und ein Flash-Speicher mitintegriert.. aber erst einmal ist mir nur der flash wichtig - step by step. Tina
Wo genau ist das Problem? An dem ELF File? Startup? Oder überhaupt mal was blinken zu lassen?
http://www.keil.com/support/man/docs/uv3/uv3_ca_tool_options.htm hier werden dann die entsprechenden Adressen eingegeben für CS0, CS1 etc. Aber was ist genau der Unterschied zwischen ARM-Mode und Thumb-Mode bei der Code-Generation? Auf der Keil Homepage konnte ich bis jetzt auch noch nichts zu den Begriffen "Use Cross-Module Optimization" und "Use MicroLib" finden. >Wo genau ist das Problem? An dem ELF File? Startup? Oder überhaupt mal >was blinken zu lassen? Wenn ich den GNU Compiler verwende, bekomm ich kein ELF File. Build target -> 0 error and 0 warnings --> aber leider auch kein ELF-File. Das Startup-File muss ich mir genau anschauen... der erste schritt ist natürlich erst mal nur was blinken zu lassen, mehr nicht... Tina
ARM-Mode / Thumb-Mode Die ARM Kerne (ARM7/9) unterstützten zwei Befehlsmodi .. ARM und Thumb. Der ARM-Mode benutzt 32Bit Befehle, der Thumb Mode 16Bit. Im Allgemeinen kann man kurz sagen .. ARM Mode ist schnell, Thumb Mode macht kleinere Programmgrößen. Cross Module Optimization schmeißt - so weit ich weis - einfach Funktionen die nicht benötigt werden aus dem Programm raus und verkleinert somit das Program. In dem Zusammenhang .. wird in dem Startup auch die Main-Routine aufgerufen? Nicht das der Linker das alles rauswirft.. MicroLib: http://www.arm.com/support/faqdev/18376.html Beim Startup-File gibt es doch ne Art Konfigurationsbildschirm. Und warum kannst du JTAG nicht direkt nutzen? (ist das ne eigenart vom RM9200 ?) Grüße
>In dem Zusammenhang .. wird in dem Startup auch die Main-Routine >aufgerufen? wo genau muss die main denn aufgerufen werden? im c-file von Blinky.c existiert auf jeden fall eine main-routine. Im Startup-Code selbst wird main (void) nicht aufgerufen. ; Enter the C code IMPORT __main LDR R0, =__main BX R0 IF :DEF:__MICROLIB EXPORT __heap_base EXPORT __heap_limit ELSE ; User Initial Stack & Heap >Und warum kannst du JTAG nicht direkt nutzen? (ist das ne eigenart vom >RM9200 ?) hier wird mir der Zugriff verweigert... vll wegen dem u-boot bootloader, der installiert ist? Tina
Ok, also die Main Routine wird aufgerufen (Adresse von Main in R0 legen und zu Adresse in R0 springen). Prüf mal den BMS Pin. Wenn der High ist bei Reset, dann geht der in den Bootloader sonst startet er vom Flash. Möchtest du später darauf Linux laufen lassen?
betreibe das board mit 9volt und hab unter options for target - utilities in den settings vom ulink "erase full chip" angeklickt - aber beim load kommt immer folgende fehlermeldung: JTAG Communication Failure - die Comp LED vom Ulink leuchtet aber Flash Download Failed - targett DLL has been cancelled. >Möchtest du später darauf Linux laufen lassen? vielleicht später (den U-boot kann ich ja jederzeit wieder aufspielen, ist mitgeliefert worden) - zuerst mal nicht, sondern mit C/C++ Programmieren und die RS232 ansprechen und Ethernet etc. Tina
es gibt zwar auf diesem board einen jumper "bootmode" den ich schon mal gesetzt und nicht gesetzt habe bevor ich das board mit spannung versorgt habe, aber leider bringt das keine veränderung... ob der u-boot jedesmal startet kann ich grad nicht nachschauen, da ich kein RS232 crossover kabel hier habe, und der u-boot spricht nur über die rs232 schnittstelle... tina
Welches Flash hast du ausgewählt im µVision? Stell mal die Frequenz vom uLink kleiner ob da irgendein Problem ist. Im Datenblatt habe ich jetzt nicht gefunden ob man JTAG irgendwie anschalten muss (die NXP LPCs muss man das z.b.) .. hab aber nur kurz geschaut. ich schaue jetzt nochmal
unter target hab ich ROM1: 0x10 000 000 und als Size 0x800000 Startup
eingegeben.
im pdf von diesem Board steht drinnen:
Address
0x10 000 000 bis 0x1F FFF FFF
EBI
Chip Select 0. für das 4MB externe Flash.
Die Frequenz von Ulink hab ich jetzt auf 200kHz gestellt (unter Debug
settings) - unter utilities hab ich diese einstellung nicht gefunden.
unter utilities hab ich unter Programming algorithm AT49xV32x Flash mit
externen Flash 4MB angegeben und den Adressbereich von 0x10 000 000 bis
0x103FFFF eingegeben
>Im Datenblatt habe ich jetzt nicht gefunden ob man JTAG irgendwie anschalten muss
davon hab ich auch noch nichts gelesen im datenblatt.
Tina
>Welchen Level hat der JTAGSEL Pin?
ist genau das problem, ich hab von diesem board keine gute beschreibung
von taskit erhalten.. da steht nichts über die pins etc. drinnen... also
ob dieser gegen VCC gezogen worden ist...
Tina
Das Manual von Taskit ist mal gelinde gesagt ***ei*e .. Probier mal unter Options - Target - Debug - uLink ARM Debugger Settings - "Reset at Startup" einzuschalten. Vielleicht hilft dir das weiter.
das ist das ganze technische manual von taskit - aber wie du schon gesagt, hast ist es sehr schlecht... der Pin 105 (JTAGSEL) ist z.B. gar nicht erwähnt.. das mit dem Reset at startup hat leider nicht geholfen... Aber die Adressierung vom externen Flash mit 0x10 000 000 als Startpunkt und 0x0F FFF FFF als länge oder kürzer müsste passen. http://www.taskit.de/ftp/manuals/Portux_TechnicalReference.pdf (Seite 9) welche Position muss ich beim Linker angeben unter R/O und R/W Base? einen Wert ab 0x10 000 000? Tina
R/O also Read/Only ist das Flash (startup) R/W also der RAM (Read/Write) ist 0x20 000 000 (default)
kannst du kurz mal drüber schauen, ob ich noch irgendwelche haarstreubenden fehler in diesem file gemacht habe? Tina
waren noch irgendwelche fehler oder eingaben die ich nicht gemacht habe, drinnen? Tina
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.