Om du gräver microcontrollers, liksom du gräva i exakt hur de fungerar, vill Elecia Vit att hjälpa dig att navigera sina innersta tricks med hjälpa av minneskartan filer. I denna uppfriskande rolig, men extremt djupa keynote tal från 2021 Hackaday Remoticon, Elecia guidar oss med en av de mest skrämmande artefakter av kompilering – en data som listor där allt läggs i mikro minne – liksom förklarar landmärken som hjälper att göra det mer farbara.
Och när du kravet att undersöka kartfilen, du troligtvis verkligen kravet på att titta in i kartfilen. När inbäddade widget mystiskt slutar att fungera, minnesproblem är några av de vanliga misstänkta. kanske du har slut på RAM eller flash lagringsutrymme, kanske du har några konstiga svårt fel så bra som du vill förstå vilken del av programmet utlöser problem, eller kanske du kravet att göra lite fart profilering att göra allt springa snabbare. I alla dessa fall får du en absolut minnesadress. Vad bor där? slå upp det i minnet karta!
Kartläggning en kurs
Elecia börjar med kartdata från en ”Hello World” -programmet, men det är en Hello world körs på en RTOS, så redan finns tillräckligt med kött för att gräva i. Hon börjar med den högsta nivån översikt: flash för koden samt RAM för programmet att använda. Blixt, koden bor i .text samt .const samt RAM har sektioner som bör vara bekant för dig gillar .heap liksom .stack, men likaså .data samt .bss. Minneskartdata överensstämmer likaså med denna struktur: första överblick, sedan avsnittet markörer, liksom då uppgifter om vad som finns inuti varje avsnitt.
Om du får en krasch, till exempel, liksom du förstår var det numeriska värdet av programräknaren när det gick allt päronformad, de .text sektions listor funktionsnamnet där det hände. Avsnittet med världsomspännande variabeldefinitioner, i alfabetisk ordning? Du kan troligen bara rulla på med det – det finns en hel del redundans i kartfilen, ibland sorterade efter minnesadress, ibland sorterade i bokstavsordning. Du vill inte checkas ut en karta fil, du vill bara dopp i, får vad du behöver, samt komma ut. fick en variabel som du tror blir skrivs över? upptäcka det i avsnittet listas efter adress, samt titta på sina grannar – en av dem kan vara överskridande.
Men den verkliga stjärnan i showen är den vackra kartan Elecia gjort i stil med en rollspel. över floden av initiering från de statiska Shores, kommer du att upptäcka RAMlandia de höga plan stackarna, låg boggy Heap Hallows, liksom hamnen i (minne mappade) Perifera register. Det finns verkligen drakar i havet av oanvända adressutrymme. Genom att ändra tillbaka liksom tillbaka mellan denna roliga, men användbar, karta samt själva textminnet kartfilen, slipsar Elecia en oförglömlig utsikt över minne med den täta text av kartdata som den lever i mappen jobb.
Och ingen talar om minne i microcontrollers är totalt utan att notera farorna med vad som händer när RAM högen, som växer nedåt, kysser RAM stack, som växer uppåt. Vad händer då? Ytterligare en funktion telefonsamtal samt funktionerna börjar skriva över dina data. “Det här är okej. som en hund som sitter på ett café i brand.” Frågan är, är detta den del av minnet administration som är dynamiska, funktioner telefonsamtal andra funktioner samt minne tilldelas liksom rensas. individuella ingångs modifieringar vilka delar av programkörning, samt därför där data lagras. här är en plats där minnes kartan inte kommer att hjälpa dig, förutom att ta reda på vad som är nära håll där olyckan inträffade. Men den verkliga svaret på ”Hur mycket RAM har jag nu?” verkligen är outsägligt ”Jag vet inte.”
Om du är ny på embedded design, kanske den allra första tjugo minuter av prat är för dig, liksom även om du är en härdad veteran, kommer du att upptäcka något från de senare avsnitten. Jag njöt verkligen Elecia tal, liksom så kommer du. Du kan titta på det inbäddade strax under. Ta med en kopia av de glider längs också.