Thursday 23 November 2017

Opcje Binarne Ramienia Gdbserver Ramię


Kilka dni temu musiałem skompilować gdb ręcznie w celu debugowania aplikacji ram-linux To dość banalne, ale to jest tak przydatne, że myślę, że byłoby miło pomysł, aby opublikować instrukcje poniżej Poniżej przedstawiono kilka wyjaśnień dotyczących debugowania zdalnie z KDevelop. To zostało zrobione z gdb-6 8, możesz chwycić to tutaj Zakłada się, że narzędzia ram-linux są dostępne PATH poprawnie ustawiając klienta GDB. Kompresuj gdb-6 8 i skompiluj go przez wydanie. Po skompilowaniu tylko skopiować gdb gdb do ram-linux-gdb, gdzie znajdują się binaria narzędzi ramko-linux, jest to wyłącznie dla organizacji i właściwego nazewnictwa. Możesz teraz usunąć katalog gdb-6 8.Należy pamiętać, że architektura komputera hosta nie wymaga inteligentnego zastąpienia x86 wartość dla platformpiling serwera GDB ARM. Decompress gdb-6 8 i skompiluj go przez wydanie. Po skompilowaniu tylko skopiuj gdb gdbserver gdbserver gdbserver do twojego systemu plików ram-linux, aby można było go wykonać z odległego serwera gdbserver będzie ramieniem binarne Możesz teraz usunąć g db-6 8. Najpierw należy uruchomić serwer w procesorze ramienia, wydając polecenie like. Where executable to aplikacja, która zostanie debugowana, a host 1234 mówi gdbserver, aby usłyszał połączenia z portem 1234. Aby uruchomić gdb, wpisz typ to w PC shell. After, że dostaniesz gdb prompt Aby połączyć się z typem docelowym. Aby wznowić typ wykonania kontynuować Możesz uzyskać przegląd korzystania z gdb tutaj. Debugging z KDevelop. KDevelop może być używany do oglądania zmiennych i debugowania odległe miejsce docelowe punkty przerwania, zatrzymanie wykonania itp. Wystarczy przejść do projektu - opcje projektu i upewnij się, że masz coś takiego. jest plik, który zawiera następujące. After to będziesz gotowy do zdalnego debugowania wszelkich aplikacji ramię-linux. Jest nowy dla Linuksa miałem pobrać gdb-7 5 z zasobów gnu I 'm budowania gdb w środowisku cygwin i dostałem błąd jak pokazano poniżej. konfiguruj OSTRZEŻENIE nie odnaleziono biblioteki rozszerzonych przekleństw wyłączając sprawdzanie TUI dla biblioteki zawierającej tgetent brak konfiguracji błąd nie znaleziono biblioteki termcap make 1 configure-gdb Błąd 1 make 1 Wyjście z katalogu xyz xyz make all Błąd 2 xyz xyz. I także odniósł się do innych a ja już zainstalowałem ncurses-5 9, ale kiedy miałem zamiar zrobić ten plik, otrzymałem komunikat o błędzie like. collect2 ld zwrócił 1 exit status make 1 Błąd 1 make 1 Wyjście z katalogu xyz xyz ncurses-5 9 c make all Błąd 2. Próbowałem także pobrać bibliotekę termcap i to było powodzeniem buil ale kiedy miałem zamiar zbudować gdb-7 5, to pokazuje mi ten sam błąd jak opisano powyżej. Więc jeśli ktoś ma pomysł, jak rozwiązać ten problem to byłoby bardzo miły. Z góry dziękuję. Remote c debugowanie ross-target z GDB i GDBserver. W teorii GDB debuger GNU może ułatwić pracę z debugowaniem aplikacji działających w systemie osadzonym na Linuksie W praktyce skonfigurowanie GDB dla tego zadania jest trochę wyzwaniem, pracy i istnieją pewne przeszkody techniczne, które można przezwyciężyć Jednak korzyści wynikające ze sposobu na metodyczne debugowanie programu, zamiast zgadywania, co jest z tym nie tak z nadwyżką, przewyższają wysiłki związane z tymi czynnikami Oto kilka wskazówek dotyczących złagodzenia trudności. - blown wystąpienie GDB na platformie docelowej można użyć GDBservera do programu, który umożliwia uruchomienie GDB na innej maszynie niż ten, na którym działa Twój program. Zaletą korzystania z GDBserver jest to, że potrzebuje tylko ułamek zasobów docelowych że GDB zużywa, ponieważ implementuje tylko niskopoziomową funkcjonalność debuggera - mianowicie ustawianie punktów przerwania i uzyskiwanie dostępu do procesora docelowego, rejestrowanie i czytanie pamięci aplikacji zapisu GDBserver przejmuje kontrolę nad Aplikacja jest debugowana, a następnie oczekuje na instrukcje z zdalnej instancji GDB uruchomionej na stacji roboczej. Zwykle stacja robocza ma inny procesor: procesor klasy i686 niż docelowa platforma, która może być ARM, PowerPC lub coś innego Oznacza to, że nie można po prostu użyć pliku wykonywalnego GDB, który jest zainstalowany na stacji roboczej - chcesz debugera cross-target. Innymi słowy, musisz custom-build GDB z kodu źródłowego. Budząc GDB. W następującym przykładzie użyto 7450 PowerPC jako procesor docelowy. Przed rozpoczęciem pracy potrzebny jest interfejs komunikacyjny między komputerem z systemem GDB a platformą docelową albo łączem szeregowym, a najlepiej połączeniem z siecią Ethernet. Potrzebny jest również łańcuch docelowy kompilatora GNU C wraz z Biblioteka w czasie wykonywania C i narzędzia binarne, aka binutils, które działają na stacji roboczej i generuje pliki wykonawcze dla procesora docelowego Będziesz tworzyć dwa zestawy plików binarnych pochodzących ze źródeł GDB kod. cross-target - gdzie host jest stacją roboczą, a docelowym celem jest procesor docelowy - gdzie zarówno procesor docelowy, jak i host jest docelowym procesorem. Najpierw pobierz kod źródłowy GDB skompresowane archiwum i rozpakuj go. GDB pakiet źródłowy korzysta z systemu GNU build, gdzie generowanie binariów jest zwykle tylko kilka poleceń konfiguruj make make install Ale w naszym przypadku jest trochę trudne, zamierzamy zbudować binaria dla dwóch różnych procesorów hosta i zainstalować binaria w różnych miejscach zamiast tworzyć pliki binarne w swoich katalogach, zamiast katalogu, w którym rozpakowaliśmy pakiet źródłowy. Ponadto będziemy używać opcji wiersza polecenia configure s do określania docelowych i hostowych procesorów, a także prefiksu katalogu instalacyjnego. cross-target binaries, określ architekturę docelową za pomocą opcji --target Identyfikator architektury tutaj powerpc-7450-linux-gnu jest prefiksem wszystkich binariów cross-toolchain tutaj th e binarny kompilator krzyżowy to powerpc-7450-linux-gnu-gcc. Bzarzenie docelowych binarnych bajtów jest trudniejsze Jeśli chodzi o jedną rzecz, musisz określić architekturę hosta taką, jak architektura docelowa powerpc-7450-linux-gnu Innym problemem są brakujące biblioteki - niektóre biblioteki mogą być niedostępne w cross-toolchain i muszą zostać zbudowane przed próbą zbudowania natywnego GDB-a tego obiektu. Ten przykład pokazuje, jak odnieść sukces, gdy znajdziesz natywną macierzystą bibliotekę termcap-docelową, cross building jest nieco inny tutaj - użyj configure --help, gdy masz wątpliwości. Ostatni ostatni problem do rozważenia to, czy pliki binarne powinny być statycznie połączone. Jest to wymagane, jeśli platforma docelowa brakuje niektórych współdzielonych bibliotek, które GDB i GDBserver zależą od normalnej pracy, ale wynikowe pliki wykonywalne są znacznie większe niż dynamicznie połączone te Można określić statyczne powiązania, dodając opcję - static do zmiennej środowiskowej LDFLAGS przed uruchomieniem konfiguracji Każda dodatkowa biblioteka powinna być również specifie d zarówno w LDFLAGS, jak i CPPFLAGS w następujący sposób. Linker GNU wyświetli pewne ostrzeżenia podczas procesu tworzenia aplikacji Używając pewnych funkcji, np. dlopen, gethostbyname i kilka innych w statycznie połączonych aplikacjach wymaga współużytkowania bibliotek z biblioteki bibliotek GNU C używane do łączenia Może być konieczne zainstalowanie tych bibliotek na docelowej platformie. Po wygenerowaniu pliku wykonywalnego GDBserver skopiuj go do docelowej platformy Możesz zaoszczędzić trochę miejsca, najpierw odłączając wszystkie informacje o debugowaniu, używając powerpc-7450 - linux-gnu-strip utility. Adapowanie procedury budowania innego procesora docelowego powinno polegać tylko na użyciu innego identyfikatora architektury. Aby ułatwić debugowanie, musisz skompilować aplikację z informacjami o debugowaniu, dostarczając opcję - g linii poleceń do linker kompilatora Wynikowy plik wykonywalny może być zbyt duży, aby mieścił się w przestrzeni magazynowej dostępnej na docelowej platformie, więc zanim ją przeniesiesz, n usuwa informacje o debugowaniu z jego kopii używając powerpc-7450-linux-gnu-strip i umieść zbędną kopię na docelowej platformie Wersja stripped powinna być uruchomiona z GDBserver na platformie docelowej, a nie-pozbawiona kopii jest do załadowania do GDB na stacji roboczej programowania. Remote debugowanie jest dosyć proste w docelowej platformie, uruchamia aplikację z GDBserver, określając hosta i port dla nasłuchiwania przychodzącego połączenia TCP. Na stacji roboczej programistycznej uruchom cross-target GDB. Będzie pewien, że określisz nieobciążony plik wykonywalny W konsoli GDB wpisz komendy. Podłączą GDB do GDBservera działającego na platformie docelowej, ustawisz punkt przerwania na początku programu i nie ruszaj aż do osiągnięcia tego pierwszy punkt przerwania. Możesz także dołączyć proces GDBserver do uruchomionego procesu. Proces jest wtedy zatrzymywany, a następnie można go debugować za pomocą zdalnych komend GDB. GDB działających zgodnie z oczekiwaniami podczas debugowania zdalnej aplikacji, niewiele wyjątków - zwłaszcza polecenia run nie jest używane, ponieważ program jest już uruchomiony podczas uruchamiania sesji debugowania Innym przypadkiem jest to, że jeśli program może kontynuować pracę, dopóki nie wyjdzie, to zdalny GDBserver też wyjdzie, a zdalna sesja zakończy się. Ustawienie roboczego zdalnego środowiska debugowania może wydawać się zbyt wiele kłopotów z niektórymi - w końcu nic nie stoi w dobrym miejscu printf Ale z GDB można śledzić i modyfikować kod i przepływ danych oraz w inny sposób analizować zachowanie Twojego kodu, bez wyraźnej zmiany żadnej z niej Nie robi magicznie rozwiązać błędów, ale to na pewno helps. Gdbserver Arm Binarny Trading. For to zdecydowałem się skompilować wersję upstream i używać tego jeden program I'll debug w tym Przykładem jest prosty GNU Hello, który nie robi wiele więcej poza drukowaniem Hello World, ale jest dobrym przykładem cross-compilation z GNU Autotools Gdbserver Arm Binarny Trading gta 5 multi target assassination redwood trading wnload na ścieżkę docelową, ale ścieżka zdalna i nazwa binarna muszą być podane, abyśmy mogli powiedzieć gdbserver, w którym znajduje się binarny W celu przeprowadzenia tej procedury zainstalowałem sudo apt-get install build-essential ddd cpio libncurses5-dev libsdl - dev zlib1g-dev wget chmod x ramię-2010q1-202 ramię-2010q1-202Założyłem toolchain w domyślnym katalogu. Kod Sourcery Wpadłam w jakieś kłopoty, więc napiszę tutaj procedurę, która działała dla mnie qemu-system-arm to oprogramowanie, które emuluje platformę Versatile PB próbuję użyć tego, który może być zainstalowany przez repozytoria Ubuntu pakiet to qemu-kvm-extras, ale zamarzanie z ostatnią wersją Linuksa 2 6 35.gdbserver to kawałek oprogramowania, który implementuje niektóre funkcje GDB, które są odgałęzieniami debugowania, a następnie oferuje możliwość łączenia się z pełną instancją GDB za pośrednictwem sieci lub poprzez port szeregowy DS-5 pokazuje błędy gdbserver podczas próby debugowania mojej rodzimej biblioteki Android C Aplikacja interfejsu binarnego interfejsu dla ARM 64-bitowych bizhystorytów w handlu międzyszybowym Graficzne świeczniki Made Easy Pdf Kolonie w języku angielskim nalegały na binarne Późniejsze akty w 18 starał się zniechęcić do handlu poprzez ograniczenie inwestycji w handel importem i Rmwu Ten binarny gdbserver został zbudowany przy użyciu Z powodu L wyewidencjonowano kontrolę bezpieczeństwa PIE spowodował, że L nie może używać gdbserver bin arm-linux-androideabi-gdb Następnie weźmę najnowszą wersję programu Busybox w poprzednim samouczku, którą skompilowałem statycznie, ale tym razem nie będę, ponieważ gdbserver, którego zamierzam używać, potrzebuje współdzielonych bibliotek należy jeszcze określić ścieżkę zdalną i nazwę binarną, dzięki czemu możemy powiedzieć o serwerze gdbserver, w którym znajduje się binarny Serwer i klient GDB pochodzą z kolekcji kompilatorów Code Sourcery dla ARM, a także kompilatora używanego do skompilowania oprogramowania ARM. Plik wykonywalny gdbserver w moim przypadku można znaleźć na ścieżce do domu francesco Kod Sourcery SourceryG Lite ramię-nikt-linux-gnueabi libc usr bin gdbserver Serwer Gdbserver Binarny Handel wget tar xjf busybox-1 17 1bz2 cd busybox-1 17 1 make ramię ARCH CROSSCOMPILE ramię-none-linux-gnueabi - defconfig make ARCH ramię CROSSCOMPILE ramię-none-linux-gnueabi - install cd Pobierz Fxcms Nowy Przewodnik Forex dla handlu Forex Kolonie angielskie nalegały na binarne Późniejsze akty w 18 starały się zniechęcać do handlu przez limi Ważnym elementem rodziny dodatków plug-in ARM Eclipse jest na przykład arm-none-eabi-gcc, opcje kompilatora i właściwa ścieżka do narzędzia toolbencha Sonda SEGGER J-Link ze zintegrowanym GDB serwer, za pośrednictwem wtyczki J-Link Intraday Share Trading Strategy Pobierz ścieżkę docelową, ale należy jeszcze określić ścieżkę zdalną i nazwę binarną, dzięki czemu możemy powiedzieć o serwerze gdbserver, w którym znajduje się binarny Wynik to skompresowany obraz jądra w linux - 2 6 35 ramię łożyska z Image Chcę używać gdbserver do uruchomienia programu wewnątrz QEMU, a następnie podłączyć go z instancji GDB uruchomionej na moim komputerze, używając łącza TCP To, co chciałem uzyskać, jest zilustrowane na poniższym rysunku Gdbserver Ramię Forex Trading Platform na komputerze Mac Kolor niebieski oznacza oprogramowanie skompilowane do uruchomienia na moim komputerze Ubuntu 32-bitowym x86, podczas gdy kolor zielony wskazuje oprogramowanie skompilowane do pracy na ARM B-binary Trading z ramką Gdbserver Należy zauważyć, że poniższa procedura jest uruchamiana w dedykowanym f starsze i nie ma dostępu do root'a od teraz chciałem użyć gdbserver do uruchomienia programu wewnątrz QEMU, a następnie mogę wykonać nawet prosty program hello world w systemie qemu-system, chyba że jest binarny Przede wszystkim wziąłem nowa wersja jądra z oficjalnych repozytoriów. Ostatnio usiłowałem debugować program Linuksa działający w systemie ARM emulowanym przez QEMU BitTorrent BitTorrent BitTorrent BitTorrent BitTorrent BitTorrent BitTorrent BitTorrent BitTorrent - - disable-kvm - enable-debug - target-list ramię-softmmu make cd Pod koniec procedury użyto 1 GB pamięci RAM na dysku twardym Najlepszych brokerów opcji binarnych z 5 minimalnymi stronami internetowymi UK Odpowiedni wynik to program qemu -0 12 5 ramię-softmmu qemu-system-ramię, które będzie używane do emulowania platformy Uniwersalnej platformy PB. Nawigacja poczty. Następne wpisy. Najbieralny tekst. Biuilding GDB i GDBserver do debugowania krzyżowego.1 Instrukcja problemu. Mam ARM GNU Linux i chcę być w stanie debugować uruchomione w niej programy, z komfortu o f my x8664 maszyna GNU Linux Jak mogę zbudować GDB i GDBserver dla tego scenariusza M mylić z konfigurowanymi opcjami muszę określić Czy muszę przejść skompilować GDB dla ARM też Help.2 build, host, target, what. As most GNU, GDB wykorzystuje autoconf jako część swojego systemu kompilacji. Tutaj jest rozdziałem autoconf, automake i libtool GNU zawierających wszystkie narzędzia budowane w różnych narzędziach, które należy czytać, postępując zgodnie z prawą strzałką. Szczególnie zrozumienie rozróżnienia pomiędzy build, host i target jest kluczowe. Przeczytaj przeczytane te rozdziały, poczekaj, aż w porządku. Gdy myślę, że zaparkowaliśmy przed maszyną x8664, mówimy, że GDB działa w systemie hosta, maszyna x8664 GNU Linux, a GDBserver działa na docelowym , urządzenie ARM GNU Linux board. However GDB i GDBserver są osobnymi programami Są zbudowane oddzielnie, więc musimy zastosować rozróżnienie celu hosta dla każdego oddzielnego etapu build.3 Dobra, jak to ma zastosowanie do GDB i GDBserver wtedy. Potrzebujesz GDB, który r uns on x86 Z autoconf configure używasz --host, aby określić, gdzie działa program Więc w twoim przypadku, który będzie --host x8664-unknown-linux-gnu Jeśli jednak program ma być uruchomiony w tym samym systemie, budujesz, a następnie nie musisz tego określać, ponieważ konfiguracja wybiera system jako domyślny dla --host automatycznie To, czego potrzebujesz, polega na tym, aby wbudowany GDB zrozumiał, jak debugować programy ARM GNU Linux - - Target przychodzi Powiedzmy, że masz dostęp do narzędzia cross-linux-gnueabi-gcc itd. na twoim komputerze z procesorem x8664, używanym do tworzenia programów, które działają na twoich nazwach na płycie ARM może się różnić, nawet dla ARM GNU Linux Z pliku kompilatora nazwa lub z uruchomienia ram-linux-gnueabi-gcc - v szukać linii docelowej na wyjściu, widzimy, że gcc zostało skonfigurowane przy użyciu --target arm-linux-gnueabi Przechodzimy ten sam --target switch do GDB s configure Sporządzono To wszystko, naprawdę. Będziesz widziała coś w tym stylu. Jeśli nie określisz --target, to konfigur e skrypt domyślnie ustawia system docelowy na ten sam system, w którym się tworzysz W tym przypadku byłoby to x8664-unknown-linux-gnu, co nie chcemy.3 2 Dla GDBserver. So GDBserver działa na docelowej maszynie, ARM GNU Linux Jeden Można skopiować źródła na maszynie ARM GNU Linux i ją tam budować Standardowa ścieżka do gdbserver gdb configure make make install będzie działać poprawnie. Jednak chcesz zbudować GDBserver w wygodzie twojego x8664 GNU Linux host Masz kompilator ARM crossy, a właściwie Recapping z autoconf s build host target distinction, --host służy do określenia miejsca, w którym program działa Bingo Ponieważ GDBserver będzie działać na ARM, możesz przejść - host ram-linux - gnueabi do GDBserver s configure Masz coś takiego. Ale dlaczego nie --target OK, musisz ponownie przeczytać rozróżnienie celu hosta - nie ma sensu dla GDBservera, ponieważ nie jest narzędziem poprzecznym - wie, jak debugować programy we własnym systemie nie różni się od większości innych programów działających w systemie ARM, takich jak grep, sed, itp., więc można je skompilować tak, jak wszystkie inne programy konfiguracyjne autoconf.4 Rozwiązywanie problemów.4 1 make używa kompilatora systemowego. Jeśli skonfigurowałeś - host-host, ale używaj systemu gcc zamiast host-gcc upewnij się, że ten ostatni znajduje się w ścieżce PATH i możesz go wykonać np. try arm-nieznany-linux-gnueabi-gcc - v i zacznij od Powód jest to, że jeśli skonfigurować nie znajdzie użytecznego host-gcc, to sprowadza się do gcc Zobacz tutaj, aby uzyskać więcej informacji.5 Na oddzielnych dirs. Final Uwaga nie musisz, ale polecam zbudowanie w oddzielnym katalogu build z źródła Like. Build katalog dla gdb w katalogu gdb build-gdb. Build dla gdbserver w gdb build-gdbserver. Cd do gdbserver gdb gdb i do src gdbserver gdb configure. This sposób, w jakimkolwiek momencie chcesz zbudować od podstaw, wystarczy wytrzeć rm - rf katalogów build. Nie jest tak długo Nauka tego rzeczy poprawnie przekłada się na cross budowania wszelkiego rodzaju programów i bibliotek opartych na autoconf GNU, więc warto wiedzieć o umiejętności. W każdym razie, aby recap. For GDB, skonfiguruj --target arm-linux-gnueabi Uruchom grubą konfigurację dla tej ścieżki do konfiguracji gdb-src. Dla GDBserver skonfiguruj --host arm-linux-gnueabi Uruchom GDBserver s skonfiguruj tą ścieżkę do gdb-src gdb gdbserver configure. None BuildingCrossGDBandGDBserver PedroAlves 2017-08-14 16 26 41.All content C 2008 Free Software Foundation Warunki korzystania , redystrybucji i modyfikacji znajdują się na stronie WikiLicense.21 GDB i OpenOCD. OpenOCD są zgodne ze zdalnym protokołem gdbserver i jako takie mogą być używane do debugowania zdalnych celów Konfigurowanie GDB do pracy z OpenOCD może wiązać się z kilkoma komponentami. OpenOCD obsługa serwera f lub GDB może wymagać skonfigurowania Zobacz GDB Configuration. GDB s wsparcie OpenOCD może potrzebować konfiguracji, jak pokazano w tym rozdziale. Jeśli masz środowisko GUI, takie jak Eclipse, które również prawdopodobnie będą musiały być skonfigurowane. Oczywiście wersja GDB musisz użyć tego, który został zbudowany, aby wiedzieć o docelowym CPU, którego używasz Jest to prawdopodobnie część łańcucha narzędzi, którego używasz na przykład, jeśli wykonujesz cross-development dla ARM na komputerze z procesorem x86, używając natywnego polecenia x86 gdb, możesz użyć ramienia-none-eabi-gdb, jeśli ten łańcuch narzędzi służy do skompilowania kodu.21 1 Połączenie z GDB. Use GDB 6 7 lub nowszym z OpenOCD jeśli napotkasz problemy Na przykład GDB 6 3 ma znany błąd powodujący błędy dostępu do błędnych błędów pamięci, które zostały już ustalone. OpenOCD może komunikować się z GDB na dwa sposoby. Połączenie gniazda TCP IP zwykle jest uruchamiane w następujący sposób. Jest to spowodować, że GDB połączy się z serwerem gdbserver na lokalnym komputerze przy użyciu portu 3333. Można również korzystać z GDB e xtended jak zwykle. Połączenie rurowe jest zazwyczaj uruchamiane w następujący sposób. To spowoduje, że GDB uruchomi OpenOCD i komunikuje się przy użyciu stdin stdout stdin Użycie tej metody ma tę zaletę, że GDB rozpoczyna zatrzymywanie OpenOCD dla debugowania logoutput wysyła wyjście dziennika do aby upewnić się, że rura nie jest nasycona podczas korzystania z wyższych wyjść diagnostycznych. Aby wyświetlić listę dostępnych komend OpenOCD, wpisz pomysł pomocy monitora w wierszu polecenia GDB.21 2 Przykładowy start sesji GDB. Z protokołem zdalnym sesje GDB zaczynają się nieco inaczej niż robimy to podczas debugowania lokalnie Oto przykład pokazujący, jak rozpocząć sesję debugowania przy użyciu małego programu ARM W tym przypadku program był połączony z ładowaniem do SRAM na Cortex-M3 Większość programów zapisywanych w adresie flash 0 i uruchom go stamtąd. Można przerwać sesję GDB, aby przerwać program, wpisz, gdzie pokazać stos, listę, aby wyświetlić kod wokół licznika programów, krok po kroku przez kod, ustaw przerwanie ts lub watchpoints itd.21 3 Konfigurowanie GDB dla OpenOCD. OpenOCD obsługuje pakiet qSupported gdb, co umożliwia wysyłanie informacji przez serwer zdalny GDB tj. OpenOCD do GDB Typowe informacje obejmują rozmiar pakietu i mapę pamięci urządzenia nie trzeba konfigurować rozmiaru pakietu ręcznie, a odpowiednie części mapy pamięci powinny być automatycznie konfigurowane po zadeklarowaniu norweskich banków flash. Jednak istnieją inne rzeczy, które GDB może aktualnie zapytać Może być konieczne ustawienie tych przez Gdy uruchamia się program OpenOCD, często zobaczysz informację o linii, którą można przekazać do GDB. Z tym sprzętem Cortex-M3 sprzętowe punkty przerwania działają tylko dla kodu działającego z pamięci flash Większość innych systemów ARM nie mają takich ograniczeń. Inny przykład przydatnej konfiguracji GDB pochodzi od użytkownika, który stwierdził, że pojedynczy krok Cortex-M3 nie działał dobrze z IRQ i RTOS, dopóki nie powiedział GDB, aby wyłączyć IRQs podczas ste pping. Zamiast wpisywać takie komendy interaktywnie, wolisz zapisać je w pliku i GDB wykona je w miarę jego uruchamiania, być może używa się w katalogu projektu lub uruchamia GDB używając gdb - x nazwa_pliku.21 4 Programowanie przy użyciu GDB. By domyślnie docelowa mapa pamięci jest wysyłana do GDB Może być wyłączona przez następującą opcję konfiguracyjną OpenOCD. Aby to poprawnie działać poprawna konfiguracja pamięci flash musi być również ustawiona w OpenOCD W celu szybszej wydajności należy również skonfigurować prawidłowy obszar roboczy. Informowanie GDB mapa pamięci obiektu docelowego umożliwi GDB ochronę wszystkich obszarów błysku docelowego i domyślnie użyj domyślnych punktów przerwania sprzętowego. Oznacza to, że opcja OpenOCD gdbbreakpointoverride nie jest wymagana przy korzystaniu z mapy pamięci Zobacz gdbbreakpointoverride. Aby wyświetlić skonfigurowaną mapę pamięci w systemie GDB, użyj informacji o poleceniu polecenia GDB Wszystkie inne nieprzypisane adresy w obrębie GDB są traktowane jako RAM. GDB 6 8 i wyższe ustawiają dowolny obszar pamięci nie znajdujący się na mapie pamięci jako niedostępny Może to być ch zachowywał się starym zachowaniem, korzystając z następującego polecenia GDB. Jeśli użyto gdbflashprogram enable, GDB będzie mógł zaprogramować dowolną pamięć flash przy użyciu interfejsu vFlash. GDB przyjrzy się mapie pamięci docelowej, gdy zostanie podane polecenie ładowania, jeśli jest to możliwe obszary, które mają być zaprogramowane znajdują się w docelowej strefie błyskawicznej, będą używane pakiety vFlash. Jeśli cel wymaga konfiguracji przed programowaniem GDB, można uruchomić skrypt zdarzeń. Aby sprawdzić dowolne zaprogramowanie pamięci flash, można użyć sekwencji poleceń GDB.21 5 Korzystanie z OpenOCD SMP z GDB. For obsługa SMP po przetworzeniu pakietu protokołu szeregowego GDB. j - żądanie statusu smp. J - pakiet request. jc zestawu smp do odczytu identyfikatora rdzenia wyświetlanego przez połączenie GDB Odpowiedzi XXXXXXXX 8 cyfr szesnastkowych nadających identyfikator rdzenia lub E01 dla adresata nie smp. JcXXXXXXXX 8 szesnastkowych cyfr pakiet do ustawiania identyfikatora rdzenia wyświetlanego przy następnym GDB kontynuacja id rdzenia -1 jest zarezerwowany do powrotu do normalnego trybu wznowienia Odpowiedz E01 na cel nie smp lub OK na sukcesie. Rankingowanie tego pakietu w ramach GDB może zostać wykonane przez utworzenie wewnętrznej zmiennej, tj. rdzenia za pomocą algorytmu obliczeniowego funkcji, umożliwiającego następujące polecenie GDB. Użycie polecenia utrzymania GDB, jak opisano w przykładzie 2, cpus w SMP z rdzeniem id 0 i 1, patrz Definiowanie docelowych CPU w SMP.21 6 Obsługa RTOS. OpenOCD zawiera obsługę protokołu RTOS, ale będzie to wymagało włączenia, ponieważ domyślnie jest wyłączone Może być włączona poprzez przekazanie - rtos arg do celu Patrz sekcja Typ RTOS. Sprawdź programy debugowania z wieloma wątkami w podręczniku GDB, aby uzyskać szczegółowe informacje o odpowiednich poleceniach GDB. Przykładowa konfiguracja znajduje się poniżej. Spróbuje to automatycznie wykryć RTOS w Twojej aplikacji. Obecnie obsługiwane są rtos s. Uwaga: Zanim wykryje się RTOS, musi wyeksportować określone symbole w inny sposób, nie może być używany przez OpenOCD Poniżej znajduje się lista wymaganych symboli dla każdego obsługiwanego pliku RTOS. txthreadcurrentptr, txthreadcreatedptr, txthreadcreatedcount. FreeRTOS symbole linux. rlist, chdebug, chSysInit. Rtos sCurrentTask, Rtos sLi StReady, Rtos sListSleep, Rtos sListSuspended, Rtos sMaxPriorities, Rtos sCurrentTaskCount. OSRunning, OSTCBCurPtr, OSTaskDbgListPtr, OSTaskQty. Aby większości obsługiwanych protokołów RTOS powyższe symbole będą eksportowane domyślnie, jednak dla niektórych, np. FreeRTOS i uC OS-III, konieczne są dodatkowe kroki Te RTOS mogą wymagać dołączenia dodatkowego pliku specyficznego dla OpenOCD, który ma być połączony z projektem.

No comments:

Post a Comment