Nie widząc gdzie wpisać load posłużyłem się h-jtagiem. Właśnie-gdzie i jak wpisać ten load i czy z jakimiś parametrami? Zerknij do mojego tutoriala o ARM toolchain - na końcu jest o debuggowaniu i tam właśnie jest użyta ta komenda. Używasz jej tylko przy GDB (debugger). Można też wgrać bezpośrednio - odpalasz OpenOCD, odpalasz telnet i używasz komendy...
Tu chodzi o otwarcie datasheet na konkretnej stronie opisującej aktualnie edytowany rejestr mikrokontrolera. Czy foxit obsługuje to z lini poleceń? Rozwiązanie ze stronami pdf'a w formacie PNG dobrze się sprawdza( aplikacja tworzy prosty, tymczasowy plik html z PNG i otwiera go w przeglądarce( dowolna, ścieżka do przeglądarki w pliku konfiguracji))....
No a przez bootloader? Istnieje szansa, że w jakiś sposób się uszkodził rejestr podający ilość dostępnej pamięci flash - chyba wszystkie programy używają tego rejestru do poznania tego rozmiaru. W OpenOCD na pewno da się jednak wymusić rozmiar pamięci - wtedy program nie używa tego rejestru i programowanie powinno pójść. Chodzi o podanie rozmiaru pamięci...
Próbowałem obie opcje GDB i w obu przypadkach to samo. No to zrób tak żeby się nie wywoływał Było by to dużo łatwiejsze, jak bym wiedział jaka jest tego przyczyna. Taki sam plik binarny na CooCoxie debugował się bez problemu i nie wchodził najpierw w HardFault. Dlatego mam wrażenie, że to może być coś z OpenOCD. Tym bardziej, że już wcześniej miałem...
Ale kompilator i linker jest inny, w innej wersji. To już wystarczy, żeby się niekoniecznie lubił z kodem "starego typu", którego jest pełno w necie. W tych chwilach zwykle polecam swój przykład, który akurat nie cierpi na tą przypadłość [; Startup, tablicę wektorów i skrypt linkera możeś śmiało wziąć z przykładu dla LPC2103 - zobacz tylko w pliku z...
Postanowiłem bardziej dokładnie przeanalizować dokumentację rdzenia Cortex-M3 (na którym jest wykorzystywany przeze mnie uP STM32F107) – dokument „DDI0337G_cortex_m3_r2p0_trm.pdf... ze strony http://infocenter.arm.com/help/index.jsp Cortex-M3 TechnicalReference Manual. W dziale System Debug -> 11.5 DWT page 11-13 opisane są dokładnie...
Pierwsza kwestia. Chodzi o to, że Cortex-M3 może zostać zresetowany "programowo" - jest specjalny rejestr który na to pozwala, jednak jest to właśnie reset samego rdzenia. Możliwy jest jeszcze jakby "drugi poziom" takiego "programowego" resetu - który resetuje też peryferia. Tak czy siak - OpenOCD domyślnie korzysta z tego co może, a ponieważ żaden...
Blue Draco: 1. Debugger twierdzi, że jestem we flashu. Programu do RAM-u nie ładuję. Nie wiem dlaczego wyświetl mi w oknie OpenOCD adres z RAM-u. 2. Wpisywanie wartości domyślnych na pewno nie zaszkodzi. Widziałem już takie kwiatki, że rejestr jest po resecie inny niż deklarowany przez producenta (co prawda nieczęsto, ale nawyk mi pozostał). 3. memset...
mam takie pytanko, ktore chyba jest bardziej życzeniem, no ale moze... otoz jak wiadomo, przez gdb mozna sobie grzecznie debuggowac rdzenie ARM w eclipse (jak i AVRy, kwestia ta sama), tyle ze w ogole nie istnieje tam cos takiego jak podglad rejestrow (taki jak w komercyjnych srodowiskach), nie mozna tez ustawic podgladu konkretnego adresu, w ktorym...
Opcje -g? Masz ustawioną? EmbSysRegisters wtyczka do eclipse polecam pełen podgląd rejestrów.
No więc zasadniczo w każdym przypadku (w sensie niezależnie od tego jakiego ARMa masz) musisz zmienić skrypt linkera. Z grubsza wywalasz z niego definicję pamięci rom, a następnie wszystkie sekcje umieszczasz w ram ("... } > ram AT > ram"). Poniżej różnice między skryptem dla rom i dla ram z projektu STM32: >diff -u stm32f103rb_rom.ld stm32f103rb_ram.ld...
Widzę że dosyć cich. dorzucam jeszcze skrypt linkera i startup. nawet mam brakepointa w void Reset_Handler(void) i w niego nie wchodzi. ale na brakepointa w Default_Handler reaguje. Zanaczam że jak wgram program na mikrokontlorer to działa bez zarzutu... [syntax=c]/* Procedura startowa dla STM32 connectivity line devices */ /* NastÄ™pujÄ…ce...
Zakładka Memory jest trochę lewa... Najlepiej zrób to za pomocą OpenOCD i telnetu: komendy: mww address value (zapis) mdw address (odczyt) 4\/3!!
Ja mam tylko target remote localhost:3333 monitor reset halt lub target remote localhost:3333 monitor reset halt #load monitor flash write_image erase main.bin 0x08000000 bin load działa ale mam przypadek gdzie muszę użyć tego drugiego
Plik konfiguracji ustawia Ci prędkość adaptera. Przesuń "adapter_khz 1" do tego końcowego bloku -c "...". Czyli np. tak: sudo openocd -f /usr/local/share/openocd/scripts/interfa... -c "transport select swd;" -f /usr/local/share/openocd/scripts/target/... -c "reset_config srst_nogate connect_assert_srst; adapter_khz 1"...
Odpowiedź na Twoje pytanie jest dosyć prosta - protokół SWD nie ma rozkazu zapisu do flash i tego się po prostu nie da tak zrobić jak zapisu do RAM. Oprogramowanie na PC, które się komunikuje przez SWD z układem (np. program do ST-Linka, OpenOCD) wgrywa do RAMu specjalną procedurę, która fizycznie realizuje zapis (poprzez odpowiednią sekwencje zapisów...
Spróbuj może też debuggowania przez samo OpenOCD i telnet - sprawdź czy wszystkie typowe operacje (podgląd pamięci, instrukcji, rejestrów, step, halt, resume, reset, programowanie, ...) działają jak należy. 4\/3!!
1. Upewnij się, że OpenOCD ma skonfigurowane reset_config na "separate". 2. Upewnij się, że w komendach startowych dla GDB jest "monitor halt reset" 3. Poniżej tej komendy dodaj "monitor mww adres wartosc" (adres - adres rejestru MEMMAP, wartosc - wartość która ustawi "normalne" mapowanie pamięci). Zauważ, że po resecie włącza Ci się bootloader (pc...
Zmieniłem -g na -g3 i dalej nie mogę podglądać tych rejestrów :( Co by tu jeszcze zmienić ?
Jedynka nie jest tutaj problemem. Popatrz na to w ten sposób jak na preskaler. Jeśli wpiszesz do preskalera wartość x (np 5), to w rzeczywistości dzielisz sygnał zegarowy na x + 1 (czyli np 6). 0 -> 1, 1 -> 2, 2 -> 3, 3 -> 4, 4 -> 5, 5 -> 0 => całość trwa SZEŚĆ taktów dokładnie tak samo jest z timerem i rejestrami match / compare...
Rejestry deklarowane przez program nie mają nić współnego z rejestrami mikrokontrolera , z resztą odczyt i zapis zawartości mikrokontrolera ich nie dotyczy , bo są fizycznie w pamięci ram której programator nie zapisuje . "Rejestr" nie oznacza tylko fizycznego rejestru rdzenia procesora czy peryferiala . Może to być jedna lub kilka komórek w pamięci...
z mojej strony: warto byłoby polecić jeszcze instalację wtyczki Embsys RegView, podgląd rejestrów peryferyjnych może być przydatny
Jak w ogóle uruchomić jakieś okno programowania? I jak to ustawić żeby programowało przez Wigglera? Jeśli chcesz spod Eclipse, to trzeba dodać odpowiednie wywołanie dla OpenOCD. Zerknij na moją stronę, w dziale download > JTAG-lock-pick jest taki plik "JTAG-lock-pick - ultra-krótka instrukcja" - w nim jest pod koniec napisane jak należy wywołać...
Jesteśmy. Myślę, że mamy też leżące urządzenia zasilane „N”, więc jak tylko je podłączymy, powinniśmy być w stanie uzyskać coś podobnego. W międzyczasie planujemy użyć interfejsu API profilu BLE firmy Beken, aby uzyskać w pełni „przezroczysty UART” i dokonać inżynierii wstecznej wywołań niższego poziomu (zasadniczo ustawiając rejestry). Staramy się...
Dzień dobry, Kiedyś sobie dłubałem z stm32f103 (bluepill). Wtedy udało mi się (na podstawie ukradzionego skądś projektu i Makefile'a) zrobić sobie taki folder szablon i wszystko fajnie działało. Jednak teraz nie mogę w gdb wyświetlić zawartośi rejestrów peryferiów. Kiedyś wystarczyło napisać: p/x GPIOB->ODR i wyświetlał wszystko ładnie. Teraz dostaję:...
Kolego prawdopodobnie pomyłka jest przy przesuwaniu. Zwróciłeś uwagę na to co się najbardziej rzuca w oczy ? zm = (16>>rejestr); Obsługa przerwania jest, jakby to ująć, nie napisana. Moje pytanie dotyczy maski przerwań zewnętrznych. Rejestru WIU->MR. Pozdrawiam.
LPC spisuje się świetnie. Biblioteki do LPC niestety nie ma tak fajnej jak do STM32 i przez to troszkę bardziej trzeba się w rejestry zagłębiać. Działa normalnie z OpenOCD tylko troszkę plik konfiguracyjny od innego LPC17xx trzeba przerobić. Ja osobiście polecam LPCExpresso, ma od razu wbudowane rejestry procesora i szybko i fajnie działa. Również odpaliłem...
A jeżeli utworze projekt z HALem i nie usunę tej biblioteki i będę programować na rejestrach, to może mi się coś wgrać do mikrokontrolera co może mi potem przeszkadzać w czymś?
$ arm-none-eabi-objdump --demangle -S output/program.elf > output/program.lss i wrzuć ten plik tutaj. Byle to był firmware bez ŻADNYCH zmian względem tego co debuggowałeś wyżej, bo wtedy porównywanie wartości rejestrów jest bezcelowe. Dodatkowo w OpenOCD (przez `telnet localhost 4444`) wywołaj takie dwie komendy gdy jesteś w HF: mdw 0x200003fc 16 mdw...
Chciałbym tu napisać kilka słów o problemach z poleceniem "halt" w OpenOCD z którymi sam walczyłem przez dni kilka. Używam procesora LH79520 (ARM720T) i za pomocą JTAG jest tam programowany zewnętrzny Flash - działa bez problemu. Natomiast próba wgrania softu i uruchomienia uparcie kończyła się komunikatem "halt time out", mimo wielu kombinacji z resetem,...
Muszą być oba napięcia. Pamiętaj też, że TMS470 mają rdzeń ustawiony na big-endian i nie można tego zmienić. BTW, widzę że ode mnie kupiłeś te układy. Może Ci trochę pomoże ta stronka: http://kred.wikidot.com/tms470-board - znajdziesz tam trochę rzeczy do których doszedłem jak się jeszcze tymi układami bawiłem. Jakiego kompilatora używasz? Jeśli GCC...
nie wiem, gdyz nie uzywalem ARMow ATMELa [; niemniej jednak yagarto przy uploadzie przez OpenOCD i JTAGa na USB do prockow LPC2xxx definitywnie odczytuje plik elf. 4\/3!!
Jeśli już zdecydowałeś o wyborze mikrokontrolera i jest to STR7 to nie mogę Ci pomóć( nie miałem z nimi styczności ale koledzy z działu 'mikrokontrolery' na pewno z nimi pracowali). Osobiście polecam rodzinę AT91SAM7 od ATMELa. Procesory przyjazne, odporne na pomyłki :), dużo materiałów( w tym sporo postów na 'mikrokontrolery'). W praktyce wygląda to...
Dzięki za uwagę. Zauważyłem, że podczas debugowania niektóre rzeczy zostają (w innych odrębnych przypadkach). Jeśli używasz standardowych konfigów do OpenOCD, to dodaj do jego wywołania coś takiego: -c "reset_config trst_and_srst" Domyślnie OpenOCD zakłada, że JTAG nie ma pinów resetu i w przypadku Cortex-M3 resetuje go specjalnym rejestrem rdzenia....
Hej, mam problem z tytułowym mikrokontrolerem. Po wgraniu przez JTAG (CrossStudio "Build and Run") prostego programu zapalającego LEDy na płytce projektowej, wszystko działa. Jednak gdy zresetuje cały układ (poprzez przycisk reset, bądź odłączając zasilanie), przestaje działać. Debug pokazuje, że rejestr instrukcji (PC) wskazuje w inne miejsce, niż...
Za dużo GDyBbania jest. Wszystko zależy od sposobu dostarczenia danych dla loadera. Są dwa sposoby jeden to ładowanie obszaru ramu danymi dla flash i uruchamianie funkcji i tak jest chyba w CW, drugi to załadowanie loadera do ramu, puszczenie go luzem i komunikacja z nim poprzez rejestry i tak może być w O²CD, ale tak jak powiedziałem na początku...
odhaczyłem reset i halt i wpisałem monitor reset halt monitor reset init Wystarczy tylko to drugie i zaznaczyłem, żeby sam ładował obraz (pewnie tutaj nie powinien tego robić) i symbole potem break point at main i zahaczyłem Resume. Jak będziesz mieć nowe Eclipse i nową wtyczkę GDB to nie ma siły aby te konfiguracje nie były widoczne - wtedy zobaczysz...
Cześć Wszystkim! Mam Eclipse w wersji Yagarto i AT91SAM7S256. Układ programuję przez SAM-BA. Niestety nie mogę uruchomić debugowania w Eclipse przez Wiggler'a. OpenOCD mam w wersji 2006re82, bo tylko taki znalazłem ze sterownikiem portu równoległego. Próbowałem kolejnych kroków z manuala Jima Lynch'a oraz ze strony kolegi Chopina ale bez końcowego rezultatu....
GrzegorzKostka: nie używam debugera, zawsze piszę kod na żywca i wyrzucam komunikaty przez UART albo telnet. Ta funkcja po prostu nie zwraca poprawnych wartości, nie wiem, może błąd jest gdzieś wyżej. Może w tym przypadku faktycznie dobrze byłoby podejrzeć rejestry w pracy krokowej, ale JTAG + OpenOCD nigdy mi nie zadziałał tak jak trzeba w trybie debugu....
Mam problem z uruchomieniem Eclipse + usbscarab2 + stm32f103rbt6 (eval board od stm). Calosc robiona wg poradnika ze strony Freddiego. Czesc narzedziowa, tj openocd + jtag oparta na openocd w wersji 0.4.0, wywolany z argumentami: -f interface/usbscarab2.cfg -f target/stm32.cfg gdzie usbscarab2.cfg jest tresci: #interface interface ft2232 ft2232_device_desc...
żeby była jasność bo może nie sprecyzowałem: nie szukam wynalazków typu visual studio... itp... bo to wszystko sprowadza się generalnie do straty czasu podczas konfiguracji oraz późniejszej pracy ... (chociaż coś czuje że bez tego sie chyba nie obejdzie) Dziwie sie w ogóle - że cały ten dramat pod postacią "mozliwości" instalacji OPENOCD, C/C++ SDK...
Dziękuję Ci za pomoc. Troche mnie to "ugotowało", bo sam chyba przez to nie przebrnę. A ten Atmel-ICE pod Atmel Studio genialnie chodzi. Ale teraz coś mnie na Linuksa tknęło. No i do tego w Code::Blocks. Tam ładnie działa mi xds100v2 na tych lpc2142, co do których mi w innym wątku pomogłeś. A że ten Code:Blocks mi sie praktycznie nie wiesza, no i ogólnie...
Dzięki, dobrze wiedzieć, jak coś to zgłoszę się do Ciebie po najnowsze OpenOCD. Na razie spróbuje na tym starociu co mam - 0.6.1. Przeglądnąłem sekcję RCC. Znalazłem tam jakieś różnice w rejestrach do włączania zegarów dla poszczególnych peryferiów i ich resetowania. Co do samego ustawiania SYS_CLK nie znalazłem różnic, czyli wszystkie funkcje w projekcie...
Do flash nie zapisujesz przez komendy mww/mwh/mwb, tylko albo trzeba użyć funkcji np. "flash write_image ..." / "program ..." (wymaga to odpowiednio skonfigurowanego pliku opisującego Twoją płytkę dla OpenOCD), albo musisz się bawić ręcznie tak jakbyś chciał zrobić taki zapis bezpośrednio przez rejestry procesora (czyli żeby zapisać jeden bajt to musisz...
U mnie jak dam -gddb3 to zaczyna niepokojąco wariować (np step in do funkcji foo1() powoduje chwilowe wejście do foo2(), by po jednym stepie przeskoczyć na odpowiednie miejsce). Miał ktoś podobnie ? Przy włączonej optymalizacji to zasadniczo (niestety) "normalne", ale przy -O0 nie powinno się tak dziać. (at)Freddie Chopin Czy jest jakaś ewolucja aby...
Tzn, że program może działać dalej poprawnie a debuger wskazuje na to, że jesteśmy w np HardFaultHandlerze ? Mógłbyś nieco rozwinąć myśl ? Czasem może być jakiś problem sprzętowy/programowy/systemowy, który może spowodować wywalenie się debuggera, który będzie np. uparcie twierdził, że jesteśmy wciąż w jakiejś linii, choć mikrokontroler sobie wtedy...
Jeśli przed zatrzymaniem procka układ coś tam jeszcze zrobił (co jest dosyć popularnym problemem), to po zaprogramowaniu faktycznie może nie działać opcja "resume" i jest to całkowicie naturalne - to tak jakbyś uruchomił program, zatrzymał go w losowym momencie, zmienił program na inny i odblokował rdzeń, który zacznie pracę od tego miejsca gdzie skończył...
Twój układ ma jakieś zworki do wybierania z której pamięci ma działać? Bo gdy ładujesz program do flash, to wartość PC sugeruje, że całość chce działać z RAM, więc faktycznie jest problem. Do tego program dla RAM masz skompilowany dla adresów od 0, natomiast program dla Flash od 0x100000, ale to akurat jest mało istotne jeśli poprawnie konfigurujesz...
hdr_bitband.h Cortex-M0 nie obsługuje bitbandingu. Tak wiec wszystkie operacje na "zmiennych" bitband na 99% spowodują hard-fault. Rozchodzi się więc o WSZYSTKIE dostepy do rejestrów i dostęp do LEDa. Co do openOCD wystarczy zmienić f4 na f0 w argumencie a w debugger config chyba tylko jak się nie mylę nazwę projektu. Tak jest. No widzę że w sumie...
Dobra, to jeszcze jedno pytanie - w jaki sposób uruchamiasz program w RAM? Moje testy na szybko pokazują, że przez GDB nie da się tego zrobić "standardowo" (; Czy np. przestawiasz zworkę na układzie tak żeby bootował się z RAMu czy może używasz jakichś specjalnych komend podczas inicjalizacji debuggera żeby wymusić pracę z RAM? Gdy uruchomię debuggowanie...
openocd instalacja openocd porty openocd programować
nokia suita wyjąć bęben pralka łożysko laguna ogrzewaniem
lodówka grzeje zamiast chłodzić rozliczenie delegacji
Rok produkcji telewizora Blaupunkt BN32H1032EEB Jak otworzyć bagażnik Mercedes E200 W212 2014 po zamknięciu kluczyków?