Njësia 6 / 12

Inteligjenca artificiale në sistemet e integruara dhe zhvillimin e firmuerit

Fitimet:

  • Aftësia për të përshpejtuar skeletin e firmuerit të mikrokontrolluesit, draftet e drejtuesit dhe të makinës shtetërore me AI
  • Aftësia për të rishikuar ndërprerjen, kohën, logjikën mbikëqyrëse dhe fuqinë e ulët me mbështetjen e AI
  • Aftësia për të verifikuar kodin e firmuerit të gjeneruar nga AI përmes analizës statike, testimit në harduer dhe kërkesave të sigurisë

Një sistem i integruar është një pajisje elektronike e ndërtuar rreth një mikrokontrollues (një kompjuter i vogël që strehon procesorin, memorien dhe pajisjet periferike në një çip të vetëm) i projektuar për të kryer një punë specifike: një termostat, një modem, një nyje sensori, një drejtues motori. Firmware është softueri që drejton drejtpërdrejt harduerin e kësaj pajisjeje. Në këtë njësi do të shihni se si të përdorni AI si një përshpejtues në zhvillimin e firmuerit (shkrimi i shoferit, makineria e gjendjes, logjika e ndërprerjeve dhe e kohës, menaxhimi i energjisë së ulët). AI është vërtet i fuqishëm në kodim; Por në botën e ngulitur, kodi është i ndërthurur me harduer, në kohë reale dhe shpesh me siguri. Pra, çdo linjë që prodhon AI duhet të kalojë përmes analizave statike, kontrollit të regjistrit/të dhënave dhe testimit aktual në harduer.

Ku është e fortë, ku është e rrezikshme në firmware-in e AI

Inteligjenca artificiale është shumë e fortë në pjesën "skelet" dhe "die" të firmuerit: struktura e një drejtuesi I2C/SPI, kuadri i një makinerie të gjendjes (logjika që përcakton gjendjet dhe tranzicionet e pajisjes), një zbatim buffer unazor, një analizues instruksionesh, një skelet provë. Mund të lexojë tabelën e regjistrave në një fletë të dhënash komplekse dhe të gjenerojë kodin e inicializimit. Mund të shpjegojë një gabim, të interpretojë një paralajmërim përpilues.

Aty ku është e rrezikshme është thelbi i sistemit të ngulitur:

  • Regjistroni adresat dhe fushat e biteve: AI mund ta mbajë mend gabimisht hartën e regjistrit të një çipi; Çdo adresë dhe bit duhet të verifikohet nga fleta e të dhënave.
  • Koha dhe koha reale: Sa mikrosekonda zgjat një operacion, sa shpesh vjen një ndërprerje, varet nga hardueri; AI parashikon, ju matni.
  • Konkurrenca: Nëse variablat e ndarë ndërmjet rutinës së shërbimit të ndërprerjes (ISR) dhe qarkut kryesor nuk mbrohen nga aksesi i paqëndrueshëm dhe atomik, ndodhin gabime të heshtura dhe të papërsëritshme.
  • Kufijtë e burimeve: tejmbushja e pirgut, rrjedhja e kujtesës, koha e skadimit të rojes do të thotë përplasje në të integruar.

Ndërprerja, koha dhe vëzhgimi

Një ndërprerje është kur ndodh një ngjarje (të dhënat mbërritën, kohëmatësi ka skaduar), procesori braktis punën kryesore dhe kalon në një rutinë shërbimi (ISR: Ndërprerja e shërbimit rutinë). ISR-të janë pjesët më të ndjeshme të kodit në sistemin e integruar. Rregullat bazë: ISR duhet të jetë e shkurtër (puna e gjatë i lihet ciklit kryesor), nuk duhet të ketë operacione bllokimi (pritni, printoni) në të, ndryshoret e përbashkëta duhet të mbrohen.

Watchdog është një mekanizëm sigurie që rinis automatikisht pajisjen nëse softueri prishet; Firmware "e ushqen" rregullisht, nëse jo, sistemi rivendoset. AI i harton këto struktura, por kohëzgjatja e mbikëqyrësit, prioritetet e ndërprerjes dhe buxheti i planifikimit duhet të vërtetohen kundrejt ngarkesës aktuale në sistemin tuaj.

Këshillë: Kur printoni një ISR në AI, udhëzojeni në mënyrë eksplicite që "ta mbajë ISR-në të shkurtër, pa bllokim, të shënojë variablat e përbashkëta me akses të paqëndrueshëm dhe atomik, delegoni punën e gjatë në ciklin kryesor me një flamur". Pastaj kontrolloni rresht pas rreshti në kodin që prodhon nëse këto rregulla janë zbatuar në të vërtetë.

Fuqia dhe siguria e ulët

Menaxhimi i ulët i energjisë është kritik në pajisjet me bateri: vënia në gjumë e procesorit, fikja e pajisjeve periferike, zgjimi me një ngjarje. AI skicon tranzicionet e modalitetit të gjumit dhe logjikën e zgjimit, por konsumi aktual aktual njihet vetëm me matje (matësi i rrymës në nivelin e mikroamperit); AI duke thënë "ajo tërheq ~2 µA në këtë modalitet" është një supozim.

