jvoytech wrote: Tak bez powodu, przyda się. Jeżeli projekt publiczny to co przeszkadza wygenerować do katalogu ELF, HEX,BIN? Zainteresowany może wybrać ulubioną opcję a nas nic to nie kosztuje.
Nie twierdzę, że przeszkadza. Bardziej mnie zastanawia po co? Mając elf, użytkownik sobie wygeneruje pozostałe pliki o ile potrzebuje, a zwykle potrzebować nie będzie.
jvoytech wrote: Z tym zyskiem to poleciałeś. Przecież to ma praktycznie zerowy koszt (no może parę milisekund). Ale kompaktowość i brak bałaganu jest faktycznie dużą zaletą.
Też tak myślałem, zdziwiłem się kiedy wyłączyłem generowanie tych dodatkowych plików. I nie że mam jakiś stary komp - raczej na dzień dzisiejszy dosyć topowy. Jednak przetrawienie sporego elfa najwyraźniej nie jest aż tak krótkie. Oczywiście nie piszę o jakichś kolosalnych oszczędnościach, ani nawet sensownych. Ale da się je odczuć.
jvoytech wrote: HEX/BIN to prostota. Prosty skrypt może ogarnąć automatyzację podmiany stałych w pamięci FLASH, gdyby zaszła potrzeba modyfikacji firmware pod końcowe urządzenie. Z ELF też się da, ale to nie jest już takie proste.
To prawda, jeśli musisz manipulować plikiem to hex jest prostszy. Jest to też związane z istnieniem np. SRecord do manipulacji, niestety chyba nie obsługuje on elfów. Można to samo osiągnąć przy pomocy innych programów, ale faktem jest, że nie są one w toolchainie. Z drugiej strony to też zależy co chcemy zmieniać - jeśli tylko np. dodać CRC to faktycznie hex z powodów jak wyżej jest lepszy, jeśli np. komuś przyjdzie do głowy usunięcie lub relokacja segmentów to już tylko elf.
rb401 wrote: Ale zaleta, o której tu mówisz, dotyczy akurat specyfiki konstrukcji AVRów, gdzie faktycznie jedyną możliwością by to był jeden plik, to format elf. Z powodów znanych.
Raczej sposobu działania programów kontrolujących programatory. Nic nie stoi na przeszkodzie, aby nawet dla AVR wszystko było w jednym hex - w końcu te odrębne elementy zajmują oddzielne wirtualne adresy. Jednak twórcy narzędzi zdecydowali inaczej.
rb401 wrote: W przypadku różnych innych uC (np. ARM, PIC24), gdzie wszystkie rzeczy do zaprogramowania (FLASH, EEPROM, bajty konfiguracyjne itd.) znajdują się w jednej przestrzeni adresowej, tego problemu nie ma i pojedynczy plik hex jest w stanie przechować pełną informację potrzebną programatorowi.
Raczej konfig fuse/lock bitów dla ARMów (przynajmniej niektórych) też musisz mieć osobno, nie ma go w hexie.