CodeVision hat viele nette Features, darunter die automatische Generierung des Interrupt-Vektors.
Allerdings arbeite ich jetzt an einem sehr kleinen Bootloader und kann mir keine Interrupts leisten. CodeVision generiert den Interrupt-Vektor immer noch gerne am Anfang des Flash-Speichers, und ich konnte keine Möglichkeit finden, ihn auszuschalten.
Er ist entscheidend, da der Interrupt-Vektor beim kleinsten Bootloader 25 % des Platzes im Flash-Speicher einnehmen würde. (Bootloader mit 128 Wörtern, und der Interrupt-Vektor benötigt 32 Wörter für einen 16k-Atmega)
Ich setze "Externe Startup-Initialisierungsdatei verwenden" und verwende meine eigene startup.asm. Auch wenn ich nichts über die Interrupt-Vektoren einfüge, werden sie dennoch für die ausführbare Datei generiert.
Um einen ganzen Abschnitt wie diesen zu entfernen, müssen Sie im Allgemeinen ein benutzerdefiniertes Linker-Skript verwenden, und Sie müssen möglicherweise einen Teil des Startcodes hinter den Kulissen ändern oder entfernen, den Compiler normalerweise einwerfen. Obwohl Sie es für einen Bootloader mit 128 Wörtern sein können besser gedient, es in Assembler zu schreiben.
Die CodeVision Advanced (kostet 50 € mehr als die Standardversion) hat eine Option dafür im Menü Project|Configure|C Compiler|Advanced.
Daniel Grillo
vsz
void main(){}
Tatsächlich erzeugt eine vollständig leere startup.asm und eine Hauptquelldatei, die nur noch enthält, die Interrupt-Vektoren. In der Projektkonfiguration konnte ich nichts Relevantes finden und habe bei Google nach möglichen#pragma
Einstellungen gesucht, bisher erfolglos.Daniel Grillo
vsz
JimmyB
vsz
JimmyB
vsz