[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