Kasu:
- Võimalus AI abil kiirendada mikrokontrolleri püsivara skeleti, draiveri ja olekusmasina mustandeid
- Võimalus vaadata üle katkestuse, ajastuse, valve- ja vähese energiatarbega loogika AI toega
- Võimalus kontrollida tehisintellekti loodud püsivara koodi staatilise analüüsi, riistvara testimise ja turvanõuete abil
Sisseehitatud süsteem on elektrooniline seade, mis on ehitatud ümber mikrokontrolleri (väike arvuti, milles on protsessor, mälu ja välisseadmed ühel kiibil), mis on mõeldud konkreetse töö tegemiseks: termostaat, modem, anduri sõlm, mootoridraiver. Püsivara on tarkvara, mis käitab otse selle seadme riistvara. Selles üksuses näete, kuidas kasutada tehisintellekti püsivara arenduses kiirendajana (draiveri kirjutamine, olekumasin, katkestus- ja ajastusloogika, vähese energiatarbega haldus). AI on kodeerimisel tõesti võimas; Kuid manustatud maailmas on kood läbi põimunud riistvara, reaalajas ja sageli ka turvalisusega. Seega peab iga tehisintellekti toodetav rida läbima staatilise analüüsi, registri/andmelehtede kontrolli ja tegeliku riistvara testimise.
Kus on AI püsivaras tugev, kus riskantne
AI on väga tugev püsivara "skeleti" ja "surumise" osas: I2C/SPI draiveri struktuur, olekumasina raamistik (loogika, mis määrab seadme olekud ja üleminekud), ringpuhvri teostus, käsuparser, testskelett. See suudab lugeda keeruka andmelehe registritabelit ja genereerida initsialiseerimiskoodi. Oskab selgitada viga, tõlgendada kompilaatori hoiatust.
Kui see on riskantne, on manustatud süsteemi olemus:
- Registreeri aadressid ja bitiväljad: AI võib kiibi registrikaarti valesti meelde jätta; Iga aadress ja bitt tuleb andmelehel kontrollida.
- Ajastus ja reaalajas: mitu mikrosekundit operatsioonile kulub, kui sageli katkestus saabub, sõltub riistvarast; AI ennustab, sina mõõdad.
- Samaaegsus: kui katkestusteenuse rutiini (ISR) ja põhiahela vahel jagatud muutujad ei ole volatiilse ja tuumajuurdepääsuga kaitstud, tekivad vaiksed, mittekorduvad vead.
- Ressursipiirangud: virna ületäitumine, mäluleke, valvekoera ajalõpp tähendab manustatud seadme krahhi.
Katkestus, ajastus ja valvekoer
Katkestus on siis, kui toimub sündmus (andmed saabusid, taimer on aegunud), protsessor loobub põhitööst ja hüppab teenindusrutiini (ISR: Interrupt Service Routine). ISR-id on manustatud süsteemi kõige tundlikumad koodilõigud. Põhireeglid: ISR peaks olema lühike (pikk töö jäetakse põhitsüklile), selles ei tohiks olla blokeerimisoperatsioone (oota, printida), jagatud muutujad peavad olema kaitstud.
Watchdog on turvamehhanism, mis taaskäivitab seadme automaatselt, kui tarkvara jookseb kokku; Püsivara "toidab" seda regulaarselt, kui mitte, siis süsteem lähtestatakse. AI koostab need struktuurid, kuid valve kestus, katkestuste prioriteedid ja ajakava eelarve tuleb kontrollida teie süsteemi tegeliku koormuse suhtes.
Näpunäide. ISR-i printimisel tehisintellektile andke sellele selgesõnaliselt käsk "hoida ISR lühike, blokeerimata, märkima jagatud muutujad volatiilse ja atomaarse juurdepääsuga, delegeerima pikk töö lipuga põhitsüklile". Seejärel kontrollige loodud koodi ridade kaupa, et neid reegleid tegelikult rakendatakse.
Väike võimsus ja turvalisus
Akutoitel seadmetes on kriitilise tähtsusega madal energiahaldus: protsessori unerežiim, välisseadmete väljalülitamine, sündmusega ärkamine. AI visandab puhkerežiimi üleminekud ja äratusloogika, kuid tegelik voolutarbimine on teada ainult mõõtmise teel (voolumõõtja mikroampri tasemel); AI ütlus "selles režiimis võtab ~2 µA" on oletus.
Turvalisuse seisukohast on manustatud seadmed üha enam võrku ühendatud ja püsivara haavatavused (puhvri ületäitumine, autentimata sisend, nõrk krüptograafia, avatud silumisliides) on tõsised ohud. AI võib teile meelde tuletada turvalise kodeerimise põhimõtteid, kuid genereeritud koodi turvalisust kontrollitakse staatilise analüüsi tööriistade, koodi ülevaatuse ja vajadusel turvatesti abil. Ohutuse seisukohalt kriitilistes süsteemides (meditsiin, autotööstus, tööstus) ei tohiks tehisintellekti väljund kunagi asendada pädeva inseneri heakskiiduga ja asjakohase ohutusstandardiga (nt IEC 61508, ISO 26262) nõutavaid protsesse.
kolm minikarpi
Juhtum 1 – kaitsmata jagatud muutuja. Insener nõuab AI-lt UART-vastuvõtukoodi. Kood suurendab ISR-is loendurit ja põhisilmus loeb selle loenduri; kuid loendur ei ole muutlik ja mitmebaidine lugemine pole aatom. Seade töötab enamuse ajast, kuid aeg-ajalt loeb see andmete loendust valesti ja viga ei saa korduda. Staatiline analüüs ja koodi ülevaatus on puuduva lenduva; Viga kaob, kui loendur on kaitstud. Õppetund: samaaegsusvead on AI-koodis sagedased ja salakavalad; On vaja lugeda ja kontrollida.
Juhtum 2 – vale registribitt. Praktikant laadib üles AI poolt genereeritud ADC lähtekoodi; ADC loeb ootamatuid väärtusi. Võrreldes seda andmelehega, selgub, et AI on seadnud konfiguratsioonibiti valesse kohta (kaart kiibi erineva variandi jaoks). Kui bitt on parandatud, töötab ADC õigesti. Õppetund: kontrollige iga registri õigekirja andmelehe õige variandi suhtes.
Juhtum 3 – õige kasutamine. Insener küsib AI-lt olekumasina skeletti keeruka anduriprotokolli jaoks; kirjeldab olekuid, üleminekuid ja ajalõpu harusid. AI loob puhta ja loetava raamistiku. Insener võtab selle raamistiku, kontrollib iga registri juurdepääsu andmelehe abil, mõõdab ajastusi ostsilloskoobiga ja testib seda riistvaras. Arendus valmib mõne päeva asemel mõne tunniga. Õppetund: AI kiirendab skeleti; Insener teeb kontrolli.
Kopeeritavad viipade mallid
DRIVER SKELETON TEMPLATE"Kirjutage [I2C/SPI/UART] draiveri skelett [kiibi/välisseadme] jaoks: initsialiseerimine, lugemine, kirjutamine, veakäsitlusfunktsioonid. Jätke registriaadressid ja bitiväljad jaotisesse PLACEHOLDER (nt REG_XXX) ja märkige, et iga täitke ja kontrollige, milliseid funktsioone kasutatakse andmete blokeerimise asemel. kommentaarireaga."
ISR SECURITY TEMPLATE"Kirjutage katkestuse teenuse rutiini (ISR) mustand järgmise sündmuse jaoks: [sündmus]. Reeglid: hoidke ISR lühike, ärge blokeerige, märkige jagatud muutujad, millel on volatiilne ja atomaarne juurdepääs, delegeerige pikk töö lipuga põhiahelale. Koodi lõpus täpsustage, kus kõik need reeglid kehtivad, et saaksin kontrollida."
STATE MACHINE TEMPLATE"Kirjutage olekumasina skelett järgmise protokolli/protsessi jaoks: [kirjeldage olekuid, sündmusi, üleminekuid ja ajalõppe]. Määrake iga oleku jaoks sisenemis-/väljumistoimingud ja tõrke-/ajalõpu haru. Jätke riistvaraspetsiifilised väärtused (register, kestus) kohahoidjateks ja pange tähele, et need tuleb kinnitada."
KOODI LÄBIVAATAMISE MALL "Uurige järgmist püsivara koodi manustatud vaatenurgast ja märgistage riskid: kaitsmata jagatud muutuja (lenduv/aatomilisus), pikk/blokeeriv töö ISR-is, virna ületäitumise oht, ooteaeg ilma ajalõputa, vigade registreerimine, valvekoera voog. Soovitage, kuidas peaksin iga leiu puhul testima/kontrollima. Kood: [kleebi]."
Nõrk viip / Tugev viip
NÕRK VIIPA: "Kirjutage mulle UART-draiver."
TUGEV VIIP: "Kirjutage [mikrokontrolleri] katkestusepõhine UART-vastuvõtu draiveri raamistik. Kasutage rõngaspuhvrit; hoidke ISR lühike ja kirjutage lihtsalt puhvrisse, töötledes põhiahelas. Muutke jagatud indeksid volatiilseks ja atomaarseks. Jätke registri aadressid kohahoidjatesse, märkige need andmelehelt kontrollimiseks. Vajan koodi lõpus samaaegset testimist, loetlege, milliseid termineid ja tähtaegu."
Nõrk viip loob koodi, mis on riistvara- ja samaaegsuspime; Võimas viip kehtestab manustatud reeglid ja viibad kinnitusloendi jaoks.
Püsivara kinnituskihid
kiht
mis püüab
AI roll
Andmelehe kontroll
Vale register/bitt
Loob kohatäide ja juhtmärkme
Staatiline analüüs (linter)
muutlikud, tüübi-, piirivead
Reeglite loetelu ja selgitus
Kompilaatori hoiatused
Kaudne konversioon, kasutamata väärtus
Hoiatav kommentaar
Testimine riistvaras
Ajastus, tegelik käitumine
Testi stsenaariumi soovitus
Ostsilloskoop/analüsaator
Signaali ja protokolli täpsus
Mõõtepunkt ja eeldatav laine
Ettevaatust. See, et püsivara "kompileerib" ja "töötab suurema osa ajast", ei tähenda, et see oleks õige. Samaaegsuse ja ajastuse vead ilmnevad ainult teatud tingimustel; Seetõttu on staatiline analüüs ja tõeline riistvara testimine hädavajalikud.
Levinud vead
- Ei kaitse jagatud muutujaid. Andmed ISR-i ja põhiahela vahelised peavad olema kõikuvad ja atomaarsed.
- Registri aadressi/bitti ei kontrollita andmelehega. AI võib kaardistada vale variandi.
- ISR-i pikana hoidmine või selle sees blokeerimine. Süsteem ei saa vastata, katkestused jäävad vahele.
- Ajastuse eeldamine ilma mõõtmiseta. Tegelik aeg sõltub riistvarast; ostsilloskoobiga kontrollitud.
- Turvalisuse/ohutuskriitilise koodi jätmine tehisintellekti kinnitamiseks. Pädev insener ja asjakohane standardprotsess on hädavajalikud.
Kokkuvõttes
Selles seadmes kasutasite AI-d võimsa kiirendina püsivara skeleti, draiveri, olekumasina ja ISR-sketši loomiseks. Kuid manustatud maailmas on kood läbi põimunud riistvara, reaalajas ja turvalisusega: registri/biti väärtusi kontrollitakse andmelehelt, samaaegsust kontrollitakse staatilise analüüsi abil, ajastust kontrollitakse ostsilloskoobi abil, käitumist kontrollitakse riistvara reaalse testimise põhjal. AI tarnib skeleti minutitega; Insener kontrollib, kas püsivara töötab õigesti, turvaliselt ja õigeaegselt. Ohutuskriitilistes süsteemides ei asenda tehisintellekti väljund asjakohase ohutusstandardi protsesse ega pädeva inseneri kinnitust.
Rakenduse ülesanne
Valige välisseade (nt I2C andur). Malli „Juhi skelett” abil küsige AI-lt draiveri skeletti, mis jätab registrid kohahoidjatesse. Seejärel genereerige selle anduri andmevalmiduskatkestuse jaoks ISR-i visand malliga "ISR-turvalisus". Lõpuks skannige selle loodud kood manustatud riskide leidmiseks malliga "Koodi ülevaade" ja kirjutage vähemalt kolm kontrolli-/testimisetappi.
kontrollnimekiri
- [ ] Kontrollisin iga registri aadressi ja bitti õigest andmelehe variandist.
- [ ] Muutsin jagatud muutujad ISR-i ja põhiahela vahel lenduvaks ja aatomiks.
- [ ] Pidasin ISR-i lühikeseks, blokeerimist ei pannud, andsin pika töö peaahelale üle.
- [ ] Plaanisin testida ajastust ja tegelikku käitumist riistvaras ja ostsilloskoobiga.
- [ ] Skaneerisin koodi staatilise analüüsi ja kompilaatori hoiatustega.
- [ ] Jätsin turvalisuse/ohutuskriitilised osad pädeva inseneri heakskiiduks ja vastava standardprotsessi järgi.