Jednotka 6 / 12

Umelá inteligencia vo vstavaných systémoch a vývoji firmvéru

zisky:

  • Schopnosť urýchliť kostru firmvéru mikrokontroléra, návrh ovládača a stavového stroja pomocou AI
  • Schopnosť kontrolovať prerušenie, načasovanie, stráženie a logiku nízkej spotreby s podporou AI
  • Schopnosť overiť kód firmvéru vygenerovaný AI prostredníctvom statickej analýzy, testovania hardvéru a bezpečnostných požiadaviek

Vstavaný systém je elektronické zariadenie postavené na mikrokontroléri (malý počítač, v ktorom je umiestnený procesor, pamäť a periférne zariadenia na jednom čipe) určené na vykonávanie špecifickej úlohy: termostat, modem, uzol snímača, ovládač motora. Firmvér je softvér, ktorý priamo spúšťa hardvér tohto zariadenia. V tejto jednotke uvidíte, ako používať AI ako akcelerátor pri vývoji firmvéru (zápis ovládačov, stavový automat, logika prerušenia a časovania, správa nízkej spotreby). AI je pri kódovaní skutočne výkonná; Ale vo vstavanom svete je kód prepojený s hardvérom, v reálnom čase a často aj so zabezpečením. Takže každý riadok, ktorý AI vytvorí, musí prejsť statickou analýzou, kontrolou registra/datasheetu a skutočným testovaním hardvéru.

Kde je silný, kde je riskantný vo firmvéri AI

Umelá inteligencia je veľmi silná v časti „kostra“ a „zomiera“ firmvéru: štruktúra ovládača I2C/SPI, rámec stavového automatu (logika, ktorá definuje stavy a prechody zariadenia), implementácia kruhovej vyrovnávacej pamäte, analyzátor inštrukcií, testovacia kostra. Dokáže prečítať tabuľku registrov v komplexnom údajovom liste a vygenerovať inicializačný kód. Dokáže vysvetliť chybu, interpretovať varovanie kompilátora.

Tam, kde je to riskantné, je podstata vstavaného systému:

  • Registrovať adresy a bitové polia: AI si môže nesprávne zapamätať mapu registra čipu; Každá adresa a bit musia byť overené z údajového listu.
  • Načasovanie a reálny čas: Koľko mikrosekúnd operácia trvá, ako často dôjde k prerušeniu, závisí od hardvéru; AI predpovedá, vy meriate.
  • Súbežnosť: Ak premenné zdieľané medzi rutinou služby prerušenia (ISR) a hlavnou slučkou nie sú chránené nestálym a atómovým prístupom, vyskytnú sa tiché, neopakovateľné chyby.
  • Obmedzenia zdrojov: Pretečenie zásobníka, únik pamäte, časový limit strážneho psa znamená zlyhanie vstavaného.

Prerušenie, načasovanie a strážny pes

Prerušenie je, keď nastane udalosť (prišli údaje, vypršala platnosť časovača), procesor opustí hlavnú úlohu a prejde na servisnú rutinu (ISR: Interrupt Service Rutine). ISR sú najcitlivejšie časti kódu vo vstavanom systéme. Základné pravidlá: ISR by malo byť krátke (dlhá práca je ponechaná na hlavnú slučku), nemali by v ňom byť žiadne blokovacie operácie (čakanie, tlač), zdieľané premenné by mali byť chránené.

Watchdog je bezpečnostný mechanizmus, ktorý automaticky reštartuje zariadenie v prípade zlyhania softvéru; Firmvér ho pravidelne „kŕmi“, ak nie, systém sa resetuje. AI ​​navrhuje tieto štruktúry, ale trvanie sledovania, priority prerušení a plánovací rozpočet musia byť overené vzhľadom na skutočné zaťaženie vášho systému.

Tip: Pri tlači ISR ​​pre AI mu výslovne dajte pokyn, aby „udržiaval ISR krátky, bez blokovania, označoval zdieľané premenné s nestálym a atómovým prístupom, delegoval dlhú úlohu do hlavnej slučky s príznakom“. Potom riadok po riadku v kóde, ktorý vytvára, skontrolujte, či sa tieto pravidlá skutočne uplatňujú.

Nízky výkon a bezpečnosť

Správa nízkej spotreby je pri zariadeniach napájaných z batérie kritická: uspávanie procesora, vypínanie periférnych zariadení, prebúdzanie pri udalosti. AI načrtáva prechody režimu spánku a logiku budenia, ale skutočná spotreba prúdu je známa iba meraním (meradlo prúdu na úrovni mikroampérov); Umelá inteligencia hovorí, že „v tomto režime čerpá ~2 µA“ je hádanie.

