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

Programowanie Xilinx XC9572XL (XC9500XL) CPLD z OpenOCD

saper_2 15 Lut 2012 21:26 13494 30
  • #1 15 Lut 2012 21:26
    saper_2
    Poziom 17  

    Wstęp
    Jako ,że w końcu po chyba 2 latach od zakupienia elementów i złożenia zakupionego jtag'a w końcu znalazłem trochę czasu :lol: na próby z CPLD które się udały :). Postanowiłem więc napisać krótko co i jak dla innych którzy będą chcieli ruszyć CPLD (FPGA) z OpenOCD, a jakoś ich to odstrasza, lub po prostu nie ogarniają tego ;) .
    Zestaw jakim się posługuję:
    - JTAG: jtag-lock-pick ( http://www.freddiechopin.info ) na sterownikach libusb
    - OpenOCD 0.5 x64
    - Xilinx XC9572XL VQ64 -7C (LQFP-64)
    - Xilinx ISE 12.1
    - I jeszcze jakiś program do obsługi Telnet'u (np. mój ulubiony putty :) - http://www.chiark.greenend.org.uk/~sgtatham/putty/ )

    Tak wygląda moja płytka i wszystko połączone :D :
    Programowanie Xilinx XC9572XL (XC9500XL) CPLD z OpenOCD Programowanie Xilinx XC9572XL (XC9500XL) CPLD z OpenOCD

    OpenOCD
    A więc tak, najpierw oczywiście potrzeba OpenOCD w wersji x32 lub x64 (mam win7x64 więc wybrałem wersję 64bit :) ) - do pobrania ze strony Freddie Chopin'a. Potem instalujemy JTAG'a używając sterowników libusb (też od Freddie'go :) ). Następnie łączymy jtag'a z układem (TDI, TDO, TCK, TMS, Vcc, GND, zaś linie nTRST i nSRST są nie potrzebne - pozostawiamy niepodłączone), chciałbym zaznaczyć ażeby upewnić się, że zworka zasilania buforów w jtag'u jest: nieustawiona (zasilanie z układu) albo ustawiona na 3,3V. Po dokładniejsze informację odsyłam do opisu jtag-lock-pick'a na wspomnianej wcześniej stronie Freddie'go Chopin'a.





    Otwieramy wiersz poleceń, przechodzimy do katalogu bin OpenOCD i sprawdzamy czy widać lock-pick'a i czy jest też widziany podłączony cpld (ja u siebie zmieniłem nazwę openOCD na openocd-x64.exe):

    Code:
    D:\Projects\Tools\openocd-0.5-x64\bin>openocd-x64 -f interface/jtagkey.cfg -c "adapter_khz 100"
    
    Open On-Chip Debugger 0.5.0 (2011-08-09-23:26)
    Licensed under GNU GPL v2
    For bug reports, read
            http://openocd.berlios.de/doc/doxygen/bugs.html
    Info : only one transport option; autoselect 'jtag'
    100 kHz
    Info : clock speed 100 kHz
    Warn : There are no enabled taps.  AUTO PROBING MIGHT NOT WORK!!
    Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -expected-id 0x29604093 ..."
    Warn : AUTO auto0.tap - use "... -irlen 8"
    Warn : gdb services need one or more targets defined

    Jeżeli dostaniemy linię: AUTO auto0.tap - use "jtag newtap auto0 tap -expected-id 0x29604093 ..." to znaczy ,że wszystko jest dobrze połączone. Jak pojawi się jakiś błąd to na końcu postu jest sekcja błędy :)

    Naciskamy CTRL+C, ażeby zakończyć openOCD.
    Parametr: -f interface/jtagkey.cfg - określa jakiego używamy interfejsu JTAG.
    Zaś parametr: -c "adapter_khz 100" - definiuje częstotliwość linii TCK w kHz. Jeśli jest za duża, a płytka jeszcze jest w dodatku własnej domowej roboty ;) to mogą wystąpić problemy z komunikacją i/lub programowaniem.

    Jak nam poprzednio podpowiedział OpenOCD powinniśmy dodać TAP (Test Access Port) ,a więc dodajemy do linii polecenia kolejny parametr: -c "jtag newtap xc9572xl tap -irlen 8 -expected-id 0x29604093"

    Linia polecenia powinna wyglądać tak:
    Code:
    openocd-x64 -f interface/jtagkey.cfg -c "adapter_khz 100" -c "jtag newtap xc9572xl tap -irlen 8 -expected-id 0x29604093"

    Po uruchomieniu z tymi parametrami powinno pojawić się coś takiego:
    Code:
    D:\Projects\Tools\openocd-0.5-x64\bin>openocd-x64 -f interface/jtagkey.cfg -c "adapter_khz 100" -c "jtag newtap xc9572xl tap -irlen 8 -expected-id 0x29604093"
    
    Open On-Chip Debugger 0.5.0 (2011-08-09-23:26)
    Licensed under GNU GPL v2
    For bug reports, read
            http://openocd.berlios.de/doc/doxygen/bugs.html
    Info : only one transport option; autoselect 'jtag'
    100 kHz
    Info : clock speed 100 kHz
    Info : JTAG tap: xc9572xl.tap tap/device found: 0x29604093 (mfg: 0x049, part: 0x9604, ver: 0x2)
    Warn : gdb services need one or more targets defined

    Ostatnia linia Info informuje nas o znalezionym układzie (tutaj http://bsdl.info/details.htm?sid=cd086d97d27f734a88ca59b002289d77 można sprawdzić po IDCODE :) )
    Następnie uruchamiamy terminal Telnet'a i łączymy się do openOCD, z ustawieniami (Host=127.0.0.1 (lub localhost o ile mamy win7 bez modyfikowanego pliku hosts może nie działać alias localhost) , port=4444, sesja=Telnet) - putty:
    Programowanie Xilinx XC9572XL (XC9500XL) CPLD z OpenOCD
    Po połączeniu, powinno się ukazać okno sesji telnet wraz z znakiem zachęty:
    Code:
    Open On-Chip Debugger
    
    >


    Sprawdźmy, czy łańcuch JTAG jest taki jaki powinien być, wydajemy scan_chain, powinno w odpowiedzi wyskoczyć coś takiego:
    Code:
    > scan_chain
    
       TapName             Enabled  IdCode     Expected   IrLen IrCap IrMask
    -- ------------------- -------- ---------- ---------- ----- ----- ------
     0 xc9572xl.tap           Y     0x29604093 0x29604093     8 0x01  0x03


    Plik SVF
    Czas na przygotowanie pliku do programowania kości cpld. Zakładam, że posiadasz już wygenerowany plik programowania (4 zielone ptaszki/fajki w Implement Design):
    Programowanie Xilinx XC9572XL (XC9500XL) CPLD z OpenOCD

    Odpalamy iMPACTa przez dwu-klik na Configure Target Device (ISE Project Navigator 12.1). Wyskoczy "Warning", klikamy OK. Jak otworzy się okno iMPACTa klikamy na pasku narzędziowym na "Launch Wizard", i wybieramy: Prepare a Boundary-scan file i z listy wybieramy SVF:
    Programowanie Xilinx XC9572XL (XC9500XL) CPLD z OpenOCD
    Otworzy się okno do zapisania pliku SVF wpisujemy nazwę i Zapisz.
    Po tym wyskakuje "Warning" :) o odłączeniu wszystkich programatorów przewodowych i skierowaniu wszystkich operacji do pliku SVF. Po komunikacie, otwiera się okno wyboru pliku do otwarcia "Assign New Configuration File", wybieramy plik z rozszerzeniem ".jed" i klikamy otwórz.
    W głównym oknie powinien pojawić się układ XC9572XL (chyba ,że masz inny :) ) schematycznie dołączony do linii TDI i TDO:
    Programowanie Xilinx XC9572XL (XC9500XL) CPLD z OpenOCD

    Teraz najprostsze :D, klikamy prawym gryzoniem na układzie i wybieramy Erase (można najpierw ustawić Erase Properties - Override Write Protect) - powinno pojawić się u dołu okna z "układem" SVF - Erase Succeeded. Następnie wybieramy Program i Verify.
    Programowanie Xilinx XC9572XL (XC9500XL) CPLD z OpenOCD

    Teraz klikamy w menu iMPACTa na Output->SVF File->Stop Writing to SVF File. Pozostało teraz tylko przekopiować uzyskany plik SVF do katalogu bin z openOCD.

    Wielki Finał
    Warto jeszcze przed programowaniem, poprawić w pliku svf częstotliwość na mniejszą (ponieważ 1MHz było za dużo na moje połączenia/płytkę ;) ).
    Otwieramy plik SVF jakimś edytorem tekstowym (np. notepad++ bo go lubię :) ). Na początku pliku powinna być linia: FREQUENCY 1E6 HZ; zapis jest w formacie naukowym, czyli 1 to mnożnik ,a E6 to to $$10^6$$ czyli $$1*10^6 Hz$$, ja poprawiłem u siebie to linię na 5E5 (500kHz) . Zapisujemy plik i przechodzimy do okna terminala telnetu.

    Wydajemy polecenie:
    Code:
    >svf {nazwa_pliku.svf} quiet

    Ostatni parametr jest po to, ażeby do okna nie trafiały wszystkie polecenia z pliku svf. Po paru/parudziesięciu sekundach powinniśmy otrzymać wiadomość (o ile wszystko przebiegło dobrze):
    Code:
    svf processing file: "bramkaAND.svf"
    
    500 kHz

    Time used: 0m7s478ms
    svf file programmed successfully for 8468 commands

    Jeśli pojawi się błąd: w linii xx oczekiwano.... zobacz na końcu posta w błędy :)

    Zakończenie
    Dla pytania:
    Dlaczego nie XSVF plik? Ponieważ to jest plik skompresowany SVF i nie można w nim poprawić częstotliwości pracy JTAG'a, a nie wiem (jeszcze) jak to się zmienia z poziomu iMPACTa.
    :):)

    Przykład do tego opisu powstał z 2 części kursu CPLD z EdW (jest to bramka AND narysowana na schemacie :) )

    Polecam lekturę pliku: OpenOCD User's Guide.pdf w celu zapoznania się z samym OpenOCD (Plik w głównym katalogu z OpenOCD)

    Błędy
    Część: OpenOCD
    - Jeżeli OpenOCD nie znajdzie jtag'a to należy sprawdzić czy lock-pick jest widoczny w systemie i czy sterowniki są to libusb (Win7 domyślnie nie instaluje sterowników nie podpisanych cyfrowo, tak więc trzeba wskazać mu sterowniki ręcznie i potwierdzić instalację sterowników niepodpisanych. Jak? Użyć googlarki :) ).
    - Jeśli OpenOCD nie znajdzie układu to oczywiście należy sprawdzić połączenia (nawet i 10x ,a także, czy TDI nie jest zamienione z TDO) i zmniejszyć jeszcze częstotliwość.
    Część: Wielki finał
    - Oczekiwano 0x12345678 ,a otrzymano 0xABCDEF9876 (wartości przykładowe ;) ) - proponuję zmniejszyć częstotliwość i sprawdzić czy dobry układ jest wybrany w projekcie.

    Plik konfiguracji i program
    Do postu dołączam plik do konfigurowania openocd dla Xilinx'a XC9572XL. Wystarczy go wrzucić w katalog cpld i linia polecenia dla wywołania openocd wygląda następująco:
    Code:
    D:...\openocd-0.5-x64\bin>openocd-x64 -f interface/jtagkey.cfg -f cpld/xc9572xl.cfg


    Dołączam także mały programik (svfcor.exe) który napisałem w C++, a który ma za zadanie zmodyfikowanie w pliku SVF częstotliwości TCK (z 1MHz na np. 100kHz).
    Program przyjmuje parametry:
    - Pierwszy parametr to nazwa pliku wejściowego w formacie SVF (nie Xsfv)
    - Drugi parametr to częstotliwość jaka ma być użyta w zapisie naukowym (czyli: 5e5 = 500kHz) albo "normalnym w Hz (bez jednostki)" (czyli: 500000 = 500kHz :) ).
    - Trzeci parametr jest opcjonalny, i jest to nazwa pliku wynikowego.


    Ps. Za dużo nie pomogę bo sam dużo jeszcze nie wiem :) , a czasu na zabawę z CPLD też nie mam za bardzo. I z góry przepraszam za jakiekolwiek błędy w opisie :)
    Ps2. Jak się dowiem jak ustawić częstotliwość w iMPACTcie to umieszczę to tutaj -> Wygląda na to ,że iMPACT ma ustawione na stałe 1MHz i nie da się tego zmienić inaczej niż przez edycję pliku SVF :|

    0 29
    Załączniki:
  • Sklep HeluKabel
  • #2 19 Lut 2012 23:50
    leonow32

    Poziom 30  

    Mega wielkie dzięki!!! Wreszcie ktoś to wszystko opisał po ludzku w jednym miejscu :) też elementy kupiłem jakiś czas temu, ale póki co nie było motywacji, bo zniechęcała mnie mikstura różnorakich informacji w internecie na dziesiątkach stron.

    Pytanie tylko mam jedno, czy da radę jakoś tak zautomatyzować proces programowania, aby był on dostępny pod jednym klawiszem prosto ze środowiska programistycznego, tak jak w przypadku AVR? :)

    0
  • #3 24 Lut 2012 13:45
    saper_2
    Poziom 17  

    I znowu zamroziło moje prace z Xilinx'ami :|

    Co do automatyzacji, musiałbyś mieć jakiś"svf player". O ile dobrze pamiętam, lock-pick bazuje na jtag'u Amontec'a - ale nie udało mi się odpalić svf-playera Amonteca z lock-pick'iem.

    Kolejnym problemem jest to, że iMPACT chyba (mogę się mylić bo go nie znam za dobrze) nie ma możliwości ustawienia własnych narzędzi... (nie pamiętam ,ażebym gdzieś zobaczył taką opcję)

    Zresztą, ja nie widzę problemów z przełączeniem okna, stuknięciem klawisza strzałki w górę i enter'a :)

    Za aktualizowałem opis :) - dodałem plik konfiguracji i mały program do pomocy zminay f_TCK :)

    0
  • #4 24 Lut 2012 22:39
    leonow32

    Poziom 30  

    Posiadacze przejściówki FT232RL mogą sobie zrobić tani programator w ten sposób:
    http://openschemes.com/2011/10/25/bit-bang-jt...ilinx-cpld-using-ft232-homebrew-svf-player/6/

    ...ale działa makabrycznie wolno... :) mimo tej wady jest to obecnie najtańszy programator na USB, bo FT232RL da się dorwać już za 15zł.

    0
  • Sklep HeluKabel
  • #5 19 Mar 2012 23:21
    leonow32

    Poziom 30  

    Sprawiłem sobie moduł z Propoxa ze scalakiem FT2232HL. Działa mi to częściowo z urJTAG - wykrywa, że mam podłączony XC9572XL. Działa dobrze (i wolno) z tym co opisałem wyżej, a z openocd nie mogę się połączyć! O co chodzi?

    Code:
    C:\ocd\bin>openocd -f interface/minimodule.cfg -c "adapter_khz 10"
    
    Open On-Chip Debugger 0.5.0 (2011-08-09-23:21)
    Licensed under GNU GPL v2
    For bug reports, read
            http://openocd.berlios.de/doc/doxygen/bugs.html
    Info : only one transport option; autoselect 'jtag'
    10 kHz
    Error: unable to open ftdi device: device not found
    in procedure 'init'


    Natomiast co do urJTAG to pokazuje mi takie coś:
    Code:
    jtag> cable jtagkey
    
    Connected to libftd2xx driver.
    jtag> detect
    IR length: 8
    Chain length: 1
    Device Id: 01011001011000000100000010010011 (0x0000000059604093)
      Manufacturer: Xilinx
      Part(0):         XC9572XL_VQ44
      Unknown stepping!
    chain.c(149) Part 0 without active instruction
    chain.c(200) Part 0 without active instruction
    chain.c(149) Part 0 without active instruction
    jtag>


    Czy jest jakiś SVF Player na Windows????? Tzn z interfejsem okienkowym zamiast klepania poleceń w konsoli, wertowania plików pomocy i szukania po całym internecie co tu wpisać żeby działało?

    ------
    EDIT przed północą :)
    udało mi się doprowadzić tego urJTAGa do porządku. Trzeba było zmienić PID na taki jaki jest zapisany w pliku konfiguracji do jtagkey (przy pomocy programy M_Prog z FTDI). Okazuje się, że jest błąd w pliku C:\Program Files\UrJTAG\data\xilinx\xc9572xl_vq44\STEPPINGS. Powinno być wpisane tak:
    0101 xc9572xl_vq44 1
    Ustawić kabel: cable jtagkey
    poza tym trzeba zmniejszyć częstotliwość zegara poleceniem frequency 700000
    i dodać ścieżkę do plików poleceniem bsdl path c:\xilinx\xc9500\data.
    Cieszę się, że po kilku godzinach walki udało mi się doprowadzić to do działania. Zastępując FT232RL przez FT2232HL czas programowania zmniejszył się z 8 minut do 12 sekund :) pytanie tylko - czemu do jasnej cholery musiałem poświęcić tyle czasu żeby to rozgryźć?!?!

    OpenOCD dalej nie widzi FT i nie wiem czemu.

    i jeszcze jedno pytanie - jak podłączam FT2232HL do kompa to mi wyskakuje dymek "To urządzenie może działać szybciej, jeśli podłączysz je do portu HiSpeed USB 2.0" - nie wiem o co chodzi, skoro w komputerze mam tylko porty USB 2.0, a FT232RL śmiga na USB2.0 i działa bez problemu.

    0
  • #6 20 Mar 2012 11:38
    saper_2
    Poziom 17  

    No cóż i tak krótko ci to zajęło :D , mi jak by nie patrzeć na to ,że mi się nie chciało :lol: zajęło mi to ponad 2 lata :)

    Na pewno Amontec ma swojego SVF player'a ale mi się nie udało go użyć :/ .

    Nie wiem za bardzo czemu nie widzi ci OpenOCD ft2232...
    Mam takie "koncepcje":
    - czy w minimodule.cfg pasują VID i PID ?
    - czy dobre wyprowadzenia?
    - czy w katalogu bin masz libftdi.dll, libusb0.dll (i ftd2xx.dll - to gdy na oryginalnych/bazujących na sterownikach ftdi)


    A co do tego dymku USB 2.0 znam to nie od dziś :D , najczęściej winne są albo brudne/wyrobione gniazdo(a) usb lub lipny kabel (najczęściej te cienkie mi w ogóle nie działają) :)

    0
  • #7 20 Mar 2012 22:31
    leonow32

    Poziom 30  

    Walcząc z OpenOCD zrobiłem sobie kaszanę w EEPROMie od FT2232. Pozmieniałem jakieś ustawienia PID czy coś, że scalak przestał mi się komunikować z kompem. Teraz właśnie doceniłem to, że EEPROM jest w postaci zewnętrznego układu :) wystarczyło go odlutować. Obecnie mam FT2232HL bez epromu i urJTAG działa idealnie, a z OCD nie wiem co może być nie tak.

    Plik minimodule.cfg zawiera domyślne VID i PID jakie jest w FT2232HL.Pliku ftd2xx.dll nie było w katalogu bin, skopiowałem go tam, ale i tak nic to nie dało :)

    0
  • #8 25 Mar 2012 16:45
    leonow32

    Poziom 30  

    leonow32 napisał:
    i jeszcze jedno pytanie - jak podłączam FT2232HL do kompa to mi wyskakuje dymek "To urządzenie może działać szybciej, jeśli podłączysz je do portu HiSpeed USB 2.0" - nie wiem o co chodzi, skoro w komputerze mam tylko porty USB 2.0, a FT232RL śmiga na USB2.0 i działa bez problemu.

    Po konsultacji z pracownikiem firmy Propox okazało się, że w ich module na liniach DP i DM zamontowali jakieś filtry RC (ciekawe po co, skoro w dokumentacji z FTDI ich nie ma?). Po wywaleniu kondensatorów i zastąpieniu rezystorów zworkami, komunikat przestał się pokazywać.

    0
  • #9 30 Wrz 2012 18:26
    mongoł2000
    Poziom 18  

    Witam, zrobiłem wszystko wg Twojego opisu(poza tym że zamiast .jed miałem .bit ) i z putty dostaje cos takiego po próbie wgrania:

    Code:
    Open On-Chip Debugger
    
    > scan_chain
       TapName             Enabled  IdCode     Expected   IrLen IrCap IrMask
    -- ------------------- -------- ---------- ---------- ----- ----- ------
     0 xc2s200.tap            Y     0xd5044093 0x01414093     6 0x01  0x03
     1 xcf02.tap              Y     0x01414093 0xf5045093     8 0x01  0x03
    > svf {abc.svf} quiet
    svf processing file: "abc.svf"
    100 kHz
    ftdi_write_data: usb bulk write failed
    couldn't write MPSSE commands to FT2232
    ftdi_write_data: usb bulk write failed
    couldn't write MPSSE commands to FT2232
    ftdi_write_data: usb bulk write failed
    couldn't write MPSSE commands to FT2232
    ftdi_write_data: usb bulk write failed
    couldn't write MPSSE commands to FT2232
    ftdi_write_data: usb bulk write failed
    couldn't write MPSSE commands to FT2232
    ftdi_write_data: usb bulk write failed
    couldn't write MPSSE commands to FT2232
    ftdi_write_data: usb bulk write failed
    couldn't write MPSSE commands to FT2232
    ftdi_write_data: usb bulk write failed
    couldn't write MPSSE commands to FT2232


    A oto dodawanie TAPów, które wyświetlaja również błędy:
    Programowanie Xilinx XC9572XL (XC9500XL) CPLD z OpenOCD

    ogólnie JTAG podłączony jest do układów xcf02s i xc3s200 jednocześnie, a dodając kolejne TAPy kierowałem się tym wątkiem
    http://news.elektroda.pl/openocd-i-nieznane-uklady-w-lancuchu-jtag-t473928.html

    0
  • #11 01 Paź 2012 23:08
    mongoł2000
    Poziom 18  

    Teraz kolejność mam ok ale nadal ten błąd z FT2232.Oto zrzut:
    Programowanie Xilinx XC9572XL (XC9500XL) CPLD z OpenOCD

    Wyglada mi to na przepełnienie bufora FT2232, ale nie jestem pewny.
    W impact'cie wrzucam .bit ze swojego folderu projektu, a potem dodaje jeszcze XCF01 i nastepnie klikam Program na XC3S200. Dalej robie to samo co opisane na górze tego tematu.

    0
  • #12 01 Paź 2012 23:27
    saper_2
    Poziom 17  

    Problem leży w sterownikach albo w samym układzie ft2232 lub nawet w OpenOCD
    Trochę pgooglałem za tym błędem i sugestie jakie znalazłem dotyczą linii NRST/TRST (mogłem pokręcić nazwy...) z powodu prawdopodobnie pojawienia się stanu niskiego/wysokiego na tej linii w trakcie transmisji danych co ogłupia FT2232.

    Ale na ten temat musi się ktoś wypowiedzieć kto więcej ma doczynienia z chipami FTDI.

    Aha i spróbuj jeszcze zwolnić JTAGa nawet do 100kHz...

    I nie wklejaj screenshot'ów konsoli - potwornie źle się je czyta....
    Wklejaj w znaczniki [ code ] zawartość okna konsoli (w putty: przyciskasz lewą myszą i ciągniesz na to co chcesz zaznaczyć, potem klikasz lewą myszą na zaznaczenie i już skopiowane do schowka, a potem tylko już wklejasz Ctrl+V...)...

    0
  • #13 02 Paź 2012 07:52
    Freddie Chopin
    Specjalista - Mikrokontrolery
  • #14 02 Paź 2012 08:06
    mongoł2000
    Poziom 18  

    Ja myślę że to problem opisany w tym wątku:
    http://comments.gmane.org/gmane.comp.debugging.openocd.devel/18443
    A więc zabieram się do przekompilowania openocd


    Na najnowszych sterownikach i OpenOcd 0.6.0 to samo;/
    Kurde ma ktoś porządny tutorial o kompilacji openocd? Bo cos mi nie smiga wg tego co znalazłem w sieci.

    0
  • #15 02 Paź 2012 11:31
    gaskoin
    Poziom 38  

    W README jest wszystko. Najpierw ./configure z odpowiednimi parametrami (opisane w instrukcji) a potem make i make install.

    0
  • #17 02 Paź 2012 14:32
    mongoł2000
    Poziom 18  

    Niestety urJTAG nie wykrywa łancucha po poleceniu detect. Używam dokładnie JTAG-lock-pick więc może to ma znaczenie jesli chodzi o urJTAG. Zastanawia mnie dlaczego oprogramowanie od Amouteca wykrywa JTAG-lock-picka ale nie wykrywa łancucha? Wydaje mi się że schemat obu urządzen jest inny.


    Dobra zadziałało na urJTAGu, działa naprawdę szybko i sprawnie. Rozwiazaniem było zaaktualizowanie sterowników od JTAG-lock-picka na sterowniki od Amounteca.
    Dzięki wszystkim za pomoc.

    0
  • #18 04 Lis 2012 13:06
    tempus
    Poziom 18  

    Witam,

    chciałbym zaprogramować układ Xilinx XC9536XL. Da się to zrobić za pomocą OpenOCD lub FT232?
    Chcę to zrobić jak najtaniższym kosztem.

    0
  • #19 04 Lis 2012 14:38
    saper_2
    Poziom 17  

    XC9536 to mniejsza wersja XC9572XL (9536 jeśli dobrze pamiętam ma mniej wyprowadzeń i na pewno mniej makrokomórek (36 tylko) ). Więc nie widzę problemu, tylko zmienić trzeba będzie identyfikator układu dla xc9536.
    A czy OpenOCD obsługuje ft232 i czy ten obsługuje MPSEE (czy MPSSE, czy jakoś tak ;) ) w trybie JTAG to nie wiem, pamiętam tylko ze ft2232/ft4232 mają ten tryb pracy poru IO. Ale coś mi się tłucze po głowie, że chyba FT232RL też to ma ale głowy nie dam ;).

    To co obsługuje OpenOCD to już raczej nie moja "przestrzeń obsługi" ;), na ten temat najlepiej gdyby wypowiedział się znawca tego oprogramowania, np. Pan Freddie C. :)

    0
  • #20 04 Lis 2012 15:43
    Freddie Chopin
    Specjalista - Mikrokontrolery

    saper_2 napisał:
    A czy OpenOCD obsługuje ft232 i czy ten obsługuje MPSEE (czy MPSSE, czy jakoś tak ) w trybie JTAG to nie wiem, pamiętam tylko ze ft2232/ft4232 mają ten tryb pracy poru IO. Ale coś mi się tłucze po głowie, że chyba FT232RL też to ma ale głowy nie dam

    Tylko i wyłącznie FT232H lub FT2232 i FT4232.

    Co do tanich rozwiązań, to jakby pytający był zainteresowany, to mam coś takiego co by można uznać za "tanie" i da się to używać z OpenOCD.

    4\/3!!

    0
  • #21 04 Lis 2012 22:24
    tempus
    Poziom 18  

    Co masz na myśli? Potrzebuję cokolwiek czym bezproblemowo zaprogramuję XC9536XL.

    0
  • #22 09 Lis 2012 18:36
    saper_2
    Poziom 17  

    Bezproblemowo != tanio. No może tanio i mało-problemowo wyjdzie ci zrobić jakiegoś wigglera czy cuś takiego ;) - chodzi mi o interfejs JTAG na LPT obsługiwany przez openocd.

    Jak chcesz dobrze to kup sobie Platform Cable USB II (kolny PC-USB I na ebay'u znajdziesz za ~40$$) .

    Jako, że pytasz o sprzęt, konkretnie o JTAG'a - który może być jakikolwiek obsługiwany przez OpenOCD i ma wyjścia/wejścia logiczne na 3,3V.
    Zaś ten wątek dotyczy programowania samego CPLD przy użyciu OpenOCD (z jtag-lock-pick'iem) więc pytanie czym zaprogramować mniejszego brata XC9572XL mija się z celem tego wątku ( "pytasz o sprzęt w wątku poświęconym opisowi programów" ).



    Google is your friend, it won't bite you. Use it wisely and you'll lead a happy life.

    0
  • #23 09 Lis 2012 21:13
    tempus
    Poziom 18  

    No nie do końca. Potrzebuję nie tylko sprzęt ale także oprogramowanie. Kiedyś programowałem taki układ za pomocą Xilinx ISE 9.1i (konkretnie za pomocą tool'a iMPACT) i o ile dobrze pamiętam LPT paralel cable III ale wtedy miałem do nich dostęp - teraz nie. O ile parallel cable mogę sobie zrobić, o tyle żeby dostać Xilinx ISE trzeba mieć firmę, żeby móc ściągnąć Webpack'a. I chyba przy tym pozostanę spróbuję go jakoś zdobyć i będzie po problemie.

    0
  • #24 09 Lis 2012 21:41
    saper_2
    Poziom 17  

    Uważam, że nie trudno jest znaleźć ISE dla amatora ;) (szukaj w stronę Sonsivri ;) ), poza tym któregoś ISE Xilinx'a chyba można ściągnąć za free (chyba wspomniany Webpack) i obsługuje on na pewno rodzinę XC9500 (w iMPACT).

    -- dodano --
    Właśnie sprawdziłem, za free rejestrację (akurat jestem już zarejestrowany ;) ) można otrzymać licencję do "ISE Design Suite: WebPACK" . Po wygenerowaniu przychodzi na E-mail na który się zarejestrujesz.

    0
  • #26 09 Lis 2012 22:07
    saper_2
    Poziom 17  

    Jako student z firmą dom ;) .
    Tak na stronie Xilinx'a.
    Jakie install data.... AA przeczytaj dokładniej, te "Install Data A/B/C" to kolejne części pakietu instalacyjnego, przewiń w dół tam zobaczysz jedno-plikową paczkę (dla win i/lub linux), albo z boku wybierz sobie inną wersję...

    0
  • #27 29 Lis 2012 14:34
    mongoł2000
    Poziom 18  

    Czy komus udało się, lub wie jak wgrać konfiguracje do XCF01 (konfigurator Xilinx) z pomoca urJTAG? Wykrywa mi XC3S200 oraz własnie ten układ w łancuchu. Przygotowuje plik w ten sposób:
    1. Preparet PROM file.
    2. Wybieram XCF01 a następnie typ pliku wynikowego jako MCS
    3. Podaje ścieżkę do pliku ram.bit wygenerowanego z mojego projektu
    4. Klikam "Generate file"
    Potem tworze SVF dodając na ten sam plik ram.bit co wczesniej, aby w łancuchu wstawić XC3S200, a potem jeszcze mój plik untitled.mcs. Łańcuch JTAG ma wtedy poprawną kolejność . Później klikam PROGRAM na ikonie XCF01.
    Gdy próbuje taki plik wgrać przez urJTAG dostaje:
    Programowanie Xilinx XC9572XL (XC9500XL) CPLD z OpenOCD

    0
  • #29 14 Gru 2013 12:20
    michalstec
    Poziom 11  

    Programuję właśnie xc9572xl używając jtaga opendous. Zaobserwowałem dziwne zjawisko:
    gdy w pliku svf wpiszę FREQUENCY 1E4 HZ; programuje się ok 10 min, gdy tą częstotliwość ustawię na 1E5 pojawiają się błędy, ale już przy częstotliwości 9E4, ale także 5E5 (!) programuje się szybko i skutecznie.
    Wygląda na to, że problemem nie musi być częstotliwość zbyt wysoka, ale raczej częstotliwość nieodpowiednia.
    Czy ktoś umie to wyjaśnić?

    0
  • #30 14 Gru 2013 13:00
    saper_2
    Poziom 17  

    Witam,

    Myślę, że ma to związek jednym z:
    1. długie przewody działają jak antena i łapią fale EM akurat o tych f (lub z taką f harmoniczną).
    2. Coś ci sieje po zasilaniu/w pobliżu kabla o takiej częstotliwości = czyli kiepskie filtrowanie zasilania lub zasilacz,
    3. w przypadku długich połączeń i większych f trzeba brać pod uwagę impedancję falową kabla, pojemności ścieżek/pasty na lutach.

    Bardziej jestem, za tym że masz kiepskie filtrowanie zasilania i/lub kiepski zasilacz w dodatku impulsowy.

    Pierwsza możliwość to głównie winne mogą być karty wifi / router(y) wifi czy cokolwiek z nadajnikami RF (telefon/tablet z modemem, etc.) co masz w pobliżu kabli (usb/z programatora do xilinx'a).

    Trzecia opcja to przed wszystkim pojemności pasożytnicze powstałe na skutek lutowania i nie umycia pasty ale to potrafi mieć znaczenie przy f na poziomie MHz, przy kHz się nie spotkałem z tym problemem szczególnie, no może raz czy dwa razy :) miałem problem ale to przez właśnie tani topnik jakieś tanie "coś" z elektronicznego :| - od tego czasu używam RMA7 (lub zwykłą kalafonię ale to rzadkość przy lutowaniu płytek) do lutowania wszystkiego i nie mam problemów.

    0