Jedinica 6 / 12

Umjetna inteligencija u ugrađenim sistemima i razvoju firmvera

Dobici:

  • Mogućnost ubrzanja skeleta firmvera mikrokontrolera, drajvera i nacrta drajvera pomoću AI
  • Mogućnost pregleda prekida, mjerenja vremena, nadzora i logike niske potrošnje uz podršku AI
  • Sposobnost verifikacije koda firmvera generisanog od veštačke inteligencije kroz statičku analizu, testiranje hardvera i bezbednosne zahteve

Ugrađeni sistem je elektronski uređaj izgrađen oko mikrokontrolera (malog računara koji sadrži procesor, memoriju i periferne uređaje na jednom čipu) dizajniran za obavljanje određenog posla: termostat, modem, senzorski čvor, pokretač motora. Firmver je softver koji direktno pokreće hardver ovog uređaja. U ovoj jedinici ćete vidjeti kako koristiti AI kao akcelerator u razvoju firmvera (pisanje drajvera, državna mašina, logika prekida i vremena, upravljanje malom potrošnjom). AI je zaista moćan u kodiranju; Ali u ugrađenom svijetu, kod je isprepleten s hardverom, realnim vremenom i često sigurnošću. Dakle, svaka linija koju AI proizvede mora proći kroz statičku analizu, provjeru registra/podataka i stvarno testiranje hardvera.

Gdje je jako, gdje je rizično u AI firmveru

AI je vrlo jak na "kosturu" i "die" dijelu firmvera: strukturi I2C/SPI drajvera, okviru državnog stroja (logika koja definira stanja i tranzicije uređaja), implementaciji prstenastog bafera, parseru instrukcija, testnom skeletu. Može čitati tablicu registra u složenom podatkovnom listu i generirati inicijalizacijski kod. Može objasniti grešku, protumačiti upozorenje kompajlera.

Gdje je rizično je suština ugrađenog sistema:

  • Adrese registra i bitna polja: AI može pogrešno zapamtiti registrsku mapu čipa; Svaka adresa i bit moraju biti verifikovani iz datasheet-a.
  • Tajming i realno vrijeme: Koliko mikrosekundi traje operacija, koliko često dolazi prekid, ovisi o hardveru; AI predviđa, vi mjerite.
  • Istodobnost: Ako varijable koje se dijele između rutine usluge prekida (ISR) i glavne petlje nisu zaštićene promjenjivim i atomskim pristupom, javljaju se tihe, neponovljive greške.
  • Ograničenja resursa: prekoračenje steka, curenje memorije, vremensko ograničenje čuvara znači pad u ugrađenom.

Prekid, mjerenje vremena i nadzor

Prekid je kada se dogodi događaj (podaci su stigli, tajmer je istekao), procesor napusti glavni posao i skoči na servisnu rutinu (ISR: Interrupt Service Routine). ISR su najosetljiviji delovi koda u ugrađenom sistemu. Osnovna pravila: ISR bi trebao biti kratak (dug rad je prepušten glavnoj petlji), u njemu ne bi trebalo biti blokiranih operacija (čekanje, ispis), zajedničke varijable treba da budu zaštićene.

Watchdog je sigurnosni mehanizam koji automatski ponovo pokreće uređaj ako se softver sruši; Firmver ga redovno "hrani", ako ne, sistem se resetuje. AI izrađuje ove strukture, ali trajanje nadzora, prioriteti prekida i budžet za planiranje moraju biti potvrđeni u odnosu na stvarno opterećenje vašeg sistema.

Savjet: Kada ispisujete ISR na AI, izričito mu navedite da "ISR bude kratak, bez blokiranja, označi zajedničke varijable promjenjivim i atomskim pristupom, delegira dugi posao glavnoj petlji sa zastavicom." Zatim provjerite red po red u kodu koji proizvodi da li se ova pravila stvarno primjenjuju.

Mala snaga i sigurnost

Upravljanje niskom potrošnjom je kritično za uređaje koji se napajaju baterijama: stavljanje procesora u stanje mirovanja, isključivanje perifernih uređaja, buđenje s nekim događajem. AI skicira prelaze u režim mirovanja i logiku buđenja, ali stvarna potrošnja struje poznata je samo merenjem (merač struje na nivou mikroampera); AI kaže da "u ovom režimu troši ~2 µA" je samo nagađanje.

Sa sigurnosne perspektive, ugrađeni uređaji su sve više umreženi i ranjivosti firmvera (prelivanje bafera, neautorizovani unos, slaba kriptografija, otvoreni interfejs za otklanjanje grešaka) predstavljaju ozbiljne rizike. AI vas može podsjetiti na principe sigurnog kodiranja, ali sigurnost generiranog koda se provjerava pomoću alata za statičku analizu, pregled koda i testiranje sigurnosti kada je to potrebno. U sistemima koji su kritični za sigurnost (medicinski, automobilski, industrijski) izlaz umjetne inteligencije nikada ne bi trebao zamijeniti procese koje zahtijeva odobrenje nadležnog inženjera i relevantni sigurnosni standard (npr. IEC 61508, ISO 26262).

tri mini kofera

Slučaj 1 — Nezaštićena dijeljena varijabla. Inženjer traži UART prijemni kod od AI. Kod povećava brojač u ISR-u i glavna petlja čita ovaj brojač; ali brojač nije nepostojan i višebajtno čitanje nije atomsko. Uređaj radi većinu vremena, ali povremeno pogrešno čita broj podataka i greška se ne može ponoviti. Statička analiza i pregled koda hvataju nedostaje volatile; Greška nestaje kada je brojač zaštićen. Lekcija: greške istovremenosti su česte i podmukle u AI kodu; Potrebno je pročitati i provjeriti.

Slučaj 2 — Pogrešan registarski bit. Pripravnik učitava ADC inicijalizacijski kod generiran od strane AI; ADC čita neočekivane vrijednosti. Uspoređujući ga s podacima, čini se da je AI postavio konfiguracijski bit na pogrešnoj lokaciji (mapa za drugu varijantu čipa). Jednom kada je bit ispravljen, ADC radi ispravno. Lekcija: provjerite pravopis svakog registra u odnosu na ispravnu varijantu tablice sa podacima.

Slučaj 3 — Ispravna upotreba. Inženjer traži od AI kostur državnog stroja za složeni senzorski protokol; opisuje stanja, prelaze i grane isteka. AI proizvodi čist, čitljiv okvir. Inženjer uzima ovaj okvir, provjerava pristup svakom registru sa podacima, mjeri tajminge osciloskopom i testira ga u hardveru. Razvoj je gotov za nekoliko sati umjesto za nekoliko dana. Lekcija: AI ubrzava kostur; Inženjer vrši verifikaciju.

Predlošci upita koji se mogu kopirati

PREDLOŽAK SKELETA DRAJVERA"Napišite kostur drajvera [I2C/SPI/UART] za [čip/periferiju]: inicijalizacija, čitanje, pisanje, funkcije rukovanja greškama. Ostavite adrese registra i bitna polja u PLACEHOLDER-u (npr. REG_XXX) i zabilježite 'popuni i provjeri ih koristeći blok sa vremenskim ograničenjem umjesto toga pretpostaviti što je timeout iz tablice podataka'. red za komentar."

ISR SECURITY TEMPLATE "Napišite nacrt rutine prekida usluge (ISR) za sljedeći događaj: [događaj]. Pravila: Neka ISR bude kratak, ne blokirajte, označite dijeljene varijable vivolatilim i atomskim pristupom, delegirajte dugi posao glavnoj petlji sa zastavicom. Na kraju koda navedite gdje se svako od ovih pravila može potvrditi."

PREDLOŽAK STATE MACHINE"Napišite kostur stroja stanja za sljedeći protokol/proces: [opišite stanja, događaje, prijelaze i vremenska ograničenja]. Odredite radnje ulaska/izlaska i granu greške/vremenskog ograničenja za svako stanje. Ostavite vrijednosti specifične za hardver (registar, trajanje) kao čuvare mjesta i imajte na umu da ih treba provjeriti."

PREGLED KODOVA "Proučite sljedeći kod firmvera iz perspektive ugrađene i označite rizike: nezaštićena zajednička varijabla (promjenljiva/atomičnost), dug/blokirajući rad u ISR-u, rizik od prekoračenja steka, čekanje bez vremenskog ograničenja, greške u registru, nadzorni feed. Predložite kako da testiram/provjerim za svaki nalaz: [paste]."

Slaba prompt / Jaka prompt

WEAK PROMPT: "Napišite mi upravljački program za UART."

SNAŽNA UPOTREBA: "Napišite okvir za drajver za prijem UART zasnovan na prekidima za [mikrokontroler]. Koristite prstenasti bafer; neka ISR bude kratak i samo pišite u bafer, obrađujući u glavnoj petlji. Učinite dijeljene indekse promjenjivim i atomskim. Ostavite adrese registra u rezerviranim mjestima, označite ih da se verificiraju iz liste podataka.

Slabi prompt proizvodi kod koji je hardverski i slijep za paralelnost; Moćni prompt nameće ugrađena pravila i upite za listu za verifikaciju.

Slojevi verifikacije firmvera

sloj

šta hvata

Uloga AI

Provjera lista sa podacima

Pogrešan registar/bit

Generira čuvar mjesta i kontrolnu bilješku

statička analiza (linter)

volatile, tip, granične greške

Lista pravila i objašnjenje

Upozorenja kompajlera

Implicitna konverzija, neiskorištena vrijednost

Komentar upozorenja

Testiranje u hardveru

Tajming, stvarno ponašanje

Prijedlog scenarija za testiranje

Osciloskop/analizator

Tačnost signala i protokola

Mjerna tačka i očekivani talas

Oprez: Samo zato što se firmver "kompajlira" i "radi većinu vremena" ne znači da je ispravan. Greške paralelnosti i vremena se javljaju samo pod određenim uslovima; Zato su statička analiza i stvarno testiranje hardvera neophodni.

Uobičajene greške

  • Ne štiti dijeljene varijable. Podaci između ISR-a i glavne petlje moraju biti nestabilni i atomski.
  • Ne provjerava se adresa/bit registra sa podacima. AI može mapirati pogrešnu varijantu.
  • Održavanje ISR dugo ili blokiranje unutar njega. Sistem ne može odgovoriti, prekidi su propušteni.
  • Pretpostavljanje vremena bez mjerenja. Stvarno vrijeme ovisi o hardveru; provereno osciloskopom.
  • Ostavljanje sigurnosnog/sigurnosno kritičnog koda za odobrenje AI. Neophodni su kompetentni inženjer i odgovarajući standardni proces.

Ukratko

U ovoj jedinici ste koristili AI kao moćan akcelerator u generiranju skeleta firmvera, drajvera, državnog stroja i ISR ​​skice. Ali u ugrađenom svijetu, kod je isprepleten s hardverom, realnim vremenom i sigurnošću: vrijednosti registra/bita se provjeravaju iz tablice podataka, paralelnost se provjerava iz statičke analize, vrijeme se provjerava pomoću osciloskopa, ponašanje se provjerava stvarnim testiranjem u hardveru. AI isporučuje kostur za nekoliko minuta; Inženjer provjerava da firmver radi ispravno, sigurno i na vrijeme. U sistemima kritičnim za sigurnost, AI izlaz ne zamjenjuje procese relevantnih sigurnosnih standarda i odobrenje nadležnog inženjera.

Zadatak aplikacije

Odaberite periferni uređaj (npr. I2C senzor). Sa šablonom „kostur vozača“, zatražite od AI kostur vozača koji ostavlja registre u rezerviranim mjestima. Zatim generirajte ISR skicu za prekid spreman za podatke iz ovog senzora s predloškom "ISR sigurnost". Konačno, skenirajte kod koji proizvodi pomoću šablona "Pregled koda" za ugrađene rizike i napišite najmanje tri koraka provjere/testiranja.

kontrolna lista

  • [ ] Provjerio sam svaku adresu registra i bit iz ispravne varijante tablice podataka.
  • [ ] Napravio sam dijeljene varijable između ISR-a i glavne petlje nestabilnim i atomskim.
  • [ ] Držao sam ISR kratak, nisam stavio blokiranje, predao dugi posao glavnoj petlji.
  • [ ] Planirao sam testirati vrijeme i stvarno ponašanje u hardveru i sa osciloskopom.
  • [ ] Skenirao sam kod sa statičkom analizom i upozorenjima kompajlera.
  • [ ] Prepustio sam sigurnosno/sigurnosno kritične dijelove odobrenju nadležnog inženjera i relevantnom standardnom procesu.