-
1. Data: 2024-06-25 15:31:47
Temat: Generowanie sumy kontrolnej z fragmentu pliku bin
Od: Atlantis <m...@w...pl>
Mam pewien projekt, do którego firmware jest budowany w wielu krokach (w
Makefile) z wielu różnych plików. Po drodze powstaje plik .bin, który
jednak nie jest produktem końcowym - docelowo binarka trafia na kartę
pamięci, skąd jest ładowana do RAM-u i wykonywana. W sofcie jest
zaimplementowana procedura liczenia sumy kontrolnej (CRC16) z tej części
pamięci, w której jest przechowywany kod wykonywalny. Na chwilę obecną
mogę dzięki temu upewnić się, że kod z każdym razem jest ładowany w
powtarzalny sposób - to jednak nie daje mi pewności, że nie ma błedów,
bo muszę jeszcze porównać sumę z obrazem generowanym na PC.
Potrzebuję więc jakiegoś narzędzia, które pozwoli mi w sposób
automatyczny (pod Linuksem, wewnątrz Makefile) wykonać następujący ciąg
operacji.
- Bierzemy fragment pliku bin - od określonego adresu i o określonej
długości.
- Liczymy z niego sumę kontrolną CRC16.
- Wyświetlamy wynik
- Zapisujemy wynik w tym samym pliku bin, pod określonym adresem (to w
przyszłości pozwoli mi zatrzymać wykonywanie programu, jeśli po jego
załadowaniu okaże się, że suma się nie zgadza).
Projekt jest retro, na antycznym CPU - stąd zastosowanie CRC16.
Konkretnie korzystam z procedury crc16_arc_f opisanej na tej stronie:
http://regregex.bbcmicro.net/crc-code.htm#crc-code.1
6.8080
-
2. Data: 2024-06-25 17:22:07
Temat: Re: Generowanie sumy kontrolnej z fragmentu pliku bin
Od: a...@h...invalid (Arnold Ziffel)
Atlantis <m...@w...pl> wrote:
> Potrzebuję więc jakiegoś narzędzia, które pozwoli mi w sposób
> automatyczny (pod Linuksem, wewnątrz Makefile) wykonać następujący ciąg
> operacji.
> - Bierzemy fragment pliku bin - od określonego adresu i o określonej
> długości.
> - Liczymy z niego sumę kontrolną CRC16.
> - Wyświetlamy wynik
> - Zapisujemy wynik w tym samym pliku bin, pod określonym adresem (to w
> przyszłości pozwoli mi zatrzymać wykonywanie programu, jeśli po jego
> załadowaniu okaże się, że suma się nie zgadza).
Wytniesz przez:
dd if=file.bin bs=1 skip=2 count=3 status=none
Spatchujesz plik przez:
dd bs=1 seek=2 count=3 conv=notrunc of=plik.bin.new status=none
Przykładowo:
$ yes test | head -n10 > file.bin
$ hexdump -C file.bin
00000000 74 65 73 74 0a 74 65 73 74 0a 74 65 73 74 0a 74 |test.test.test.t|
00000010 65 73 74 0a 74 65 73 74 0a 74 65 73 74 0a 74 65 |est.test.test.te|
00000020 73 74 0a 74 65 73 74 0a 74 65 73 74 0a 74 65 73 |st.test.test.tes|
00000030 74 0a |t.|
00000032
$ echo "ST" | dd bs=1 seek=2 count=2 conv=notrunc of=file.bin status=none
$ hexdump -C file.bin
00000000 74 65 53 54 0a 74 65 73 74 0a 74 65 73 74 0a 74 |teST.test.test.t|
00000010 65 73 74 0a 74 65 73 74 0a 74 65 73 74 0a 74 65 |est.test.test.te|
00000020 73 74 0a 74 65 73 74 0a 74 65 73 74 0a 74 65 73 |st.test.test.tes|
00000030 74 0a |t.|
00000032
Teraz tylko znaleźć program, który zrobi crc16 z linii poleceń -- na
szybko nie znalazłem, może się okazać, że będzie trzeba napisać jakiś
kawałek kodu w Pythonie albo czymś podobnym.
> Konkretnie korzystam z procedury crc16_arc_f opisanej na tej stronie:
> http://regregex.bbcmicro.net/crc-code.htm#crc-code.1
6.8080
Jeśli korzystasz z niestandardowej procedury to tym bardziej napisz jakiś
mały program. Z drugiej strony, mając program, możesz w zasadzie zrobić
całość w nim.
--
Najbardziej pamiętam jedną z wigilii, kiedy wyciąłem śliczne gwiazdki na
choinkę ze skórzanej kurtki mojego taty. Pamiętam też, że mleczaki
wypadły mi wcześniej niż rówieśnikom...
-
3. Data: 2024-06-25 18:24:17
Temat: Re: Generowanie sumy kontrolnej z fragmentu pliku bin
Od: Jacek Marcin Jaworski <j...@a...pl>
> Jeśli korzystasz z niestandardowej procedury to tym bardziej napisz jakiś
> mały program. Z drugiej strony, mając program, możesz w zasadzie zrobić
> całość w nim.
Ja mogę trzepnąć taki programik za parę stówek w C lub w C++ lub w D.
-
4. Data: 2024-06-25 18:40:35
Temat: Re: Generowanie sumy kontrolnej z fragmentu pliku bin
Od: LordBluzg(R)?? <m...@p...onet.pl>
W dniu 25.06.2024 o 18:24, Jacek Marcin Jaworski pisze:
>
>> Jeśli korzystasz z niestandardowej procedury to tym bardziej napisz jakiś
>> mały program. Z drugiej strony, mając program, możesz w zasadzie zrobić
>> całość w nim.
>
> Ja mogę trzepnąć taki programik za parę stówek w C lub w C++ lub w D.
>
Mogę Ci dorobić podkład muzyczny w C-dur :) za stówkę lub w A-mol,
bardziej nostalgiczny :D
--
LordBluzg(R)??
<<<?i? ć?d?? i Putina i ęjcaredefnoK>>>
-
5. Data: 2024-06-25 20:34:37
Temat: Re: Generowanie sumy kontrolnej z fragmentu pliku bin
Od: Adam <a...@p...onet.pl>
Dnia Tue, 25 Jun 2024 18:40:35 +0200, LordBluzgÂŽí źíˇľí źíˇą napisaĹ(a):
> W dniu 25.06.2024 o 18:24, Jacek Marcin Jaworski pisze:
>>
>>> JeĹli korzystasz z niestandardowej procedury to tym bardziej napisz jakiĹ
>>> maĹy program. Z drugiej strony, majÄ c program, moĹźesz w zasadzie zrobiÄ
>>> caĹoĹÄ w nim.
>>
>> Ja mogÄ trzepnÄ Ä taki programik za parÄ stĂłwek w C lub w C++ lub w D.
>>
> MogÄ Ci dorobiÄ podkĹad muzyczny w C-dur :) za stĂłwkÄ lub w A-mol,
> bardziej nostalgiczny :D
A moĹźesz wytĹumaczyÄ, czym siÄ róşni C-dur od a-moll, prz zaĹoĹźeniu, Ĺźe
masz na myĹli skalÄ naturalnÄ ?
--
Pozdrawiam.
Adam
-
6. Data: 2024-06-25 22:44:10
Temat: Re: Generowanie sumy kontrolnej z fragmentu pliku bin
Od: Atlantis <m...@w...pl>
On 25.06.2024 18:24, Jacek Marcin Jaworski wrote:
> Ja mogę trzepnąć taki programik za parę stówek w C lub w C++ lub w D.
Nie no, na spokojnie przeanalizuję sobie co robi ten asemblerowy kod
8080 i spróbuję napisać odpowiednik w C. Po prostu liczyłem na to, że
może nie trzeba będzie wyważać otwartych drzwi i któryś z linuksowych
kombajnów już to potrafi. :)