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

Emulaor JTAG i programowanie procesora - problem

ziobroo 16 Sie 2007 13:26 3002 7
  • #1 4183486
    ziobroo
    Poziom 12  
    Zaprojektowałem sobie mały układ na bazie procesora sygnałowego TMS320F2812. Posiada on złącze JTAG do programowania połączone jak poniżej:
    Emulaor JTAG i programowanie procesora - problem

    Używam emulatora Xds510PP plus i oprogramowania CCS 3.2 Platinium.
    Chyba wszystko dobrze skonfigurowałem i próbuję wgrać pierwszy program utworzony na podstawie tutoriala.
    Niestety nie udaje się.
    Wyskakuje błąd:
    Data veryfication failed at address 0x3FFFC0. Please veryfy target memory and memory map
    Sprawdziłem, że jest to adres w pamięci Boot Rom zawierający Reset Vector CPU Table, który odpowiada za skok do procedury sprawdzającej tryb bootowania. A więc wykrzacza się zupełnie na początku chyba.
    Nawet ustawienia mojego bootowania chyba nie mają wpływu na nic(mam na flash teraz) ??
    Na pewno procek generuje napięcia we/we na piny zewnętrzne 3.3 V. To jednak wcale nie wyklucza, że może się uszkodził procek prawda? Gdyż zasilanie rdzenia 1,8 volta jest niezależne. No, ale nie jestem w stanie sprawdzić tego czy rdzeń pracuje??

    Pomierzyłem napięcia na JTAGu w różnych etapach... może jakieś wnioski tutaj się komuś nasuną ?? :)

    Emulaor JTAG i programowanie procesora - problem

    Do JTAGA jest zasilanie na pin 5 podłączone z mojej płytki (3,3V), Emulator ma też swój własny zasilacz 5V. To dla wyjaśnienia

    Bardzo proszę o pomoc
  • #3 4196411
    ziobroo
    Poziom 12  
    Co do tego dokumentu.

    Są tutaj opisane 2 opcje programowania:

    􀂋 TMS320C2000 Code Composer StudioTM on-chip
    Flash programmer plug-in

    􀂋 SDFlash from Spectrum Digital Inc.
    (www.spectrumdigital.com)

    Rozumiem, że w moim przypadku ważna jest ta pierwsza.
    Tyle, że tam są chyba opisy do wersji starszej CCS. Bo jak otwieram Tools w CCS 3.1 Platinium moim, to rozwija mi się trochę inne menu.
    Nie ma opcji: F28xx On-Chip Flash Programmer.
    Czy to może znaczy, że czegoś nie zainstalowałem, lub nie otworzyłem jakiegoś projektu??
    (Jeszcze z ciekawości próbuję teraz ściągnąć narzędzia, żeby obsłużyć procka przez ten SDFlash utilities)


    Może napiszę od początku jak programuję mojego procka:
    1) Mam emulator XDS510PP Plus
    2) Zainstalowane CCS 3.1 Platinium
    3) Zainstalowałem driver SDConfig
    4) podłączam zasilania i emulator do mojej prostej plytki z prockiem przez JTAG
    5) W SDConfig ustawiam parametry jak w instrukcji: 378->EMU->XDS510PP Plus -> 0x378, Emulator Port Mode: ECP
    Chyba wszystko ok bo klikam na Emulator Test i odpowiedż:



    ** Emulator Scan Test

    -- Found JTAG IR length of 38

    -- Found 1 JTAG device(s) in the scan chain

    6) Odpalam CCS i w setupie najpierw ustawiam
    My System -> F2812 PP Emulator ->TMS320F2800

    potem w programie już klikam Debug->Connect i mam połączenie.
    7) Trzeba podobno jeszcze ustawić w Project-> Build Options i w opcji compiler-> preprocessor zmienić zawartość komórki Pre-define symbol.
    Wyczytałem w CCS help, że trzeba wpisać FILEIO, ale na przykład kolega mówi, żebym może wpisał CHIP_2812. Tutaj mam dużo wątpliwości.
    Jeszcze coś powinienem poustawiać, albo zainstalować jakiś driver??
    8) Po tym próbuje z tutoriala jakiś prosty program wgrać do Flash procka i błąd wyskakuje od razu.

    Data veryfication failed at address 0x3FFFC0. Please veryfy target memory and memory map

    Pomocy!!
  • Pomocny post
    #4 4196736
    __Grzegorz__
    Poziom 30  
    Goły CCS potrafi programować JEDYNIE RAM!

    Osobiście programuję Flash 2812 programem SDFlash.
    Jest z tym trochę jazdy (trzeba pamiętać o algorytmach programowania, które są różne dla różnych SILICON_VERSION tego samego procesora - bawiłem/bawię się procesorami w wersjach CE i CG).

    Przy pracy z SDFlash-em najpierw prawdopodobnie będziesz musiał przekompilować algorytm flashowania (dostosowując go do szybkości pracy Twojego procesora), o ile Twój procesor nie pracuje z zegarem 150MHz.

    Na szczęście poprawność skompilowania programu flashującego dla SDFlasha można (TRZEBA!) sprawdzić przez ToggleTest na wybranym pin procesora (ma być 10kHz).

    Trzeba to zrobić tylko jeden raz (o ile nie zmieniamy f zegara).

    Co należy dostosować, masz opisane w manualu dołączonym do SDFlasha...

    P.S.
    Cytat:

    Trzeba podobno jeszcze ustawić w Project-> Build Options i w opcji compiler-> preprocessor zmienić zawartość komórki Pre-define symbol.
    Wyczytałem w CCS help, że trzeba wpisać FILEIO

    Dobrze wyczytałeś :)
  • #5 4199139
    ziobroo
    Poziom 12  
    Nie mogę wyczytać, co zrobić, jeśli mam rezonator kwarcowy 20MHz zamiast 30MHz. Wiem jak zmieniać odpowiednią wartość rejestru PLL, ale nigdzie nie mogę znaleźć info o tym, gdzie zmienić wartość główną rezonatora.
    A to przecież jest chyba istotne.
    Postaram się może przelutować nowy rezonator 30 MHz na płytkę jak znajdę.


    Ważne pytanie!
    Jaka jest szansa, że coś spieprzę(na przykład zablokuję kod CSM), jeśli nie wykonam testu TOGGLE?? Nie mam na razie dostępu do oscyoskopu.
    Miernikiem tylko jestem w stanie zauważyć, że na wybranym pinie procesora pojawia się około 1.6 V po rozpoczęciu testu.

    Pozdrawiam i dzięki za pomoc
  • #6 4199221
    __Grzegorz__
    Poziom 30  
    Przy kwarcu 20MHz masz dwie możliwości:
    - ustawić mnożnik PLL na 7,5...
    - zmienić wartość stałej CPU_RATE w pliku Flash281x_API_Config.h w zależności od wartości Fosc (wartość stałej jest w umownych nanosekundach - dla 150MHz będziesz miał domyślne 6,667, a dla 20 MHz - 50 (przy założeniu że PLL nieaktywne lub mnożnik = 1))

    Zablokować procesor możesz permamentnie TYLKO wtedy gdy operujesz w sektorze A, gdzie jest CSM...
    Jeżeli tam nie sięgasz - nic złego nie powinno się stać,
    co najwyżej wejdziesz w stan głębokiego zubożenia Flasha w sektorze,
    w którym operujesz. Ale to tylko podczas kasowania sektora...
    Wyjście z tego stanu jest możliwe, ale zająć może DOWOLNĄ ilość czasu. :) Ja bym nie ryzykował...

    10kHz z ToggleTesta MUSISZ zrobić przed dalszymi eksperymentami...
    Tyle to powinien zmierzyć chyba dowolny miernik uniwersalny z pomiarem f...

    P.S. W wersji ewaluacyjnej CCS3.3 jest instalowany Flash programmer plug-in dla 2812.

    Po zalogowaniu się na stronę TI można CCS-a 3.3 pobrać stąd:
    LINK
    (ok 600MB)
  • #7 4200053
    ziobroo
    Poziom 12  
    Rzeczywiście oświeciłeś mnie Grzegorz.
    Zapomniałem całkiem, że mój miernik ma też pomiar częstotliwości do 20kHz (tak to jest jak się czegoś nie używa)

    Inna sprawa, że te propozycje z kwarcem 20MHz nie działają.
    Jak ustawię:

    1.
    //#define PLLCR_VALUE 0x000F // SYSCLKOUT = (OSCLK*15)/2 czyli niby to 7,5 o którym mówiłeś, ale nie wiem, czy tak to można zapisać. Nie wiem czy możliwe jest osiągnięcie więcej niż 5

    //#define CPU_RATE 6.667L // for a 150MHz CPU clock speed (SYSCLKOUT)


    To na pinie Toggle mam częstotliwość 6,58MHz

    2.
    A przy pętli PLL działającej i ustawieniach:


    // #define PLLCR_VALUE 0x0002 // SYSCLKOUT = (OSCLK*2)/2

    #define CPU_RATE 50.000L // for a 20MHz CPU clock speed (SYSCLKOUT)


    To mam to samo, czyli 6,59kHz

    3.
    Przy pętli PLL odłączonej(pin PLLDis do masy) i ustawieniach:

    // #define PLLCR_VALUE 0x0002 // SYSCLKOUT = (OSCLK*2)/2

    #define CPU_RATE 50.000L // for a 20MHz CPU clock speed (SYSCLKOUT)


    To mam na Toggle 1,32 kHz




    To już sam nie wiem. Albo mam coś źle zrobione, albo nie można w ten sposób tego robić. Próbuję różnych ustawień, ale na razie nie wyszło 10kHz ani razu.

    No i dziwi mnie to, że mam inne wyniki przy pinie PLLDis zwartym do masy i aktywnym, chociaż przelicznik PLL w obu przypadkach mam identyczny 2/2
  • #8 4200315
    __Grzegorz__
    Poziom 30  
    Z PLL-em przegiąłem - przepraszam - zakres mnożnika to od 1/2 do 10/2 czyli 5 :oops:

    Procedury flashujące MUSISZ kazać kompilatorowi zapisać do RAM! Przy uruchamianiu z Flasha - częstotliwość będzie ok 1,5x mniejsza, czyli mniej więcej taka jak u Ciebie...
    Na ten temat (pliki CMD, pragma CODE SECTION) będziesz miał wszystko w dokumencie SPRU018D:
    TMS320C1x/C2x/C2xx/C5x Assembly Language Tools w rozdziale 8

    :)

    Polecam lekturkę dołączoną do FlashAPI:
    http://focus.ti.com/docs/toolsw/folders/print/sprc125.html

    Tam krok po kroku jest opisane czego TRZEBA dopilnować aby programowanie Flasha przebiegło bez zakłóceń....

    DSP to hardcore - mnóstwo PDF do przerycia, ale daje satysfakcję...
REKLAMA