Z hľadiska bezpečnosti sú vstavané zariadenia čoraz viac sieťované a zraniteľné miesta firmvéru (pretečenie vyrovnávacej pamäte, neoverený vstup, slabá kryptografia, otvorené rozhranie na ladenie) predstavujú vážne riziká. AI vám môže pripomínať princípy bezpečného kódovania, ale bezpečnosť vygenerovaného kódu je overená nástrojmi na statickú analýzu, kontrolou kódu a v prípade potreby testovaním bezpečnosti. V systémoch kritických z hľadiska bezpečnosti (lekárske, automobilové, priemyselné) by výstup umelej inteligencie nikdy nemal nahrádzať procesy vyžadované schválením kompetentného inžiniera a príslušnou bezpečnostnou normou (napr. IEC 61508, ISO 26262).

tri mini prípady

Prípad 1 – nechránená zdieľaná premenná. Inžinier požiada o prijímací kód UART od AI. Kód zvyšuje počítadlo v ISR a hlavná slučka číta toto počítadlo; ale počítadlo nie je volatilné a viacbajtové čítanie nie je atomické. Zariadenie väčšinu času funguje, ale občas nesprávne prečíta počet údajov a chyba sa nemôže opakovať. Statická analýza a kontrola kódu chytí chýbajúce nestále; Chyba zmizne, keď je počítadlo chránené. Poučenie: chyby súbežnosti sú v kóde AI časté a zákerné; Je potrebné prečítať a overiť.

Prípad 2 — Nesprávny bit registra. Stážista odovzdá inicializačný kód ADC vygenerovaný AI; ADC číta neočakávané hodnoty. Pri porovnaní s údajovým listom sa zdá, že AI nastavila konfiguračný bit na nesprávne miesto (mapa pre iný variant čipu). Akonáhle je bit opravený, ADC funguje správne. Lekcia: overte si pravopis každého registra so správnym variantom údajového listu.

Prípad 3 – Správne použitie. Inžinier požiada AI ​​o kostru štátneho stroja pre komplexný protokol snímača; popisuje stavy, prechody a vetvy časového limitu. AI vytvára čistý a čitateľný rámec. Inžinier vezme tento rámec, overí každý prístup k registrom pomocou údajového listu, meria časovanie pomocou osciloskopu a testuje ho v hardvéri. Vývoj je dokončený za niekoľko hodín namiesto niekoľkých dní. Lekcia: AI zrýchľuje kostru; Inžinier vykoná overenie.

Kopírovateľné šablóny výziev

DRIVER SKELETON TEMPLATE"Napíšte kostru ovládača [I2C/SPI/UART] pre [čip/periférne zariadenie]: inicializácia, čítanie, zápis, funkcie spracovania chýb. Registračné adresy a bitové polia ponechajte v PLACEHOLDER (napr. REG_XXX) a poznamenajte si ich „vyplňte a overte ich z údajového hárku pomocou blokovania funkcie komentára“. Namiesto toho použite časový limit pre komentár.

TEMPLATE ISR SECURITY TEMPLATE"Napíšte návrh rutiny služby prerušenia (ISR) pre nasledujúcu udalosť: [udalosť]. Pravidlá: Udržujte ISR krátky, neblokujte, označte zdieľané premenné s vivolatilným a atomickým prístupom, delegujte dlhú úlohu do hlavnej slučky s príznakom. Na konci kódu uveďte, kde sa každé z týchto pravidiel uplatňuje, aby som to mohol overiť."

ŠABLONA STATE MACHINE"Napíšte kostru stavového stroja pre nasledujúci protokol/proces: [popíšte stavy, udalosti, prechody a časové limity]. Pre každý stav zadajte akcie vstupu/výstupu a vetvu chyby/časového limitu. Hodnoty špecifické pre hardvér (register, trvanie) ponechajte ako zástupné symboly a všimnite si, že ich treba overiť."

ŠABLONA PRESKÚMANIA KÓDU "Preskúmajte nasledujúci kód firmvéru z vnorenej perspektívy a označte riziká: nechránená zdieľaná premenná (volatilná/atomická), dlhá/blokujúca operácia v ISR, riziko pretečenia zásobníka, čakanie bez časového limitu, registrácia chýb, sledovanie. Navrhnite, ako by som mal testovať/overiť každý nález. Kód: [prilepiť]."

