Hvis man graver mikrocontrollere, samt du kan lide at grave i præcis, hvordan de arbejder, Elecia Hvid ønsker at hjælpe dig med at navigere deres inderste tricks med hjælp fra hukommelsen kort filer. I denne forfriskende sjovt, men ekstremt dybe keynote tale fra 2021 hackaday Remoticon, Elecia guider os med en af de mest skræmmende artefakter af kompilering – en data, som lister, hvor alt, hvad der bliver sat i microcontroller hukommelse – samt forklarer vartegn, der bistår at gøre det mere sejlbar.
Og når du kravet om at se på kortet fil, du højst sandsynligt virkelig krav til kig ind i kortet filen. Når din integrerede widget mystisk ophører med at arbejde, hukommelsesproblemer er et par af de sædvanlige mistænkte. måske du løb tør for RAM eller flash lagerplads, måske har du nogle mærkelige svært fejl så godt som du ønsker at forstå, hvad en del af programmet udløser den ulejlighed, eller måske du kravet om at gøre nogle hastighed profilering at gøre alt køre hurtigere. I alle disse tilfælde, får du en absolut hukommelse adresse. Hvad bor der? slå det op i hukommelsen kortet!
Kortlægning et kursus
Elecia starter ud med kortdata fra et program ”hej verden”, men det er en hej verden, der kører på en RTOS, så allerede der er tilstrækkelig kød at grave ind. Hun starter ud med overblik på øverste niveau: flash for koden samt RAM til programmet til brug. I flash, koden bor i .text samt .const, samt RAM har sektioner, der bør være velkendt for du kan lide .heap samt .stack, men ligeledes Data, samt .bss. De hukommelse kortdata ligeledes overholder denne struktur: allerførste et overblik, så afsnittet markører, samt derefter detaljerne i, hvad der er inde i hver sektion.
Hvis du får et nedbrud, for eksempel, så godt som du forstår, hvor den numeriske værdi af programmet tæller, når det gik alt pæreformet, de .text sektion lister funktionens navn, hvor det skete. Afsnittet med verdensomspændende variable definitioner, i alfabetisk rækkefølge? Du kan højst sandsynligt bare rulle den af det – der er en hel del af redundans i kortet filen sommetider sorteres efter hukommelse adresse, sommetider sorteres alfabetisk. Du ønsker ikke at tjekket ud et kort fil, du blot ønsker at dyppe i, får, hvad du har brug for, samt komme ud. fik en variabel, som du mener bliver overskrevet? opdage det i afsnittet opført efter adresse, samt se på sine naboer – en af dem, kan blive overtræk.
Men den ægte stjerne af showet er den smukke kortet Elecia lavet i samme stil som en rollespil. på tværs af floden af Initialisering fra de statiske Shores, vil du opdage RAMlandia, de høje planer af stakkene, den lave skræmmende Heap Hallows samt havnen i (hukommelse kortlagt) Perifere registre. Der er virkelig drager i havet af ubrugt adresseområde. Ved at ændre tilbage samt tilbage mellem denne sjove, uanset hvor nyttige, kort såvel som den faktiske tekst hukommelse kort fil, Elecia binder en uforglemmelig udsigt over hukommelse med den tætte tekst af kortdata, som det lever i dit job mappe.
Og ingen snak om hukommelse i microcontrollere er total uden at bemærke farerne ved, hvad der sker, når RAM s bunke, der vokser nedad, kysser RAM stak, som vokser opad. Hvad så sker? Endnu en funktion telefonopkald samt funktionerne begynder at overskrive dine data. ”Det er fint. som en hund sidder på en café i brand.” Spørgsmålet er, det er den del af hukommelsen administration, der er dynamiske, funktioner telefonopkald andre funktioner samt hukommelse er allokeret samt ryddet. individuelle input modifikationer hvilke dele af programafviklingen, såvel som derfor hvor data er lagret. lige her er det ene sted, hvor hukommelsen kortet ikke vil hjælpe dig, bortset fra at finde ud af, hvad der er tæt ved, hvor ulykken skete. men den sande svar på ”Hvor meget RAM skal jeg nu?” virkelig er ineffably ”Jeg dunno.”
Hvis du er ny til integreret design, måske selve første tyve minutter af talen er for dig, såvel som, selvom du er en hærdet veteran, vil du opdage noget fra de senere afsnit. Jeg nød grundigt Elecia foredrag, samt så vil du. Du kan se det indlejret lige under. Medbring en kopi af dias sammen også.