Hallo, Ich gugge bereits seit Stunden auf der Alteraseite aber so richtig finde ich keine C-Library zu zum NIOS Prozessor. Kennt jemand eine übersicht zu den Funktionen und Konstanten, welche für den NIOS Prozessor notwendig sind. Auserdem habe ich öffters mal das Problem, das konstanten nicht definiert sind. Zum die Konstante LCD_BASE gibt es nicht. (Altera Beispiel für LCD-Display). Was muss getan werden, damit alle Abhängigkeiten in der NIOS II IDE geladen werden? mfg
rennreh schrieb: > C-Library zu zum NIOS Prozessor. Hmm. > Kennt jemand eine übersicht > zu den Funktionen und Konstanten, welche für den NIOS Prozessor > notwendig sind. Nein. Aber üblicherweise verarbeitet ein Controller/Prozessor Assembler-Code. Diesen kann man sich komfortabel aus einer Hochsprach wie z.B. C generieren lassen. > Zum die Konstante LCD_BASE gibt es nicht. Die hat nichts mit dem Prozessor zu tun, sondern mit den daran angeschlossenen IP-Cores. Vielleicht solltest Du mal in diese Richtung suchen. Duke
Ganz grob gesagt, generiert dir der SOPC Builder, bzw die Software Build Tools in Quartus die entsprechende C Library, je nachdem welche Cores du eingebunden hast. Damit muessten auch die Header Dateien mit den Konstanten generiert werden. vektor
vektor schrieb: > Damit muessten auch die Header > Dateien mit den Konstanten generiert werden. Genau, die heist dann "system.h".
Johannes E. schrieb: > vektor schrieb: >> Damit muessten auch die Header >> Dateien mit den Konstanten generiert werden. > > Genau, die heist dann "system.h". und befindet sich unter software/syslib Gruß
Oki ich bin nun weiter gekommen. Nach weitere schwierigkeiten, was das richtige pinassignment belangt habe ich auch überwunden :) Seltsam finde ich es nur, dass der NIOS (der kleinte und langsamste) 64kB an speicher benötigt; und dabei habe ich echt nur ein kleines Hello-World programm. Mit 2x8Pio (für beide richtungen) und das LCD sowie UART über JTAG. Wieso brauch ich da soviel Speicher? gibt es da ein paar einsparungen/optimierungsmöglichkeiten?
1 | #include <stdio.h> |
2 | #include <stdlib.h> |
3 | #include "system.h" |
4 | |
5 | #include "altera_avalon_pio_regs.h" |
6 | int main (void) |
7 | { |
8 | FILE*lcd; |
9 | |
10 | char *text = "ein toller \n text!!!!\n"; |
11 | printf(text); |
12 | lcd = fopen(LCD_0_NAME,"w"); |
13 | if(!lcd) { |
14 | printf("scheisse"); |
15 | } |
16 | fwrite(text,strlen(text),1,lcd);fclose(lcd); |
17 | int counter = 0; |
18 | int i = 10; |
19 | while(1) { |
20 | if(counter == 200000) { |
21 | |
22 | |
23 | counter = 0; |
24 | |
25 | IOWR_ALTERA_AVALON_PIO_DATA(PIO_1_BASE,(i++) & 0xff); |
26 | |
27 | } |
28 | |
29 | counter++; |
30 | } |
31 | |
32 | return 0; |
33 | } |
mfg
Ich will ja nicht klugscheißern, aber etwas mehr Präzision in deinen Texten wäre schon angebracht. Der "kleinste Nios" braucht gar keinen Speicher, sondern dein Programm. Und dass dein Programm nach Compile und Link so groß geworden ist, das liegt vermutlich daran, dass die Fließkommabibliothek dazugebunden wurde. Hat nix mit Nios zu tun, ist eher das Problem eines Programmierers, der auf dem PC aufgewachsen ist und erstmals in die Embedded-Welt eintaucht. Von Altera gibt es eine Abhandlung mit dem Titel "reducing code footprint" oder so ähnlich. Die erklärt, was zu tun ist. Ersetzte mal printf durch puts, das bringt schon viel! Und goggle mal nach reducing code footprint altera. Grüße, Harald
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.