[De-Nut-Discussion] Oscillator als main Takt verwenden
Harald Kipp
harald.kipp at egnite.de
Wed Oct 7 20:02:44 CEST 2009
Dominik Schröder wrote:
> Ich möchte anstatt eines Quarzes, einen Oszillator (angeschlossen an XIN)
> als main Takt verwenden. Sehe ich das richtig, dass ich in der Datei
> at91_pmc.h die Register CKGR_MOSCEN auf 0 und CKGR_OSCBYPASS auf 1 setzen
> muss? Wenn ja, muss ich Ethernut dann neu compilieren oder reicht es meine
> Applikation neu zu compilieren? Muss ich sonst noch irgendwelche Bits
> setzen?
Nein, das wäre fatal. Die Definitionen in at91_pmc.h spiegeln die
Hardware wieder, in diesem Fall die Bitmasken, um an diese Flags zu kommen.
Die Initialisierung der Clock passiert in der Datei
nut/arch/arm/init/crtat91sam7sex_rom.S
welche von
nut/arch/arm/init/crtat91sam7xXXX_rom.S
included wird, wobei XXX die Flashgröße angibt, also 128, 256 oder 512.
Ist alles in Assembler, aber trotzdem leicht anzupassen.
ldr r1, =PMC_BASE
Lädt 0xFFFFFC00 in Register r1
mov r0, #(6 << 8)
Lädt 0x600 in Register r0
orr r0, r0, #CKGR_MOSCEN
Setzt Bit 0 von Register r0
str r0, [r1, #CKGR_MOR_OFF]
Speichert Inhalt von r0 nach Adresse (r1 + 0x20)
Also 0x601 nach 0xFFFFFC20 (CKGR_MOR)
wait_moscs:
ldr r0, [r1, #PMC_SR_OFF]
tst r0, #PMC_MOSCS
beq wait_moscs
Die Schleife wartet, bis Bit 0 (MOSCS) in Register PMC_SR gesetzt ist.
Keine Ahnung, ob man die benötigt, wenn man einen externen Oszillator
verwendet.
Wenn man
mov r0, #(6 << 8)
orr r0, r0, #CKGR_MOSCEN
gegen
mov r0, #CKGR_OSCBYPASS
austauscht, könnte es schon funktionieren. Mangels Hardware kann ich das
nicht selbst testen.
Danach muss Nut/OS selbst neu compiliert und die Anwendung neu gelinkt
werden.
Um die Originaldateien nicht anzurühren, kann man in der Liste
arm_ld_choice in der Datei repository.nut einen neuen Eintrag einfügen,
z.B. at91sam7xcustom.
Dann kopiert man crtat91sam7sex_rom.S nach crtat91sam7xcustom.S und
nimmt darin die Änderung vor. Zusätzlich muss noch at91sam7xXXX_rom.ld
nach at91sam7xcustom.ld kopiert werden, wobei XXX wieder entsprechend
der Flashgröße gesetzt wird.
Nun kann man im Konfigurator unter Tools/GCC Settings/ARM Linker Script
den neuen Eintrag at91sam7xcustom auswählen und unter einer neuen
Board-Konfiguration abspeichern.
Harald Kipp
More information about the De-Nut-Discussion
mailing list