Slabá výzva / Silná výzva

SLABÁ VÝZVA: "Napíšte mi ovládač UART."

SILNÁ VÝZVA: "Napíšte rámec prijímacieho ovládača UART na základe prerušenia pre [mikrokontrolér]. Použite kruhovú vyrovnávaciu pamäť; udržujte ISR krátky a iba zapisovajte do vyrovnávacej pamäte, spracovanie v hlavnej slučke. Urobte zdieľané indexy nestále a atomické. Adresy registrov ponechajte v zástupných symboloch, označte ich na overenie z údajového listu. Na konci kódu uveďte, čo potrebujem otestovať z hľadiska súbehu."

Slabá výzva vytvára kód, ktorý je slepý pre hardvér a súbežnosť; Výkonná výzva stanovuje vložené pravidlá a vyzve na overenie zoznamu.

Vrstvy overovania firmvéru

vrstva

čo chytá

Úloha AI

Kontrola údajového listu

Nesprávny register/bit

Generuje zástupný symbol a kontrolnú poznámku

Statická analýza (linter)

volatilné, typové, hraničné chyby

Zoznam pravidiel a vysvetlenie

Varovania kompilátora

Implicitná konverzia, nevyužitá hodnota

Varovný komentár

Testovanie v hardvéri

Načasovanie, skutočné správanie

Návrh testovacieho scenára

Osciloskop/analyzátor

Presnosť signálu a protokolu

Bod merania a očakávaná vlna

Upozornenie: To, že sa firmvér „kompiluje“ a „väčšinu času funguje“, neznamená, že je správny. K chybám súbežnosti a časovania dochádza len za určitých podmienok; Preto je statická analýza a reálne testovanie v hardvéri nevyhnutné.

Časté chyby

  • Nechráni zdieľané premenné. Dáta medzi ISR ​​a hlavnou slučkou musia byť volatilné a atómové.
  • Neoveruje sa adresa/bit registra pomocou údajového listu. AI môže mapovať nesprávny variant.
  • Udržiavanie ISR dlhé alebo blokovanie v ňom. Systém nemôže reagovať, chýbajú prerušenia.
  • Za predpokladu načasovania bez merania. Skutočný čas závisí od hardvéru; overené osciloskopom.
  • Ponechanie bezpečnostného/bezpečnostne kritického kódu na schválenie AI. Nevyhnutný je kompetentný inžinier a príslušný štandardný proces.

V súhrne

V tejto jednotke ste použili AI ako výkonný akcelerátor pri generovaní kostry firmvéru, ovládača, stavového stroja a náčrtu ISR. Ale v embedded svete je kód prepojený s hardvérom, reálnym časom a bezpečnosťou: hodnoty registra/bitov sú overené z údajového listu, súbežnosť je overená statickou analýzou, časovanie je overované z osciloskopu, správanie je overované skutočným testovaním v hardvéri. AI doručí kostru za pár minút; Technik overí, či firmvér funguje správne, bezpečne a včas. V systémoch kritických z hľadiska bezpečnosti nenahrádza výstup AI procesy príslušnej bezpečnostnej normy a schválenie kompetentným technikom.

Aplikačná úloha

Vyberte periférne zariadenie (napr. snímač I2C). So šablónou „kostra vodiča“ požiadajte AI o kostru vodiča, ktorá zanechá registre v zástupných symboloch. Potom vygenerujte náčrt ISR pre prerušenie pripravené na dáta z tohto snímača pomocou šablóny "ISR security". Nakoniec naskenujte kód, ktorý vytvorí, pomocou šablóny „Revízia kódu“ pre vložené riziká a napíšte aspoň tri kroky overenia/testovania.

kontrolný zoznam

  • [ ] Každú adresu registra a bit som overil zo správneho variantu datasheetu.
  • [ ] Zdieľané premenné medzi ISR ​​a hlavnou slučkou som urobil volatilnými a atómovými.
  • [ ] ISR som držal nakrátko, nedal som blokovanie, dlhú úlohu som odovzdal hlavnej slučke.
  • [ ] Plánoval som otestovať časovanie a skutočné správanie v hardvéri a s osciloskopom.
  • [ ] Naskenoval som kód so statickou analýzou a upozorneniami kompilátora.
  • [ ] Bezpečnosť/kritické časti som nechal na schválenie kompetentným technikom a príslušným štandardným procesom.