Kiedy kompiluję mój kod, uzyskuję Motorola S records (a.mot) z przerwami (cały zakres adresów nie obejmuje kodu i danych).Jak mogę wypełnić rekord S dwoma wartościami bajtowymi zaczynającymi się od granic adresu?
Chcę wypełnić te luki wzorem 0x01 0x80
. Ważne jest jednak, aby wszystkie pary dwubajtowe musiały rozpoczynać się od równych adresów. 0x0180
to kod operacji z mojego micro, który chcę wykonać, jeśli komputer osiągnie adres nieużywanego obszaru flash.
Przed rozpoczęciem odpowiadając Chciałbym powiedzieć, że -repeat-data w srec_cat ma problem:
- otrzymuje dwie sekcje np C i D umieścić jeden po drugim (D po C) w przestrzeni adresowej.
- Biorąc pod uwagę, że ostatni bajt sekcji C kończy na adres
0x76
i pierwszego bajtu sekcji D jest na adres0x78
. Innymi słowy, występuje między nimi luka o długości 1 bajta pod adresem0x77
.
W takiej sytuacji, w przypadku korzystania z -repeat-data 0x01 0x80
opcyjne Szal kot wypełnić tę jeden bajt o 0x01
i rozpocząć napełnianie następujące szczelinę od 0x80
.
Nie znam rozmiarów tych sekcji, ponieważ linker je obsługuje.
Osobiście rozwiązałbym to z szybkim skryptem w języku Python, nazywanym krokiem po łączu. – Vicky