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

[STR912] Jak skompilować i wgrać FreeRTOS na STR912 za pomocą OpenOCD?

bimbarabam 06 Paź 2012 11:26 3546 35
Najlepsze odpowiedzi

Jak przygotować demo FreeRTOS dla STR912 i wgrać je przez OpenOCD?

W tym wątku nie padł konkretny toolchain do kompilacji, ale do wgrania demo FreeRTOS przez OpenOCD trzeba było przede wszystkim poprawnie skonfigurować interfejs FTDI i target, a nie sam program [#11399988][#11400180] Dla programatora MMusb2232 lepiej użyć `interface/minimodule.cfg` niż `jtagkey.cfg`, a parametr `device_desc` można usunąć, jeśli powoduje błąd `device not found`; nowy driver FTDI w OpenOCD 0.6.x działa przez `libftdi`/`libusb-1.0` [#11384387][#11397368][#11399988] W konfiguracji STR912 trzeba zmienić `_BSTAPID` z `0x1457f041` na `0x2457f041`, bo masz inną wersję układu [#11400180] Przed operacjami na flashu wykonuj `reset init`, bo samo `reset halt` nie daje poprawnego dostępu do pamięci [#11417621][#11419438] Przy programowaniu podawaj pełną ścieżkę do pliku z firmware, bo bez tego OpenOCD potrafi nie znaleźć obrazu [#11425735] Jeśli po kilku wgraniach układ przestaje się poprawnie zatrzymywać, warto spróbować OpenOCD 0.6.1 i zmniejszyć `adapter_nsrst_delay` oraz `jtag_ntrst_delay` do 1 albo 0 [#11427559]
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
  • #1 11382389
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    Witam!

    Chciałbym wgrać sobie FreeRTOS'a za pomocą OpenOCD na moją płytkę z mikrokontrolerem STR912. Ściągnąłem FreeRTOS'a i znalazłem tam demo aplikację pod mojego procka, tylko prawdę mowiąc nie wiem czym to skompilować i jak to wgrać przez to OpenOCD. Gdyby ktoś mógłby mi jakoś pomóc, byłbym bardzo wdzięczny bo jestem świeży w temacie :D, a trochę czas mnie goni.
  • #3 11384129
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    Akurat zanim zerknąłem tu znowu trafiłem już na twoją stronę :). Zainstalowałem sobie to wszystko :D, tylko jak próbuję stestować JTAG'a dostaję:

    openocd -f interface/jtagkey.cfg -f target/str912.cfg
    Open On-Chip Debugger 0.6.0 (2012-10-06-19:06)
    Licensed under GNU GPL v2
    For bug reports, read
    	http://openocd.sourceforge.net/doc/doxygen/bugs.html
    Info : only one transport option; autoselect 'jtag'
    RCLK - adaptive
    adapter_nsrst_delay: 100
    jtag_ntrst_delay: 100
    trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
    Warn : str912.flash: nonstandard IR mask
    Warn : str912.bs: nonstandard IR mask
    Error: unable to open ftdi device: device not found
    in procedure 'init'
    


    Mój programator to MMusb2232 (firma propox). Dodam jeszcze że ubuntu poprawinie wykrywa mi sprzęt:
    [ 7269.340193] usb 5-1: new full speed USB device number 5 using uhci_hcd
    [ 7269.531452] ftdi_sio 5-1:1.0: FTDI USB Serial Device converter detected
    [ 7269.531536] usb 5-1: Detected FT2232C
    [ 7269.531542] usb 5-1: Number of endpoints 2
    [ 7269.531547] usb 5-1: Endpoint 1 MaxPacketSize 64
    [ 7269.531552] usb 5-1: Endpoint 2 MaxPacketSize 64
    [ 7269.531557] usb 5-1: Setting MaxPacketSize 64
    [ 7269.533414] usb 5-1: FTDI USB Serial Device converter now attached to ttyUSB0
    [ 7269.535343] ftdi_sio 5-1:1.1: FTDI USB Serial Device converter detected
    [ 7269.535399] usb 5-1: Detected FT2232C
    [ 7269.535404] usb 5-1: Number of endpoints 2
    [ 7269.535409] usb 5-1: Endpoint 1 MaxPacketSize 64
    [ 7269.535414] usb 5-1: Endpoint 2 MaxPacketSize 64
    [ 7269.535419] usb 5-1: Setting MaxPacketSize 64
    [ 7269.537515] usb 5-1: FTDI USB Serial Device converter now attached to ttyUSB1
  • #4 11384387
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Wykrywać to może i wykrywa, ale przypuszczam że masz jakiś problem z ustawieniami uprawnień (udev czy jak to się tam nazywa)... No i czy masz OpenOCD skonfigurowane do tego typu bibliotek których używa Twój JTAG (ftd2xx albo libftdi [za pośrednictwem libusb])?

    P.S. W nowym OpenOCD (od wersji 0.6.0) jest nowy driver do JTAGów na FTx232 - pliki konfiguracyjne są w folderze interfaces/ftdi/... (nazywają się tak samo jak "normalne") który jest dużo szybszy i korzysta z biblioteki libusb-1.0 - warto go polubić [;

    4\/3!!
  • #5 11384660
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    instalowałem tego Openocd ze źródeł (wersja 0.6) i pamiętam że przy instalacji używałem:
    ./configure --enable-ft2232_libftdi
    Więc powinno być skonfigurowane ok.. Połączenia z JTAG'iem na płytce też sprawdzałem i również tam nie widze problemu.
  • #7 11384777
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    to samo... tak sie zastanawiam czy ten interfejs jtagkey wybralem dobry, bo w sumie to wzialem sobie tak po prostu jak bylo na twojej stronie, tylko target ustawiłem na swój procek.
  • #9 11385426
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    Wklej tu to, co wypluje Ci:

    Kod: Bash
    Zaloguj się, aby zobaczyć kod
  • #10 11386332
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    lsmod
    Module                  Size  Used by
    ppp_deflate            12878  0 
    zlib_deflate           26622  1 ppp_deflate
    bsd_comp               12842  0 
    ppp_async              17307  1 
    crc_ccitt              12595  1 ppp_async
    nls_utf8               12493  1 
    isofs                  39549  1 
    bnep                   17923  2 
    rfcomm                 38408  8 
    parport_pc             32114  0 
    ppdev                  12849  0 
    joydev                 17393  0 
    binfmt_misc            17292  1 
    snd_hda_codec_conexant    52418  1 
    acer_wmi               23302  0 
    sparse_keymap          13658  1 acer_wmi
    snd_hda_intel          24262  2 
    snd_hda_codec          91754  2 snd_hda_codec_conexant,snd_hda_intel
    snd_hwdep              13276  1 snd_hda_codec
    snd_pcm                80468  2 snd_hda_intel,snd_hda_codec
    snd_seq_midi           13132  0 
    snd_rawmidi            25241  1 snd_seq_midi
    snd_seq_midi_event     14475  1 snd_seq_midi
    ftdi_sio               35726  0 
    snd_seq                51567  2 snd_seq_midi,snd_seq_midi_event
    option                 21205  2 
    usb_wwan               19779  1 option
    arc4                   12473  2 
    usbhid                 41905  0 
    snd_timer              28932  2 snd_pcm,snd_seq
    snd_seq_device         14172  3 snd_seq_midi,snd_rawmidi,snd_seq
    hid                    77367  1 usbhid
    usbserial              37203  8 ftdi_sio,option,usb_wwan
    iwl3945                73329  0 
    iwl_legacy             71499  1 iwl3945
    mac80211              272785  2 iwl3945,iwl_legacy
    psmouse                73673  0 
    serio_raw              12990  0 
    btusb                  18160  2 
    snd                    55902  13 snd_hda_codec_conexant,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
    bluetooth             148839  23 bnep,rfcomm,btusb
    cfg80211              172392  3 iwl3945,iwl_legacy,mac80211
    soundcore              12600  1 snd
    snd_page_alloc         14115  2 snd_hda_intel,snd_pcm
    i915                  505108  3 
    wmi                    18744  1 acer_wmi
    drm_kms_helper         32889  1 i915
    drm                   192226  4 i915,drm_kms_helper
    i2c_algo_bit           13199  1 i915
    video                  18908  1 i915
    lp                     17455  0 
    parport                40930  3 parport_pc,ppdev,lp
    ums_realtek            13096  0 
    usb_storage            44173  1 ums_realtek
    uas                    17699  0 
    ahci                   21634  4 
    libahci                25727  1 ahci
    r8169                  43104  0 


    A swoja droga jaka role własnie pełni ten parametr interface przy uruchamianu Openocd?
  • #11 11395484
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    Mam pytanko, bo zasadniczo nie wiem z czym ten moj programator caly jest zgodny tj z jakim interfejsami i czy moglby mnie ktos oswiecic jakie znaczenie maja te parametry device_desc, layout i pid, ktore sa w configach z interfejsami? Czy do tego, żeby w tym prostym tescie jaki robilem, żeby urządzenie cokolwiek odpowiedziało potrzebna jest jakas zmiana tych parametrow?
  • #12 11395549
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    No ale jak on ma być z czymś zgodny, skoro to jest po prostu taki "minimoduł" który możesz sobie podłączyć jak chcesz? Jest w konfigach plik "minimodule" i na 100% trzeba go dostosować do takich połączeń jakie zastosowałeś.

    4\/3!!
  • #13 11397124
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    A powie mi ktos skad mam wziac ten device_desc w interface? Bo nie wiem co tam mam wpisać, czy urządzenie jakim jest to cudo (ttyUSB0), czy to co wypisuje lsusb?
  • #14 11397368
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Przypuszczam że będzie to "FTDI USB Serial Device converter", zresztą opis być może jest opcjonalnym parametrem - możesz go np usunąć i sprawdzić.

    4\/3!!
  • #15 11399940
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    wywaliłem ten opis urzadzenia z pliku interface i dostałem coś takiego:
    Kod: Bash
    Zaloguj się, aby zobaczyć kod
  • #16 11399988
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    No to teraz tylko musisz podłączyć ten minimoduł tak jak jtagkey'a. To raczej się nie uda, bo JTAGkey ma bufory, sygnały enable itd. Proponuję abyś zainteresował się plikiem minimodule.cfg lub nowym driverem dla układów FTDI, w którym są większe możliwości konfiguracji wyprowadzeń (nic nie jest wkompilowane na stałe).

    Tak więc pokaż schemat jak to podłączyłeś.

    4\/3!!
  • #17 11400101
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    Zmieniłem ten jtagkey.cfg na minimodule.cfg, spojrzałem, że pid vid mi się zgadzają i zakomentowałem linijkę z device_desc ( bez tego miałem dalej error z device not found) i dostałem coś takiego:

    Kod: Bash
    Zaloguj się, aby zobaczyć kod

    Zastanawia mnie teraz skąd się może brać ten error UNEXPECTED, skoro niby wcześniej wszystko znalazł.
  • #18 11400180
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Jest bardzo dobrze już! Różnica bierze się z tego, że masz po prostu inną wersję układu niż oczekuje plik konfiguracyjny - ty masz 2, on oczekuje poprzedniej - 1. Zmień po prostu w pliku konfiguracyjnym 0x1457f041 na 0x2457f041 przy konfiguracji _BSTAPID i gotowe.

    W zasadzie to nawet w takim stanie jak masz teraz powinno choć częściowo działać.

    4\/3!!
  • #19 11400286
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    Zrobiłem jak napisałeś i error zniknął :)
    Kod: Bash
    Zaloguj się, aby zobaczyć kod


    Wreszcie mogę przejść do dalszych działań. Dzieki bardzo za pomoc!
  • #20 11417443
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    Odswiezam temat, bo napotkałem kolejny problem: mianowicie nie mogę ani zaprogramować ani wyczyścić flasha.
    Probowałem to zrobić tak:
    Kod: Bash
    Zaloguj się, aby zobaczyć kod

    lub po prostu tak:
    Kod: Bash
    Zaloguj się, aby zobaczyć kod


    Moje configi to interface/minimodule.cfg:
    Kod: Bash
    Zaloguj się, aby zobaczyć kod


    i target/str912.cfg
    Kod: Bash
    Zaloguj się, aby zobaczyć kod
  • #22 11419308
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    jedyne co robiłem to reset halt.. Bo trochę to wygląda jakbym nie miał dostępu do flasha, czy może być taka sytuacja, że trzeba go najpierw jakoś odblokować przed jakimikolwiek operacjami mającymi go zmodyfikować?
  • #24 11420184
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    Dalej to samo :/. Wpisałem komendę flash info 0 i dostałem:
    Kod: Bash
    Zaloguj się, aby zobaczyć kod


    Więc wygląda na to, że nie powinno być teoretycznie problemu z dostępem do flasha..
  • #25 11420343
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Wiele więcej nie pomogę - nie znam tych układów. Może w dokumentacji do OpenOCD jest opisana jakaś szczególna procedura ich traktowania? Jakby co to zapraszam na listę dyskusyjną OpenOCD.

    4\/3!!
  • #26 11425735
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    Dobra juz udalo mi sie zaprogramowac, kwestia była taka, ze trzeba bylo mu podac pelna sciezke do pliku :P. I juz troche wgrywalem plikow, ale dzis jakos po paru wgraniach, procesor zaczal mi protestowac jak chcialem go haltnac, zeby wgrać nowe pliki. Dostaje tylko komunikaty o timeoutach i nie chce sie wariat wylaczyc i nie moge go zaprogramowac. Probowałem reset init, halt , jednak cały czas to samo. Mam pytanie czy mozna jakos inaczej jeszcze wylaczyc procka za pomoca tego openocd?
  • #27 11425825
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    bimbarabam napisał:
    Mam pytanie czy mozna jakos inaczej jeszcze wylaczyc procka za pomoca tego openocd?

    Ale co rozumiesz przez "wyłączyć"?

    4\/3!!
  • #28 11425908
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    zeby procek byl w stanie halted
  • #29 11426511
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    A w ogóle możesz się połączyć z układem przez OpenOCD? Pokaż co ciekawego w konsoli widać i podaj konkretny przykład problemu.

    4\/3!!
  • #30 11427397
    bimbarabam
    Poziom 14  
    Posty: 194
    Ocena: 1
    Własnie mogę się połączyć..

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Potem odrazu próbuję reset init (wcześniej dawało radę):
    Kod: Bash
    Zaloguj się, aby zobaczyć kod


    Gdy wpiszę halt:
    Kod: Bash
    Zaloguj się, aby zobaczyć kod

    No i procek caly czas 'chodzi' i nie mogę go zaprogrmować:
    Kod: Bash
    Zaloguj się, aby zobaczyć kod

Podsumowanie tematu

✨ Użytkownik poszukiwał pomocy w zakresie kompilacji i wgrywania FreeRTOS na mikrokontroler STR912 za pomocą OpenOCD. Po zainstalowaniu OpenOCD i podłączeniu programatora MMusb2232, napotkał problemy z wykrywaniem urządzenia oraz błędy związane z uprawnieniami i konfiguracją. Użytkownicy zasugerowali sprawdzenie ustawień uprawnień, konfiguracji JTAG oraz użycie odpowiednich plików konfiguracyjnych. Po kilku próbach i modyfikacjach, w tym zmianie pliku konfiguracyjnego na minimodule.cfg oraz dostosowaniu parametrów, użytkownik zdołał nawiązać połączenie z układem. Ostatecznie udało mu się zaprogramować mikrokontroler, jednak napotkał problemy z zapisem do pamięci flash, które były związane z koniecznością podania pełnej ścieżki do pliku. Użytkownik kontynuował poszukiwania rozwiązania problemów z dostępem do flasha oraz stabilnością połączenia.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA