Forum: FPGA, VHDL & Co. Altera NIOS-C Library und Softwareabhängigkeiten


von rennreh (Gast)


Lesenswert?

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

von Duke Scarring (Gast)


Lesenswert?

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

von vektor (Gast)


Lesenswert?

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

von Johannes E. (cpt_nemo)


Lesenswert?

vektor schrieb:
> Damit muessten auch die Header
> Dateien mit den Konstanten generiert werden.

Genau, die heist dann "system.h".

von Ich (Gast)


Lesenswert?

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ß

von Rennreh (Gast)


Lesenswert?

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

von Harald F. (hfl)


Lesenswert?

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
Noch kein Account? Hier anmelden.