Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Marvell 88i8945/ARM9/Feroceon - J-tag zaprogramowanie, dysponuje Wigller LPT.

Marvell_88i8945 28 Paź 2016 18:07 864 5
  • #1 28 Paź 2016 18:07
    Marvell_88i8945
    Poziom 3  

    Witam, jestem nowym użytkownikiem forum. Miło mi.
    Pisze ten temat ponieważ jestem początkujący w dziedzinie interfejsu J-tag i ogólnie architektury ARM.
    Posiadam PCB 2060-701640-001 REV A, z procesorem ARMv9 feroceon Marvell 88i8945. Procesor jest elektrycznie sprawny, niestety ma wgrany nieprawidłowy program, przez co procesor nie działa. Czytając wiele na temat interface jtag postanowiłem "pobawić" się z tym procesorem.
    A więc zbudowałem sobie prostego Wigglera na LPT wykorzystując układ 74HC245, oraz openocd w wersji 0.10.
    Polutowałem również prawidłowo sygnały i zacząłem zabawę.
    Program zobaczył ID procka, podstawowe informacje na ten temat.
    i zacząłem debugowanie, zgrałem dump pamięci 0xfff00000 0x40000 i potwierdziło się jest tam, kod który jest nieprawidłowy(mam obie kopie, pierwsza z nich prawidłowa, druga nieprawidłowa), Mam również plik o wielkoci 256kb, który zapisany jest FF i chciałbym móc wgrać ten plik, aby wyczyścić ten nieprawidłowy program, a następnie wgrać z powrotem ten prawidłowy.
    Próbowałem wgrywać z polecenia load_image, i niby coś wgrało ale po restarcie płytki ponowny dump obszaru 0xfff00000 nic się nie zmieniło.
    Dalej próbowałem również z polecenia Flash_write, ale za każdym razem otrzymuję informację: Invalid subcommand in procedure flash.
    Próbowałem też w innych softach wykryć procesor, ale H-jtag nie widzi ID tego procesora, czy też pisze że interface J-tag nie jest podłączony itd itp. Szukam sugestii co robię źle, nie tak. Ewentualnie jakiegoś wsparcia, jak mogę zaprogramować powtórnie pamięć prawidłowym programem. Pozdrawiam !!

    Ps. Czytając podobny temat poruszany po forum: https://www.elektroda.pl/rtvforum/topic2961219.html brak konkretów.

    Ps2 gdyby ktoś miał ochotę zdalnie dysponuję Teamviewer nie ma problemu.

    0 5
  • #3 13 Gru 2016 08:40
    Freddie Chopin
    Specjalista - Mikrokontrolery
  • #5 13 Gru 2016 17:46
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Użyj następującej komendy:

    openocd <pliki-konfiguracyjne-jtaga-i-ukladu> -c "program plik.bin verify reset exit <adres-pod-ktory-maja-trafic-dane>"

    <pliki-konfiguracyjne-jtaga-i-ukladu> - zapewne coś na styl "-f interface/...cfg -f target/...cfg", jednak mogą tam być też komendy od prędkości JTAGa czy konfiguracji resetu
    <adres-pod-ktory-maja-trafic-dane> - zapewne będzie to 0xfff00000

    Wgrywasz tylko plik docelowy, to co sobie przygotowałeś do niby skasowania pamięci nie ma sensu.

    Przy okazji istnieje spora szansa, że po prostu wgrywasz kod do RAM, a normalnie jest on ładowany z pamięci nieulotnej z jakiegoś zupełnie innego adresu. To właśnie te oryginalne adresy powinieneś zmodyfikować. Jeśli tego nie zrobisz, po resecie będziesz znów widział na tych adresach to co wcześniej.

    0
  • #6 13 Gru 2016 19:45
    Marvell_88i8945
    Poziom 3  

    Freddie Chopin napisał:
    Użyj następującej komendy:

    openocd <pliki-konfiguracyjne-jtaga-i-ukladu> -c "program plik.bin verify reset exit <adres-pod-ktory-maja-trafic-dane>"
    Zdaje mi się, że próbowałem używać tych komend, i zwrot był jeden:
    Invalid subcommand in procedure flash, coś w ten deseń.
    Freddie Chopin napisał:
    <pliki-konfiguracyjne-jtaga-i-ukladu> - zapewne coś na styl "-f interface/...cfg -f target/...cfg", jednak mogą tam być też komendy od prędkości JTAGa czy konfiguracji resetu
    <adres-pod-ktory-maja-trafic-dane> - zapewne będzie to 0xfff00000

    Wgrywasz tylko plik docelowy, to co sobie przygotowałeś do niby skasowania pamięci nie ma sensu.
    Tak wiem, Flash znajduje się pod adresem 0xffff0000 size 0x40000
    i tam próbuję wgrywać właściwy program. Jednak jak widać bez skutku.
    Freddie Chopin napisał:
    Przy okazji istnieje spora szansa, że po prostu wgrywasz kod do RAM, a normalnie jest on ładowany z pamięci nieulotnej z jakiegoś zupełnie innego adresu. To właśnie te oryginalne adresy powinieneś zmodyfikować. Jeśli tego nie zrobisz, po resecie będziesz znów widział na tych adresach to co wcześniej.
    Być może jest to RAM, nie mam pojęcia, domyślam się że jest to właściwy obszar gdzie ma znajdować się właściwy program.

    0
  Szukaj w 5mln produktów