Hi!
Ich suche ein Buch, Tutorial oder eine andere Einführung, die mir die
absoluten Basics im Umgang mit einem ARM7 (vorzugsweise an einem ATMEL)
erklärt. Mir geht es dabei nicht um das Programmieren, das beherrsche
ich, sondern wirklich nur um die Eigenheiten des Controllers, wie die
Pins angesteuert werden, SPI, etc. Wichtig wäre mir dabei, dass nicht
einfach ein Block Code mit 'nem Kommentar da steht, sondern das wirklich
genau erklärt wird, was da passiert. Ich will danach verstehen, wie das
Ganze funktioniert und nicht nur den Code kopieren. Entwicklungsumgebung
ist auch schon vorhanden.
Gelesen habe ich schon ein paar Tutorials (und natürlich das Datenblatt
zu meinem Controller), aber das war alles nicht das, was mir das nötige
Wissen vermittelt um selbst etwas zu starten.
http://www.mikrocontroller.net/articles/ARM-elf-GCC-Tutorialhttp://www.embedded.com/design/opensource/200000632?_requestid=75269
...
Das wird nicht einfach. Es gibt nur eine Firma, die ein Interesse daran
hat den Chip so genau wie moeglich zu beschreiben und das ist der
Hersteller, in deinem Fall Atmel. Wenn das Datenblatt (oder Programmers
Manual), wie es auch immer heissen mag, in den 500-1000 Seiten die Info
nicht hat, die du suchst, dann kann nur noch Produkttraining des
Herstellers helfen. Oder natuerlich gezielte Fragen koennen evtl. auch
hier beantwortet werden. Deine Frage lautet, kann mir jemand ein Buch
empfehlen, das auf Transistor-Ebene beschreibt, wie diese mehr als 1 Mio
Transistorfunktionen zusammengeschaltet sind?
Bitte nimm mir das nicht uebel, hab frueher selbst Users Manual
geschrieben und die sind nie ausfuehrlich genug aber immer zu lang ;-)
Ach ja, hab was vergessen. Deine Frage ist etwas merkwuerdig gestellt.
Eigentlich moechtest du nicht wissen wie ein ARM (das ist der Core mit
dem ASM Befehlssatz) funktioniert, sondern wie ein bestimmter Chip
funktioniert und den hast du noch nicht mal benannt. Atmel hat > 50 ARM
basierende Chips.
Gruss, Robert
Wenn Du schon Ahnung hast, dann ist es ganz einfach:
1.) Die CPU hat beist einen umfangreichen Clock-Generator mit PLL und
anderen Qlock-Quellen (Intern, Extern, 32KHz Extern usw.) Die muss man
zu anfang einstellen.
2.) Alle Pherieperie-Teileinheiten haben extra Clock, den man aktivieren
muss (die haben meist so viel Pheriperie drin, da spart man doch einige
mA Strom). Dieser Extra Clock kann anderes parametriert werden als wie
der CPU Clock (andere Taktrate, siehe Datenbaltt über größt mögliche
Taktrate dieser Pheriperieeinheit).
3.) Alle IO_Port sind umfangreich in der Parametrierung, (Eingang mit
Pull-Up/Down, Analogeingang, Ausgang, Ausgangs Frequenz usw.)
Jetzt wo Du das weißt, sollte es leicht fallen etwas mit einem
ARM7-Controller anfangen zu können.
PS: Besser einen Cortex-M3 nehmen, denn der Cortex hat gleich einen
Systemtimer integriert. (z.B. für ms Takt)
Es geht ganz konkret um den AT91SAM7X256. Dafür existieren ja schon ein
paar Beispiele im Internet, aber die fangen leider nicht bei Null an.
Wenn ich jetzt mein eigenes Programm schreiben will, verstehe ich schon
nicht, wie ich vernünftig die Hardware initialisiere.
1
/* Enables the PIO to control the corresponding pin
2
* (disables peripheral control of the pin). */
3
AT91C_BASE_PIOB->PIO_PER=LED_MASK;// Set in PIO mode
4
AT91C_BASE_PIOB->PIO_OER=LED_MASK;// Configure in Output
5
6
/* Enable the peripheral clock. */
7
AT91C_BASE_PMC->PMC_PCER=1<<AT91C_ID_PIOA;
8
AT91C_BASE_PMC->PMC_PCER=1<<AT91C_ID_PIOB;
9
AT91C_BASE_PMC->PMC_PCER=1<<AT91C_ID_EMAC;
Die Kommentare hierbei sind zu dürftig, als das ich jetzt wüsste, wie
ich das bei mir anpassen müsste und das Datenblatt des Controllers setzt
da auch schon ein gewisses Grundwissen voraus, sodass ich auch nach
mehrmaliger Lektüre desselben nicht weiter weiß.