Nga pikëpamja e sigurisë, pajisjet e integruara po lidhen gjithnjë e më shumë në rrjet dhe dobësitë e firmuerit (mbushja e buferit, hyrjet e paautentikuara, kriptografia e dobët, ndërfaqja e hapur e korrigjimit) janë rreziqe serioze. AI mund t'ju kujtojë parimet e kodimit të sigurt, por siguria e kodit të gjeneruar verifikohet nga mjetet e analizës statike, rishikimi i kodit dhe testimi i sigurisë kur është e nevojshme. Në sistemet kritike për sigurinë (mjekësore, automobilistike, industriale) prodhimi i AI nuk duhet të zëvendësojë kurrë proceset e kërkuara nga miratimi i inxhinierit kompetent dhe standardi përkatës i sigurisë (p.sh. IEC 61508, ISO 26262).

tre mini kuti

Rasti 1 - Ndryshore e përbashkët e pambrojtur. Një inxhinier kërkon një kod të marrë UART nga AI. Kodi rrit një numërues në ISR dhe cikli kryesor lexon këtë numërues; por numëruesi nuk është i paqëndrueshëm dhe leximi me shumë bajt nuk është atomike. Pajisja punon shumicën e kohës, por herë pas here lexon gabimisht numrin e të dhënave dhe gabimi nuk mund të përsëritet. Analiza statike dhe rishikimi i kodit kapin mungesë të paqëndrueshme; Gabimi zhduket kur numëruesi është i mbrojtur. Mësimi: gabimet e konkurencës janë të shpeshta dhe tinëzare në kodin e AI; Është e nevojshme të lexoni dhe verifikoni.

Rasti 2 - Bit i gabuar i regjistrimit. Një praktikant ngarkon kodin e inicializimit ADC të krijuar nga AI; ADC lexon vlera të papritura. Duke e krahasuar atë me fletën e të dhënave, duket se AI ka vendosur një bit konfigurimi në vendndodhjen e gabuar (hartë për një variant tjetër të çipit). Pasi të korrigjohet biti, ADC funksionon si duhet. Mësimi: verifikoni drejtshkrimin e çdo regjistri kundrejt variantit të saktë të fletës së të dhënave.

Rasti 3 - Përdorimi i duhur. Një inxhinier kërkon nga AI një skelet makine shtetërore për një protokoll kompleks sensor; përshkruan gjendjet, tranzicionet dhe degët e afatit. AI prodhon një kornizë të pastër dhe të lexueshme. Inxhinieri merr këtë kornizë, verifikon çdo akses në regjistër me fletën e të dhënave, mat kohën me një oshiloskop dhe e teston atë në harduer. Zhvillimi përfundon në disa orë në vend të disa ditëve. Mësimi: AI përshpejton skeletin; Inxhinieri bën verifikimin.

Modele të shpejtë të kopjueshëm

DRIVER SKELETON TEMPLATE"Shkruani skeletin e një drejtuesi [I2C/SPI/UART] për [çip/periferik]: funksionet e inicializimit, leximit, shkrimit, trajtimit të gabimeve. Lini adresat e regjistrit dhe fushat e biteve në PLACEHOLDER (p.sh. REG_XXX) dhe vini re 'popullojeni të dhënat dhe verifikoni ato' duke i bllokuar ato. çdo funksion supozohet me një linjë komenti."

TABLETI I SIGURISË ISR"Shkruani një draft rutinë shërbimi të ndërprerjes (ISR) për ngjarjen e mëposhtme: [ngjarja]. Rregullat: Mbajeni ISR-në të shkurtër, mos bllokoni, shënoni variablat e përbashkëta me akses të paqëndrueshëm dhe atomik, delegojeni punën e gjatë në qarkun kryesor me një flamur. Në fund të kodit, këto rregulla mund t'i përcaktoj se ku mund të specifikoj secilin prej tyre."

SHTOJCA E MAKINËS SË SHTETIT"Shkruani një skelet makine shtetërore për protokollin/procesin e mëposhtëm: [përshkruani gjendjet, ngjarjet, tranzicionet dhe afatet kohore]. Specifikoni veprimet e hyrjes/daljes dhe degën e gabimit/kohës së skadimit për çdo shtet. Lini vlerat specifike të harduerit (regjistri, kohëzgjatja) si mbajtëse të vendeve dhe vini re se ato duhet të verifikohen."

TABLETI I SHQYRTIMIT TË KODIT "Shqyrtoni kodin e mëposhtëm të firmuerit nga një perspektivë e integruar dhe shënoni rreziqet: ndryshore e përbashkët e pambrojtur (e paqëndrueshme/atomike), funksionim i gjatë/bllokues në ISR, rreziku i tejmbushjes së stivës, pritje pa afat, gabime të regjistrimit, furnizimi i kujdestarit. Sugjeroni se si duhet të testoj/verifikoj kodin për secilën.

Prompt i dobët / Prompt i fortë

NJOFTIM I DOBËT: "Më shkruaj një shofer UART".

NJOFTIM I FORTË: "Shkruani një kornizë drejtuese të pranimit UART të bazuar në ndërprerje për [mikrokontrolluesin]. Përdorni një buffer unazë; mbajeni ISR të shkurtër dhe thjesht shkruani në buffer, duke përpunuar në qarkun kryesor. Bëjini indekset e përbashkëta të paqëndrueshme dhe atomike. Lini adresat e regjistrave në mbajtëset e vendeve, shënojini ato për t'u verifikuar nga fleta e të dhënave e nevojshme për të testuar. koha."

Prompt i dobët prodhon kod që është i verbër harduer dhe konkurencë; Prompti i fuqishëm imponon rregulla të ngulitura dhe kërkon listën e verifikimit.

Shtresat e verifikimit të firmuerit

shtresë

çfarë kap

Roli i AI

Kontrolli i fletës së të dhënave

Regjistri/bit i gabuar

Gjeneron mbajtësin e vendit dhe shënimin e kontrollit

Analiza statike (linter)

gabime të paqëndrueshme, tipike, kufitare

Lista e rregullave dhe shpjegimi

Paralajmërimet e përpiluesit

Konvertim i nënkuptuar, vlerë e papërdorur

Koment paralajmërues

Testimi në harduer

Koha, sjellja aktuale

Sugjerimi i skenarit të testimit

Oshiloskop/analizator

Saktësia e sinjalit dhe protokollit

Pika e matjes dhe vala e pritur

Kujdes: Vetëm për shkak se një firmware "përpilohet" dhe "funksionon shumicën e kohës" nuk do të thotë se është i saktë. Gabimet e njëkohshme dhe kohore ndodhin vetëm në kushte të caktuara; Kjo është arsyeja pse analiza statike dhe testimi real në harduer janë të domosdoshëm.

Gabimet e zakonshme

  • Nuk mbron variablat e përbashkët. Të dhënat ndërmjet ISR dhe lakut kryesor duhet të jenë të paqëndrueshme dhe atomike.
  • Nuk verifikohet adresa/biti i regjistrit me fletën e të dhënave. AI mund të hartojë variantin e gabuar.
  • Mbajtja e ISR-së gjatë ose bllokimi brenda tij. Sistemi nuk mund të përgjigjet, ndërprerjet mungojnë.
  • Supozimi i kohës pa matje. Koha aktuale varet nga hardueri; verifikuar me oshiloskop.
  • Duke lënë kodin kritik të sigurisë/sigurisë për miratimin e AI. Një inxhinier kompetent dhe procesi përkatës standard janë thelbësorë.

Në përmbledhje

Në këtë njësi keni përdorur AI si një përshpejtues i fuqishëm në gjenerimin e skeletit të firmuerit, drejtuesit, makinës së gjendjes dhe skicës ISR. Por në botën e ngulitur, kodi është i ndërthurur me harduerin, kohën reale dhe sigurinë: vlerat e regjistrit/bit verifikohen nga fleta e të dhënave, konkurenca verifikohet nga analiza statike, koha verifikohet nga oshiloskopi, sjellja verifikohet nga testimi real në harduer. AI jep skeletin në minuta; Inxhinieri verifikon që firmware-i funksionon në mënyrë korrekte, të sigurt dhe në kohë. Në sistemet kritike për sigurinë, prodhimi i AI nuk zëvendëson proceset e standardit përkatës të sigurisë dhe miratimin e inxhinierit kompetent.

Detyra e aplikimit

Zgjidhni një pajisje periferike (p.sh. një sensor I2C). Me shabllonin "skeleti i shoferit", kërkoni nga AI një skelet drejtuesi që lë regjistra në mbajtësit e vendeve. Më pas gjeneroni një skicë ISR për ndërprerjen e gatshme për të dhëna nga ky sensor me shabllonin "ISR Security". Së fundi, skanoni kodin që prodhon me shabllonin "Rishikimi i kodit" për rreziqet e ngulitura dhe shkruani të paktën tre hapa verifikimi/testimi.

listë kontrolli

  • [ ] Kam verifikuar çdo adresë regjistri dhe bit nga varianti i saktë i fletës së të dhënave.
  • [ ] I bëra variablat e përbashkëta midis ISR dhe lakut kryesor të paqëndrueshëm dhe atomikë.
  • [ ] E mbajta ISR-në të shkurtër, nuk vendosa bllokim, ia dorëzova punën e gjatë në lakun kryesor.
  • [ ] Kam planifikuar të testoj kohën dhe sjelljen aktuale në harduer dhe me një oshiloskop.
  • [ ] Kam skanuar kodin me analiza statike dhe paralajmërime të përpiluesit.
  • [ ] I lashë pjesët kritike të sigurisë/sigurisë në miratimin e një inxhinieri kompetent dhe procesit përkatës standard.