logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Czym odczytać mikrokontroler ST30F774 (ARM7TDMI) przez interfejs JTAG ?

velsper 13 Wrz 2025 15:34 312 2
REKLAMA
  • #1 21688883
    velsper
    Poziom 29  
    Posty: 967
    Pomógł: 176
    Ocena: 110
    Witam,

    Mam płytkę z układem ST30F774 (ARM7TDMI), potrzebuję do celów eksperymentalnych zgrać zawartość pamięci Flash tego mikrokontrolera po JTAG, i teraz mam pytanie - jakim narzędziem / programem mogę to zrobić?

    Wersję z 256kB pamięci (ST30F772) można odczytać i zaprogramować bez problemu JLinkiem, wybierając z listy obsługiwanych układów STR730FZ2, albo podobny z tej grupy - zapis i odczyt działa bez problemu. Problemem jest to, że JLink obsługuje układy o maksymalnej pojemności 256kB z tej grupy ARM. Ten ma 512kB.

    Jestem w stanie używająć JLink-a połączyć się jako FZ2 do ST30F774, jestem w stanie odczytać i zapisać pierwsze 256kB pamięci. Pytanie, co z resztą? Nie ma raczej możliwości zmian parametrów dla gotowych zdefiniowanych układów w oprogramowaniu Seggera, albo ja nie potrafię znaleźć takich opcji (software w wersji 6.52 albo 7.88).

    Jeszcze raz piszę - odczyt i ewentualnie zapis jako eksperyment - komercyjne debuggery za ciężkie pieniądze pokroju PLS czy innego UDE odpadają. Jak się uda, to dobrze, jak nie - to nie.
  • REKLAMA
  • #2 21689052
    Andrzej Ch.
    Poziom 33  
    Posty: 2238
    Pomógł: 223
    Ocena: 388
    Pytałeś AI, nie wiem na ile to prawda, ale podpowiedział mi tak:
    Narzędzia, które poradzą sobie z > 256 KB Flash przez JTAG:

    Segger J-Link (oryginalny, nie „mini EDU” tylko pełny ARM)

    Obsługuje ARM7TDMI i pamięci > 256 KB.

    Soft J-Flash ARM umożliwia odczyt całego flasha (o ile brak blokad).

    Najpewniejsze rozwiązanie, stabilne i szybkie.

    Lauterbach TRACE32

    Profesjonalny debugger, radzi sobie z dowolnym rozmiarem flasha.

    Bardzo drogi, stosowany raczej w serwisach/firmach automotive.

    Olimex ARM-USB-OCD-H / ARM-USB-TINY-H + OpenOCD

    OpenOCD ma sterowniki dla ARM7TDMI, umożliwia dump całego flasha.

    Konfiguracja wymaga wskazania odpowiedniego drivera flasha (czasem trzeba pisać własny, jeśli układ nie jest wprost obsługiwany w OpenOCD).

    Teoretycznie ograniczeń co do 256 KB nie ma – tylko trzeba mieć poprawny skrypt.

    ULINK2/ULINKpro (Keil)

    Obsługa ARM7 i dużych pamięci flash.

    Integracja z Keil MDK-ARM → można robić pełne dumpy pamięci.
  • #3 21689239
    velsper
    Poziom 29  
    Posty: 967
    Pomógł: 176
    Ocena: 110
    JLinka mam w wersji Base, ale nie sądze, żeby wersja "full" obsługiwała więcej układów, a już tym bardziej jakieś archaiczne wynalazki, do których już nawet producent się nie przyznaje.

    Na chwilę obecną chyba jedyną opcją jest spróbowanie dołożenia obsługi nowego układu do istniejącego softu, pozostaje tylko pytanie, jak to zrobić. Jest co prawda wiki Seggera na ten temat, ale pozostaje kwestia loadera. Loader jest co prawda, zaszyty gdzieś w oryginalnym oprogramowaniu i nie bardzo wiem, jak z niego skorzystać. OpenOCD też pozostaje do ewentualnego rozpatrzenia, ale nie bawiłem się jeszcze nim.

    Jak już pisałem - wszelkie komercyjne rozwiązania pokroju Trace32 czy PLS UDE w cenie mieszkania odpadają.

    Może konkretniej:

    ST30F774 znalazłem na płycie od starego sterownika poduszek powietrznych od jakiegoś VW; sterownik produkcji TRW, konkretnie 3C0909605J. Jako iż płytka służy jako dawca elementów, a na płytce znajduje się rzeczony ARM, postanowiłem się trochę poznęcać nad nim. Znalazłem gdzieś resztki dokumentacji i udało mi się zlokalizować port JTAG. Jako iż JLink miałem pod ręką, to się podłączyłem, oczywiście, po małej modyfikacji (kontroler zasilania modułu ma watchdoga, który co chwilę resetował MCU, więc trzeba było się go pozbyć, a sam układ zasilić osobno z 5V).

    Grzebiąc za dokumentacją do samego układu, znalazłem filmik, gdzie autor czyta i pisze podobny układ od liczników GM, z tym, że u niego jest 30F772 (ten akurat ma 256kB), czyta i pisze go jak STR730FZ2, z powodzeniem - u niego działa. Filmik tu: https://www.youtube.com/watch?v=I6MRF1tVeKI

    Idąc tym tropem podłączyłem swój 30F774, eksperymentalnie ustawiłem STR730FZ2 i układ się odczytał bez problemów. Zapis też poszedł, weryfikacja OK. Tyle, że tylko pierwsze 256kB. Stąd też pytanie jak w temacie. Paradoksalnie, podgląd pliku pokazuje, że oprogramowanie sterownika w mikrokontrolerze zajmuje tylko pierwsze 128kB, reszta to same 0xff. Być może dalej nic nie ma, ale chciałbym to sprawdzić.

    Uprzedzając pytania pokroju: " po co Ci to? ", " ten sterownik się czyści innaczej ", itp... Odpowiadam: nie mam zamiaru nic programować, czyścić, instalować, naprawiać. Chcę się tylko dowiedzieć z czystej ciekawości, czy można ten układ odczytać w pełni (w miarę tanio), czy nie. Tylko tyle.
REKLAMA