Hiho,
ich habe es hingekriegt mti meinem JTAG die Device ID und
Prozessorspannung zu lesen.
Nun wollte ich ein stinknormales LED-Toggle Programm schreiben, und
anscheinend hat das Atmel Studio 6 Probleme mit diesem Conntroller, da
der Compiler bei den Include Funktionen anfaengt zu meckern.
Hier ist erstmal der Code:
1
#include<avr32/io.h>
2
#include"gpio.h"
3
#include"sysclk.h"
4
#include"delay.h"
5
6
intmain(void)
7
{
8
sysclk_init();
9
delay_init(sysclk_get_cpu_hz());
10
11
while(1)
12
{
13
gpio_tgl_gpio_pin(AVR32_PIN_PA10);
14
delay_ms(500);
15
}
16
}
dem compiler gefaellt es nicht, dass es keiner der Boards aus dem ASF
Wizard ist, und er deswegen anscheinend nicht die noetigen Bibliotheken
aus den Include Befehlen einbinden kann.
Ich bin gerade extremst am verzweifeln, da wenn er schon bei so einem
Dreizeiler wegen den Bibliotheken nervt, will ich es mir gar nicht erst
vorstellen, wie er rumnerven wird wenn ich einen Scheduler auf das Teil
packen soll.
Waere ganz cool, wenn da jemand eine Loesung wuesste,
vielen Dank und grueße, bmtil
M. V. schrieb:> dem compiler gefaellt es nicht, dass es keiner der Boards aus dem ASF> Wizard ist, und er deswegen anscheinend nicht die noetigen Bibliotheken> aus den Include Befehlen einbinden kann.Das ist die Fehlermeldung?!
Include-Anweisungen binden keine Bibliotheken ein. Headerdateien (*.h)
sind keine Bibliotheken (Library, *.lib oder *.a, je nach Compiler).
Ok, vllt. war "Library" der falsche Begriff.
Ich moechte im Endeffekt nur die LED zum blinken bringen ueber die Delay
Funktionen, und bis jetzt ging das immer wenn ich das delay.h ueber
inlcude reingeschrieben habe.
Der Compiler mecker ueber die Zeilen:
sysclk_init();
delay_init(sysclk_get_cpu_hz());
Das Problem ist, der Prozessor laeuft nur mit internen 32kHz und in der
"sysclk.h" werden die pll.h definiert, die ich aber nicht nutze.
Ich glaube die Loesung waere einfach nur am Anfang des Programms sagen
dass der Prozessor mit 32kHz laeuft.
Geht das einfach mit:
define CPU 32000Hz
?
achja, außerdem kommmen die Fehlermeldungen:
undefined reference to 'delay_ms'
und
undefined reference to gpio_tgl_gpio_pin'
M. V. schrieb:> Der Compiler mecker ueber die Zeilen:> sysclk_init();> delay_init(sysclk_get_cpu_hz());
Der Compiler "meckert" also. Die Fehlermeldung lautet also "Gemecker",
oder wie?
M. V. schrieb:> achja, außerdem kommmen die Fehlermeldungen:>> undefined reference to 'delay_ms'
Na, das ist ein Linkerfehler. Da fehlt wohl eine Library.
Rufus Τ. Firefly schrieb:> Der Compiler "meckert" also. Die Fehlermeldung lautet also "Gemecker",> oder wie?
Wenn ich f7 druecke, dann kommen unten wo die Fehler gemeldet werden
diese beiden Zeilen mit einem roten Kreis dahinter.
> M. V. schrieb:>> achja, außerdem kommmen die Fehlermeldungen:>>>> undefined reference to 'delay_ms'>> Na, das ist ein Linkerfehler. Da fehlt wohl eine Library.
Und das versteh ich nicht, ich meine es ist doch die delay.h
eingebunden, da eine Library noch fehlt, frage ich mich welche genau.
Offensichtlich fehlt mir eine .lib datei, kann es sein dass die Delay
Funktionen in einer Bibliothek stecken, die nicht unbedingt "delay"
heisst?
M. V. schrieb:> Wenn ich f7 druecke, dann kommen unten wo die Fehler gemeldet werden> diese beiden Zeilen mit einem roten Kreis dahinter.
Das ist kein Gemecker des Compilers, sondern Gemecker des Linkers. Der
kann Dein Programm nicht linken, weil in keiner der ihm angegebenen
Libraries die beiden Funktionen zu finden sind.
Lies die Dokumentation Deiner Entwicklungsumgebung, da wird beschrieben
sein, wie man eine Library zu einem Projekt hinzufügt (und wie Libraries
heißen), und obendrein wird auch irgendwo beschrieben sein, in welcher
Library die beiden Funktionen zu finden sind.
Üblicherweise gibt es eine Dokumentation der mitgelieferten Libraries,
in der man nach den Namen von Funktionen suchen kann, und in der
beschrieben ist, was die Funktion macht, in welcher Headerdatei sie
deklariert ist und in welcher Library die Implementierung zu finden ist.
Hast du GPIO, SCFI (System Clock Interface) und PM (Power Manager) über
Project --> Select Drivers from AVR Software Framework...
hinzugefügt ?
Dabei unterstelle ich dir einfach mal, dass du das AVR Studio 5 =)
verwendest ;)
Ich verwende Atmel Studio 6.
Das mit dem ASF Wizard habe ich im ersten Anlauf gemacht und die
entsprechenden Libraries zugefuegt. Das Problem beim kompilieren war
dann, dass der Linker anscheinend nicht verstanden hat welches Board ich
benutze (Schon der ASF Wizard hat ein Fenster ausgegeben mit einer
Warnung dass bei meinem Board wahrscheinlich nichts funktioniert wird).
Im Endeffekt muss ich anscheinend so vorgehen:
Durch den ASF Wizard die libraries (delay, power manager, sysclock, etc)
zufuegen.
Dann in die entsprechenden .h und .c Dateien dieser Libraries reingehen
und diese an mein Board anpassen (zum Bsp. in den pll.h explizit sagen
dass ich die interne 32kHz nutze und meine pll Pins nicht angeschlossen
sind).
Dann das ganze Ding nochmal durchkompilieren, hoffen das alles passt und
draufflashen.
Meine Fresse, so ein geraffel um 4 Zeilen Code dem Controller
beizubringen -.-