Sunday 10 September 2017

Gdbserver Arm Binära Alternativ


För några dagar sedan var jag tvungen att kompilera gdb manuellt för att felsöka en arm-linux-app. Det är ganska trivialt men det är så användbart att jag tyckte att det skulle vara en bra idé att lägga in instruktionerna här. Nedan finns några förklaringar om felsökning på distans med KDevelop. This gjordes med gdb-6 8, du kan ta tag i det här Det antas att arm-linux-verktyg är tillgängliga PATH korrekt sätter in GDB-klienten. Komprimera gdb-6 8 och kompilera den genom att utfärda. Efter sammanställning bara kopiera gdb gdb Till arm-linux-gdb där arm-linux toolchain-binärerna finns här är det bara för organisation och korrekt namngivning. Du kan nu ta bort gdb-6 8-katalogen. NOTERA om din värddatabasarkitektur inte är intel-baserad ersätt bara x86 med rätt Värdet för din plattformsspelning av GDB-servern ARM. Decompress gdb-6 8 och kompilera den genom att utfärda. Efter att ha samlat bara kopiera gdb gdbserver gdbserver till ditt arm-linux-filsystem så att du kan exekvera det från ett avlägset skal gdbserver kommer att vara en armelv Binär Du kan nu ta bort g Db-6 8 directory. Första servern bör startas i armprocessorn genom att utfärda något liknande. Var exekverbar är programmet som kommer att debuggeras och värd 1234 berättar gdbserver att lyssna på anslutningar till port 1234. För att köra gdb skriver bara Det här i en PC-skal. Efter det får du gdb-prompten Att ansluta till måltypen. För att fortsätta körningstyp fortsätter Du kan få en översikt över gdb-användning här. Buggning med KDevelop. KDevelop kan användas för att titta på variabler och felsöka Avlägsna målplatsbrytningspunkter, stoppa körning, etc. Gå bara till Project - Project Options och se till att du har något liknande. Är en fil som innehåller följande. Efter detta kommer du att vara redo att fjärrfelsöka någon arm-linux-applikation. Jag är ny för Linux Jag hade laddat ner gdb-7 5 från gnu resourses Jag bygger gdb i cygwin miljö och jag fick ett fel Som visas nedan. konfigurera VARNING nej förbättrad förbannelse bibliotek hittat inaktiverande TUI kontroll för bibliotek innehållande tgetent nej konfigureringsfel inget termcap bibliotek hittat gör 1 configure-gdb Fel 1 gör 1 Lämna katalogen xyz xyz gör allt Fel 2 xyz xyz. Jag hade också hänvisat andra Tråd och jag installerade redan ncurses-5 9 men när jag skulle göra den filen så fick jag felmeddelandet like. collect2 ld återvände 1 utgångsstatus gör 1 Fel 1 gör 1 Lämna katalogen xyz xyz ncurses-5 9 c gör allt Fel 2. Jag försökte också ladda ner termcap bibliotek och det var successfually buil men när jag skulle bygga gdb-7 5 så visar det mig samma fel som beskrivits ovan. Så om någon har en idé hur man löser detta problem så skulle det vara Väldigt snällt. Tack på förhand. Remote c Ross-target debugging med GDB och GDBserver. I teorin kan GDB, GNU-debuggeren, underlätta kärnan i felsökningsapplikationer som körs på ett Linuxbaserat inbäddat system. I praktiken är det lite av en utmaning att installera GDB för denna uppgift Arbete och det finns några tekniska hinder att övervinna. Men fördelarna med att metodiskt felsöka ett program istället för att gissa vad som är fel med det, väger mycket större insats. Här är några tips för att lätta på svårigheterna. - blåst instans av GDB på målplattformen, kan du använda GDBserver ett program som låter dig köra GDB på en annan maskin än den där programmet körs. Fördelen med att använda GDBserver är att den behöver bara en bråkdel av målresurserna Den GDB förbrukar, eftersom den bara implementerar debuggerens lågnivåfunktionalitet - nämligen inställning av brytpunkter och åtkomst till målprocessorregistren och läs skrivapplikationsminnet. GDBserver tar kontroll över E-ansökan är debugged, väntar sedan på instruktioner från en fjärrinstans av GDB som körs på en utvecklingsarbetsstation. Typiskt har utvecklingsarbetsstationen en annan processor sagt, en i686-klassprocessor än målplattformen som kan vara ARM, PowerPC eller något annat Det betyder att du inte kan använda GDB-körbarheten som är installerad på arbetsstationen - du vill ha en cross-target debugger Med andra ord måste du bygga upp GDB från källkoden. Bygga GDB. Följande exempel använder en 7450 PowerPC Som målprocessor. Innan du börjar behöver du ett kommunikationsgränssnitt mellan datorn som kör GDB och målplattformen antingen en seriell länk eller helst en Ethernet-nätverksanslutning. Du behöver även en cross-target toolchain en GNU C-kompilator tillsammans med en C-run-time-bibliotek och binära verktyg, aka binutils som körs på utvecklingsarbetsstationen och genererar körbara filer för målprocessorn. Du kommer att bygga två uppsättningar binärer från GDB-källan Code. cross-target - där värden är utvecklingsarbetsplatsen och målet är målprocessorn. nativ - där både värd och mål är målprocessorn. Först hämta GDB-källkods komprimerat arkiv och packa upp det. GDB Källkodspaketet använder GNU build-systemet, där generering av binärer är vanligtvis bara några få kommandon bortkonfigurera make make install Men i vårt fall är det lite knepigt vi tänker bygga binärer för två olika värdprocessorer och installera binärerna på olika platser Så vi Ll bygga binärerna i sina egna kataloger i stället för katalogen där vi paketerade källkodspaketet. Dessutom använder vi kommandoradsalternativen configure script s för att ange mål - och värdprocessorer och installationskatalogen. För att bygga upp Cross-target-binärer, ange målarkitekturen med alternativet - target Arkitekturidentifieraren här powerpc-7450-linux-gnu är prefixet för alla binärverktygs-binärerna här th E cross-compiler binär är powerpc-7450-linux-gnu-gcc. Att bygga in de inbyggda binärerna är trickigare. För en sak måste du ange värdarkitekturen samma som målarkitekturen powerpc-7450-linux-gnu. Ett annat problem saknas bibliotek - vissa bibliotek kanske inte är tillgängliga i korsverktyget, och måste byggas innan du försöker bygga ett mål-inbyggt GDB Detta exempel visar hur man lyckas när du hittar ett mål-inbyggt termcap-bibliotek saknas korsbyggnad är något annorlunda Här - använd konfigurera - hjälp när du är i tvivel. En sista fråga att överväga är om binärerna ska vara statiskt länkade Detta krävs om målplattformen saknar några av de delade biblioteken som GDB och GDBserver är beroende av för normal drift, men De resulterande körbarheterna är mycket större än dynamiskt länkade. Du kan ange statisk länkning genom att lägga till alternativet - static till LDFLAGS-miljövariabeln innan du kör konfigurera. Ytterligare bibliotek bör också anges D i både LDFLAGS och CPPFLAGS enligt följande. GNU-länken kommer att utfärda några varningar under byggprocessen Med hjälp av vissa funktioner, till exempel dlopen, gethostbyname och några fler i statiskt länkade applikationer krävs vid samspelet de delade biblioteken från GNU C runtime library versionen Används för länk Du kan behöva installera dessa bibliotek på målplattformen. När du har genererat GDBserver körbar, kopiera den till målplattformen. Du kan spara lite lagringsutrymme genom att ta bort all debuginformation från den först, med PowerPC-7450 - linux-gnu-strip utility. Adapting byggproceduren för en annan målprocessor bör endast vara en fråga om att använda en annan arkitekturidentifierare. För att underlätta debugging måste du kompilera ett program med felsökningsinformation genom att tillhandahålla - g kommandoradsalternativet till Compiler linker Den resulterande körbara filen kan vara för stor för att passa in i lagringsutrymmet som finns på målplattformen, så innan du flyttar den där N Strip felsökningsinformationen från en kopia av den med PowerPC-7450-Linux-Gnu-Strip och placera den avskalade kopian på målplattformen. Den avskalade versionen ska köras med GDBserver på målplattformen och den icke-avlägsnade kopian är Att laddas in i GDB på utvecklingsarbetsstationen. Avlägsnande av felsökning är ganska okomplicerad på målplattformen, starta programmet med GDBserver medan du anger värd och port för att lyssna på en inkommande TCP-anslutning. På utvecklingsarbetsstationen startar du cross-target GDB. Var säker att ange den icke-avlägsna körbar På GDB-konsolen, skriv. Dessa kommandon kommer att ansluta GDB till GDBserveren som körs på målplattformen, ställa in en brytpunkt i början av programmet och låt det gå tills det når det Första breakpoint. You kan också bifoga GDBserver till en process som redan kör. Processen stoppas sedan, och du kan sedan felsöka den med en fjärr GDB. GDB-kommandon fungerar som förväntat medan du felsöker ett fjärrprogram med en Några undantag - framför allt körningskommandot är inte använt, eftersom programmet redan körs när du startar debug-sessionen. En annan quirk är att om programmet får fortsätta tills det går ut, kommer den avlägsna GDB-servern att gå ut och Fjärrkontrollen avslutas. Uppsättning av en fungerande fjärranslutningsfelsmiljö kan tyckas vara för mycket av krångel för vissa - trots allt slår ingenting på en välplacerad printf Men med GDB kan du både spåra och ändra kod och dataflöde och analysera annars Uppförandet av din kod utan att uttryckligen ändra någon av det Det löser inte magiskt buggar, men det hjälper säkert. Gdbserver Arm Binary Trading. Av denna anledning bestämde jag mig för att kompilera uppströmsversionen och använda den. Programmet jag debuggar i detta Exempel är den enkla GNU Hej, det gör inte så mycket utöver utskrift Hello World, men är ett fint exempel på korssamling med GNU Autotools Gdbserver Arm Binär Trading gta 5 multi-målmord Wnload till målväg, men fjärrvägen och binärnamnet måste fortfarande anges så att vi kan berätta för gdbserver där binären finns. För att följa den här proceduren installerade jag sudo apt-get install build-essential ddd cpio libncurses5-dev libsdl - Dev zlib1g-dev wget chmod x arm-2010q1-202 arm-2010q1-202I installerade verktyget i standardkatalogen. Kod Sourcery Jag gick in i några problem, så jag kommer att skriva här proceduren som fungerade för mig qemu-system-arm är den programvara som emulerar en mångsidig PB-plattform jag försökte använda den som kan installeras via Ubuntu repositories paketet Är qemu-kvm-extras men det frös köra den senaste versionen av Linux 2 6 35.gdbserver är en mjukvara som implementerar några av GDB-funktionerna debugging-stubbarna och erbjuder sedan möjligheten att ansluta till en fullständig GDB-instans via nätverket Eller genom en seriell port DS-5 visar gdbserverfel när jag försöker felsöka mitt Android-inbyggda bibliotek C Applikations binär gränssnittsstandard för ARM 64-bitars Gdbserver Arm Binary Trading Forex Ljusstakar Made Easy Pdf De engelska kolonierna insisterade på binära efterföljande akter I 18 försökte avskräcka handeln genom att begränsa investeringar i importhandel och R mwu Denna binär gdbserver är byggd med användning På grund av att L har genomfört PIE-säkerhetskontroll orsakade detta att L inte kan använda gdbserver Bin arm-linux-androideabi-gdb Senare tar jag den senaste versionen av Busybox i en tidigare handledning. Jag sammanställde det statiskt, men den här gången kommer jag inte, för gdbserver som jag planerar att använda behöver delade bibliotek ändå Ladda ner till målväg, dock Fjärrvägen och binärnamnet måste fortfarande anges så att vi kan berätta för gdbserver där binären finns. GDB-servern och klienten kommer från Kod Sourcery-kompilatorns samling för ARM, liksom kompilatorn som användes för att kompilera programvaran för ARM. Gdbserver körbar i mitt fall kan hittas på sökvägen hem francesco Kod Sourcery SourceryG Lite arm-none-linux-gnueabi libc usr bin gdbserver Gdbserver Arm binär handel wget tar xjf busybox-1 17 1bz2 cd busybox-1 17 1 gör ARCH arm CROSSCOMPILE arm-none-linux-gnueabi - defconfig gör ARCH arm CROSSCOMPILE arm-none-linux-gnueabi - installera cd Få FxCMS Ny till Forex Trading Guide De engelska kolonierna insisterade på en binär Efterföljande akter i 18 försökte avskräcka handeln med limi Investeringar i importhandel och Huvuddragen i GNU ARM Eclipse-familjen med plugin-program är till exempel arm-none-eabi-gcc, kompilatoralternativ och rätt väg till verktygskedjan binär SEGGER J-Link-proben med sin integrerade GDB Server, via J-Link-plugin-programmet Intraday Share Trading Strategy Hämta till målsökvägen, men fjärrvägen och binärnamnet måste fortfarande anges så att vi kan berätta för gdbserver där binären finns. Resultatet är en komprimerad kärnbild i linux - 2 6 35 arch arm boot z Bild Jag ville använda gdbserver för att köra ett program inuti QEMU och sedan ansluta till det från en GDB-instans som körs på min dator med hjälp av en TCP-länk. Vad jag ville få er illustrerad i följande figur Gdbserver Arm-binär handels Forex-plattform på Mac Färgen blå indikerar programvara som sammansatt för att köra på min Ubuntu PC 32-bit x86 medan färggrön indikerar programvara som kompilerats för att köras på ARM Gdbserver Arm Binär Trading Observera att följande procedur körs i ett dedikerat f Äldre och ingen root-åtkomst krävs från och med nu ville jag använda gdbserver för att köra ett program inuti QEMU, och då kan jag t ex utföra ett enkelt hej världsprogram i qemu-system-armen, såvida inte binär är Först av allt tog jag Den nya kärnversionen från de officiella arkiverna. Jag ville senare felsöka ett Linux-program som körde inuti ett ARM-system som emulerades med QEMU Gdbserver Arm Binär Trading wget tjär xzf qemu-0 12 5gz cd qemu-0 12 5 configure - enable-sdl - - disable-kvm --enable-debug - target-lista arm-softmmu göra cd Vid slutet av proceduren användes cirka 1 Gigabyte hårddiskutrymme Bäst alternativa mäklare med 5 minsta webbplatser Uk Det relevanta resultatet är programmet qemu -0 12 5 arm-softmmu qemu-system-arm som kommer att användas för att emulera den mångsidiga PB-plattformen. Postnavigering. Recent Posts. Original text. Building GDB och GDBserver för cross debugging.1 Problem statement. I har en ARM GNU Linux Ombord, och jag vill kunna felsöka program som kör i den, från komforten o F min x8664 GNU Linux-maskin Hur bygger jag GDB och GDBserver för det här scenariot Jag är förvirrad med de konfigureringsalternativ som jag behöver ange. Tränger jag samman med GDB för ARM. Hjälp.2 bygg, värd, mål, vad som helst GNU-program, GDB använder autoconf som en del av sitt byggsystem. Här är kapitlet i GNU autoconf, automake och libtool-boken, alla byggande korsverktyg ska läsa gör följa högerpilen. Specifikt är förståelsen av skillnaden mellan bygg, värd och mål Avgörande. Gå läsa de länkade kapitlen tack såg jag, vänta okej och framåt. När vi tänker när det gäller parkerade framför en x8664-maskin, säger vi GDB körs på ditt värdsystem, x8664 GNU Linux-maskinen medan GDBserver körs på målet , ARM GNU Linux-styrmaskinen. GDB och GDBserver är dock separata program. De får byggas separat, så vi får tillämpa byggnadsvärdesskillnaden för varje separat byggsteg.3 Okej, hur gäller det då GDB och GDBserver. Du behöver en GDB som r Uns on x86 Med autoconf configure använder du --host för att ange var programmet körs. Så i ditt fall som skulle vara --host x8664-unknown-linux-gnu Men om programmet är tänkt att köras på samma system du Bygger från, då behöver du inte ange det, eftersom konfigurationen kommer att välja ditt system som standard för - värd automatiskt. Vad du behöver är att göra det så att den inbyggda GDB förstår hur man debugger ARM GNU Linux-program. Det här är var - - target kommer fram Säg att du har en arm-linux-gnueabi-gcc etc cross toolchain tillgänglig på din x8664 utvecklings värd, som används för att bygga program som körs på dina ARM-kort filnamn kan variera, även för ARM GNU Linux Från compiler s fil Namn, eller från att köra arm-linux-gnueabi-gcc - v leta efter mållinjen i utgången ser vi att gcc har konfigurerats med --target arm-linux-gnueabi Vi överför samma - target switch till GDB s configure Färdigt Det är det, verkligen. Du får se något som detta. Om du inte anger - bestäm sedan konfigurationen E-skriptet standardiserar målsystemet till samma system som du bygger på. I det här fallet skulle det vara x8664-okänt-linux-gnu vilket inte är vad vi vill.3 2 För GDBserver. Så igen kör GDBserver på målmaskinen, ARM GNU Linux One Du kan kopiera källorna över ARM GNU Linux-maskinen och bygga den där Standardvägen till gdb gdbserver configure make make install fungerar bra. Men du vill bygga GDBserver i bekvämligheten av din x8664 GNU Linux-värd Du har en ARM-kors-kompilator som är användbar, trots allt, rätt Recapping från autoconf s build värdmålskännetecken, --host används för att ange var programmet körs Bingo Eftersom GDBserver körs på ARM, passerar du - host-arm-linux - Gnueabi till GDBserver s configure Du får något liknande. Men varför inte - Target Okej, du måste gå igenom värden för att bygga värdmålet igen - Target gör inte riktigt mening för GDBserver, eftersom det inte är ett korsverktyg - det vet hur man debugger programmen på sitt eget system. S skiljer sig inte från de flesta andra program som körs på ARM-systemet, som grep, sed etc, så att du överstiger det, precis som alla andra autoconf-konfigurationsprogram. 4 Felsökning.4 1 gör använder systemkompiler. Om du har konfigurerat med - Värd värd, men gör använder systemet s gcc istället för värd-gcc se till att den senare finns i din PATH och att du kan exekvera det, t ex försök arm-unknown-linux-gnueabi-gcc - v, och börja över Anledningen Är att om konfigurationen inte hittar en användbar värd-gcc, faller den tillbaka till gcc Se här för mer info.5 På separata byggnader. Finsnabb Du behöver inte, men jag rekommenderar att du bygger på en separat byggkatalog från Källor Like. Build katalog för gdb i gdb build-gdb. Build katalog för gdbserver i gdb build-gdbserver. Cd till Gdb build-gdbserver och gör src gdb gdbserver configure. This sättet, när som helst du vill göra en byggnad från början, behöver du bara torka rm - rf byggkatalogerna. Det är inte så långt Att lära sig dessa saker ordentligt kommer att översättas till Cross bygga alla typer av GNU autoconf-baserade program och bibliotek, så det är en färdighet värd att ha. Anyway, för att recap. For GDB, konfigurera - target arm-linux-gnueabi Kör konfigurationsrutan för den sökvägen till gdb-src configure. För GDBserver konfigurerar - host-arm-linux-gnueabi Kör GDBserver s konfigurera för den sökvägen till gdb-src gdb gdbserver configure. None BuildingCrossGDBandGDBserver PedroAlves 2015-08-14 16 26 41.Alla innehåll C 2008 Free Software Foundation För användarvillkor , Omfördelning och modifiering, se WikiLicense-sidan.21 GDB och OpenOCD. OpenOCD uppfyller gdbserverprotokollet och kan därmed användas för att felsöka fjärrmål. Att ställa in GDB för att arbeta med OpenOCD kan innebära flera komponenter. OpenOCD Server support f Eller GDB kan behöva konfigureras Se GDB Configuration. GDB: s support för OpenOCD kan behöva konfiguration, som visas i det här kapitlet. Om du har en GUI-miljö som Eclipse, kommer det troligtvis att behöva konfigureras. Naturligtvis är versionen av GDB du använder kommer att behöva vara en som har byggts för att veta om den mål-CPU du använder. Det är förmodligen en del av verktygskedjan du använder. Om du gör cross-utveckling för ARM på en x86-dator, istället Av att använda det inbyggda x86 gdb-kommandot kan du använda arm-none-eabi-gdb om det är verktygskedjan som används för att kompilera din kod.21 1 Anslut till GDB. Unvänd GDB 6 7 eller senare med OpenOCD om du stöter på problem GDB 6 3 har en känd bugg som ger upphov till falska felåtkomstfel, som sedan dess har fixats. SeeOpenOCD kan kommunicera med GDB på två sätt. En TCP IP-anslutning med socklar startas vanligen enligt följande. Detta skulle göra att GDB skulle ansluta till gdbserveren På den lokala datorn med port 3333. Det är också möjligt att använda GDB e Xtended fjärrprotokoll enligt följande. En röranslutning startas vanligtvis enligt följande. Detta skulle leda till att GDB kör OpenOCD och kommunicera med hjälp av rör stdin stdout. Genom att använda denna metod har fördelen att GDB börjar stoppa OpenOCD för debug-sessionen logoutput skickar loggutmatningen till en Fil för att säkerställa att röret inte är mättat när man använder högre felsökningsnivåer. För att lista de tillgängliga OpenOCD-kommandon, skriv monitorhjälp på GDB-kommandoraden.21 2 Sample-start av GDB-session. Med fjärrprotokollet börjar GDB-sessionerna lite annorlunda än De gör när du debuggar lokalt Här är ett exempel som visar hur du startar en debug-session med ett litet ARM-program. I detta fall var programmet kopplat till att laddas in i SRAM på en Cortex-M3. De flesta program skulle skrivas in i flashadress 0 och Springa därifrån. Du kan då avbryta GDB-sessionen för att göra programbrytningen, skriv var du ska visa stacken, lista för att visa koden runt programräknaren, gå igenom koden, ställ in breakpoin Ts eller klockpunkter osv. 21 3 Konfigurera GDB för OpenOCD. OpenOCD stöder gdb qSupported-paketet, vilket gör att information kan skickas av GDBs fjärrserver, dvs OpenOCD till GDB. Typisk information inkluderar paketstorlek och enhetens minneskarta Du gör Behöver inte konfigurera paketstorleken för hand och de relevanta delarna av minneskartan bör automatiskt ställas in när du deklarerar NOR flash-banker. Det finns dock andra saker som GDB inte kan fråga för tillfället. Du kan behöva ställa in dem på Hand När OpenOCD startar ser du ofta en rad som rapporterar något. Du kan vidarebefordra den informationen till GDB med dessa kommandon. Med den specifika hårdvaru Cortex-M3 fungerar maskinvarupunkten endast för kod som körs från flashminne. De flesta andra ARM-system gör Inte har sådana restriktioner. Ett annat exempel på användbar GDB-konfiguration kom från en användare som fann att en enda stegande Cortex-M3 inte fungerade bra med IRQ och en RTOS tills han berättade GDB för att inaktivera IRQ: erna medan Pping. I stället för att skriva sådana kommandon interaktivt kan du föredra att spara dem i en fil och få GDB att exekvera dem när det startar, kanske med hjälp av en i projektkatalogen eller starta GDB med gdb - x filnamn.21 4 Programmering med GDB. By Standardminneskortet skickas till GDB Det här kan inaktiveras med följande OpenOCD-konfigurationsalternativ. För att detta ska fungera korrekt måste en giltig flashkonfiguration också ställas in i OpenOCD. För snabbare prestanda bör du också konfigurera ett giltigt arbetsområde. Information om GDB för Minneskartan för målet kommer att göra det möjligt för GDB att skydda alla flashområden i målet och använda maskinvarupunkten som standard. Det innebär att OpenOdD-alternativet gdbbreakpointoverride inte krävs när en minneskarta används. Se gdbbreakpointoverride. För att visa den konfigurerade minneskartan i GDB, Använd GDB-kommandot info mem Alla andra otilldelade adresser inom GDB behandlas som RAM. GDB 6 8 och högre Ange något minnesområde inte i minneskartan som otillgänglig Detta kan vara ch Vred mot det gamla beteendet genom att använda följande GDB-kommando. Om gdbflashprogram-aktivering också används kan GDB programmera vilket flashminne som helst med hjälp av vFlash-gränssnittet. GDB kommer att titta på målminne kartan när ett lastkommando ges Områden som ska programmeras ligger inom målflashområdet vFlash-paketen kommer att användas. Om målbehoven ska konfigureras före GDB-programmering kan ett händelseskript utföras. För att verifiera eventuell blixtprogrammering kan GDB-kommandot jämföra sektioner användas.21 5 Använda OpenOCD SMP med GDB. For SMP-support efter GDB seriellt protokollpaket har definierats. j - smp status request. J - smp set request. jc-paket för att läsa kärn-ID som visas med GDB-anslutning Svara är XXXXXXXX 8 hex-siffror som ger kärn-id eller E01 för målet inte smp. JcXXXXXXXX 8 hex-siffror för att ställa in kärn-ID som visas vid nästa GDB fortsätt kärn-id -1 är reserverat för att återgå till normalt återupptagningsläge Svara E01 för mål inte smp eller OK för framgång. Hantering av detta paket inom GDB Kan göras. med skapandet av en intern variabel dvs kärna medelst funktionstilldelningskalkylvärde som tillåter följande GDB-kommandot. med användningen av GDB-underhållskommando som beskrivs i följande exempel 2 cpus i SMP med kärn-id 0 och 1 se Definiera CPU-mål som arbetar I SMP.21 6 RTOS Support. OpenOCD innehåller RTOS-support, men det kommer dock att behöva aktivera som standard för inaktiverat. Det kan aktiveras genom att passera - rtos arg till målet Se RTOS Type. See Felsökningsprogram med flera trådar i GDB-manualen för detaljer Om relevanta GDB-kommandon. Ett exempel på installationen är nedan. Detta kommer att försöka automatiskt identifiera RTOS i din ansökan. Den nuvarande rtos s inkluderar. Note Innan en RTOS kan detekteras måste den exportera vissa symboler annars kan den inte användas av OpenOCD Nedan finns en lista över de nödvändiga symbolerna för varje stödd RTOS. txthreadcurrentptr, txthreadcreatedptr, txthreadcreatedcount. FreeRTOS symboler linux symbols. rlist, chdebug, chSysInit. Rtos sCurrentTask, Rtos sLi StReady, Rtos sListSleep, Rtos sListSleep, Rtos sListSuspended, Rtos sMaxPriorities, Rtos sCurrentTaskCount. OSRunning, OSTCBCurPtr, OSTaskDbgListPtr, OSTaskQty. For de flesta RTOS-stöds kommer de ovanstående symbolerna att exporteras som standard. För vissa, t. ex. FreeRTOS och uC OS-III måste extra steg Taken. These RTOSes kan kräva ytterligare OpenOCD-specifik fil som ska länkas tillsammans med projektet.

No comments:

Post a Comment