VMLAB-vraagje

Ik heb wat gespeeld met MPVMLAB. Van een reeds werkend projectje heb ik de beschikbare .c-files opnieuw gecompileerd tot .HEX-file. Deze HEX-file heb ik vergeleken met de (werkende) HEX die ik al had. Ik zag dat de - hexadecimale - inhoud niet volledig hetzelfde was. Bovendien werd de nieuwe HEX bijna 4kB groter dan de oorspronkelijke HEX.
Hoe dan ook heb ik mijn AVR geflasht met de nieuwe HEX. En het programma bleek nog steeds goed te werken!

Geen probleem natuurlijk, maar ik snap er ook niets van. Ik had verwacht dat de nieuwe HEX exact gelijk zou worden aan de oude. En nu dat niet zo bleek te zijn, had ik niet verwacht dat mijn projectje nog steeds goed zou werken.. Wie kan hier zijn licht over laten schijnen?

JoWi

Special Member

Verschillende versies van de compiler?
De PRO compiler heeft verschillende optimizer settings die in een kleiner (en sneller) programma resulteren.
En dan kan je ook nog het memory model kiezen...

[Bericht gewijzigd door JoWi op zaterdag 31 december 2016 12:54:49 (14%)

Ignorance is bliss

Als je nieuwere versie gebruikt hebt van dat MP-lab, dan heb je met het compileren misschien nieuwere verbeterde library's gebruikt. Bepaalde functies uit de c library hebben waarschijnlijk wat meer functionaliteit gekregen en wat verbeteringen ondergaan. De printf functie is hier o.a. een leuke in. Ik zeg dus niet dat het in deze functie zit. Maar dit is een voorbeeld zeer complexe en uitgebreide funcie die veel code bevat. De resulterende code kan vaak aanmerkelijk verkleind worden door in plaats van het gebruiken vn printf een andere oplossing te zoeken.

In de nieuwe library's kunnen functies dus uitgebreider en dus groter zijn dan in de oude. Als het goed gedaan is merk je daar ook niets van. Alleen wordt de resulterende code dan groter.

Arco

Special Member

Ik wist niet dat MPLab ook al AVR's ondersteunt?... (lijkt me heel sterk, want MPLab is al jaren niet meer ge-update)
Afhankelijk van ingestelde opties en compiler kan de grootte van de hexfile best een paar K varieren.
(Wel of niet gebruik van een functie als Cos/Sin/... kan de code al een paar k laten groeien, ook debug of release versie)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

@Arco Ik had een fout in de topictitel gemaakt. Is gecorrigeerd door moderator.)

De oorspronkelijke HEX heb ik niet zelf gemaakt, dus welke (versie) compiler is gebruikt weet ik niet. Ik heb de gratis VMLAB 3.15 gebruikt.

Arco

Special Member

Het had gekund, omdat de AVR nu ook onder de Microchip vlag valt... ;)
Zoals gezegd, met verschillende compilerinstellingen krijg je ook verschillen in grootte van de hexfiles, en freeware compilers optimaliseren ook vaak minder goed.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com