Mein Ziel ist es also, (auf der Standardausgabe) eine Zahl mit einem Nios II-System auf einem FPGA Cyclone II Altera zu drucken.
MEINE SCHRITTE:
1) Ich habe das folgende Nios II-System mit dem Qsys- Tool (Quartus II) erstellt:
(NIOS II CPU - JTAG - ONCHIP SPEICHER RAM - SYS ID)
2) Ich habe den folgenden C-Code geschrieben:
#include <stdio.h>
int main(){
char a[13]="Hello world!";
printf("%s\n", a);
}
3) Ich habe das System auf das FPGA heruntergeladen und meinen Code mit dem Altera Monitor-Programm kompiliert und geladen , ich habe den Code ausgeführt und es funktioniert, mein Code druckt "Hallo Welt" auf dem Monitor-Programm-Terminal.
4) Also, ich habe versucht, eine Nummer zu drucken, und es schlägt fehl :(
HINWEISE: Ich habe versucht, %i mit %d %u zu ändern
Warum funktioniert es nicht?
Basierend auf dem Verifizierungsfehler und einem Blick auf Ihr Qsys-System ist nicht genügend RAM vorhanden.
In Qsys geht Ihr RAM von 0x4000 bis 0x7FFF. Wenn der JTAG-Programmierer jedoch versucht, die Nios-Firmware hochzuladen, versucht er, 0x4000 bis 0xE693 zu verifizieren. Das bedeutet, dass die Größe Ihres kompilierten Codes volle 0x6694 (26260) Bytes größer ist als der Arbeitsspeicher.
Durch die Verwendung von %i,d oder u zwingen Sie den Compiler dazu, die vollständigen Routinen für die Umwandlung von Ganzzahlen in Zeichenfolgen einzuschließen, was wiederum Divisions- und Modulcode erfordert. Dies wird ziemlich viel Platz beanspruchen. Viel mehr als %s, das wenig Code erfordert.
MadDogTannen
Tom Tischler
enable_small_c_library
, Abwählenenable_c_plus_plus
, Auswählenenable_reduced_device_drivers
, Abwählenenable_exit
undenable_clean_exit
. All dies reduziert den Code-Fußabdruck und verringert die Größe erheblich. Sie sind hauptsächlich da, wenn der Nios-Prozessor verwendet wird, um Dinge wie ein RTOS unter Linux auszuführen. Für kleine eingebettete Sachen verschwenden sie nur Platz.MadDogTannen
Use_small_C_library
Einstellung, ich habe es überprüft, aber es funktioniert nicht. (Ich meine mit on_chip_memory).