eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Generowanie sumy kontrolnej z fragmentu pliku bin
Ilość wypowiedzi w tym wątku: 6

  • 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. :)

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: