Ieguvumi:
- Spēja paātrināt mikrokontrollera programmaparatūras skeleta, draivera un stāvokļa mašīnas melnrakstus, izmantojot AI
- Iespēja pārskatīt pārtraukumu, laiku, sargsuņa un mazjaudas loģiku ar AI atbalstu
- Iespēja pārbaudīt mākslīgā intelekta radīto programmaparatūras kodu, izmantojot statisko analīzi, aparatūras testēšanu un drošības prasības
Iegultā sistēma ir elektroniska ierīce, kas veidota ap mikrokontrolleri (mazu datoru, kurā vienā mikroshēmā atrodas procesors, atmiņa un perifērijas ierīces), kas paredzēta noteikta darba veikšanai: termostats, modems, sensora mezgls, motora draiveris. Programmaparatūra ir programmatūra, kas tieši darbina šīs ierīces aparatūru. Šajā nodaļā jūs redzēsiet, kā AI izmantot kā paātrinātāju programmaparatūras izstrādē (draiveri rakstīšana, stāvokļa mašīna, pārtraukumu un laika loģika, mazjaudas pārvaldība). AI ir patiešām spēcīgs kodēšanas jomā; Bet iegultajā pasaulē kods ir saistīts ar aparatūru, reālo laiku un bieži vien drošību. Tāpēc katrai AI radītajai rindai ir jāveic statiskā analīze, reģistru/datu lapu pārbaude un faktiskā aparatūras pārbaude.
Kur ir spēcīgs, kur ir riskants AI programmaparatūrā
AI ir ļoti spēcīga programmaparatūras "skeleta" un "miršanas" daļā: I2C/SPI draivera struktūra, stāvokļa mašīnas ietvars (loģika, kas nosaka ierīces stāvokļus un pārejas), gredzena bufera ieviešana, instrukciju parsētājs, testa skelets. Tas var nolasīt reģistra tabulu sarežģītā datu lapā un ģenerēt inicializācijas kodu. Var izskaidrot kļūdu, interpretēt kompilatora brīdinājumu.
Kur tas ir riskanti, ir iegultās sistēmas būtība:
- Reģistrēt adreses un bitu lauki: AI var nepareizi atcerēties mikroshēmas reģistra karti; Katra adrese un bits ir jāpārbauda no datu lapas.
- Laiks un reālais laiks: cik mikrosekundes aizņem darbība, cik bieži pienāk pārtraukums, ir atkarīgs no aparatūras; AI prognozē, jūs izmērāt.
- Vienlaicība: ja mainīgie, kas tiek dalīti starp pārtraukuma pakalpojuma rutīnu (ISR) un galveno cilpu, nav aizsargāti ar nepastāvīgu un atomu piekļuvi, rodas klusas, neatkārtojamas kļūdas.
- Resursu ierobežojumi: steka pārpilde, atmiņas noplūde, sargsuņa taimauts nozīmē iegultās ierīces avāriju.
Pārtraukums, laiks un sargsuns
Pārtraukums ir tad, kad notiek notikums (sanāk dati, beidzies taimera termiņš), procesors pamet galveno darbu un pāriet uz pakalpojumu rutīnu (ISR: Interrupt Service Routine). ISR ir visjutīgākās koda daļas iegultajā sistēmā. Pamatnoteikumi: ISR jābūt īsam (ilgs darbs tiek atstāts galvenajai cilpai), tajā nedrīkst būt bloķēšanas darbības (gaidīšana, drukāšana), koplietotie mainīgie ir jāaizsargā.
Watchdog ir drošības mehānisms, kas automātiski atsāknē ierīci, ja programmatūra avarē; Programmaparatūra to regulāri "baro", ja nē, sistēma tiek atiestatīta. AI izstrādā šīs struktūras, taču sargsuņa ilgums, pārtraukumu prioritātes un plānošanas budžets ir jāapstiprina, ņemot vērā faktisko jūsu sistēmas slodzi.
Padoms. Drukājot ISR ar AI, skaidri norādiet, lai ISR būtu īss, nebloķētu, atzīmētu koplietotos mainīgos ar nepastāvīgu un atomu piekļuvi, deleģētu garo darbu galvenajai cilpai ar karogu. Pēc tam izveidotajā kodā rindiņu pa rindiņai pārbaudiet, vai šie noteikumi patiešām tiek piemēroti.
Zema jauda un drošība
Zema jaudas pārvaldība ir kritiska ar akumulatoru darbināmās ierīcēs: procesora pārslēgšana, perifērijas ierīču izslēgšana, pamošanās ar notikumu. AI ieskicē miega režīma pārejas un pamošanās loģiku, bet faktiskais strāvas patēriņš ir zināms tikai pēc mērījuma (strāvas mērītājs mikroampēru līmenī); AI teiciens "šajā režīmā patērē ~2 µA" ir minējums.
No drošības viedokļa iegultās ierīces arvien vairāk tiek savienotas tīklā, un programmaparatūras ievainojamības (bufera pārpilde, neautentificēta ievade, vāja kriptogrāfija, atvērta atkļūdošanas saskarne) ir nopietns risks. AI var atgādināt par drošas kodēšanas principiem, taču ģenerētā koda drošību pārbauda statiskās analīzes rīki, koda pārskatīšana un drošības pārbaude, ja nepieciešams. Drošībai kritiskās sistēmās (medicīnas, automobiļu, rūpnieciskās) mākslīgā intelekta izvadei nekad nevajadzētu aizstāt procesus, ko pieprasa kompetenta inženiera apstiprinājums un attiecīgais drošības standarts (piemēram, IEC 61508, ISO 26262).
trīs mini futrāļi
1. gadījums — neaizsargāts koplietotais mainīgais. Inženieris pieprasa UART saņemšanas kodu no AI. Kods palielina skaitītāju ISR, un galvenā cilpa nolasa šo skaitītāju; bet skaitītājs nav nepastāvīgs un vairāku baitu nolasīšana nav atomāra. Ierīce darbojas lielāko daļu laika, taču reizēm tā nepareizi nolasa datu skaitu un kļūdu nevar atkārtot. Statiskās analīzes un koda pārskatīšanas nozvejas trūkst gaistošu; Kļūda pazūd, kad skaitītājs ir aizsargāts. Nodarbība: AI kodā vienlaicības kļūdas ir biežas un mānīgas; Ir nepieciešams izlasīt un pārbaudīt.
2. gadījums — nepareizs reģistra bits. Interns augšupielādē AI ģenerēto ADC inicializācijas kodu; ADC nolasa neparedzētas vērtības. Salīdzinot to ar datu lapu, šķiet, ka AI ir iestatījis konfigurācijas bitu nepareizā vietā (karte citam mikroshēmas variantam). Kad bits ir izlabots, ADC darbojas pareizi. Nodarbība: pārbaudiet katra reģistra pareizrakstību, salīdzinot ar pareizo datu lapas variantu.
3. gadījums — Pareiza lietošana. Inženieris AI prasa stāvokļa mašīnas skeletu sarežģītam sensora protokolam; apraksta stāvokļus, pārejas un taimauta atzarus. AI rada tīru, lasāmu sistēmu. Inženieris izmanto šo sistēmu, pārbauda katra reģistra piekļuvi, izmantojot datu lapu, mēra laiku ar osciloskopu un pārbauda to aparatūrā. Izstrāde tiek pabeigta dažu stundu laikā, nevis dažu dienu laikā. Nodarbība: AI paātrina skeletu; Inženieris veic pārbaudi.
Kopējamas uzvedņu veidnes
DRIVER SKELETON TEMPLATE"Rakstiet [I2C/SPI/UART] draivera skeletu [chip/peripheral]: inicializācija, lasīšana, rakstīšana, kļūdu apstrādes funkcijas. Atstājiet reģistra adreses un bitu laukus PLACEHOLDER (piem., REG_XXX) un atzīmējiet, ka "aizpildiet un pārbaudiet katru funkciju". Tā vietā izmantojiet datu bloķēšanu un pārbaudiet tos. ar komentāru rindiņu."
ISR SECURITY TEMPLATE"Rakstiet pārtraukuma pakalpojuma rutīnas (ISR) melnrakstu šādam notikumam: [notikums]. Noteikumi: saglabājiet ISR īsu, nebloķējiet, atzīmējiet koplietotos mainīgos ar mainīgu un atomu piekļuvi, deleģējiet garo darbu galvenajai cilpai ar karogu. Koda beigās norādiet, kur attiecas katrs no šiem noteikumiem, lai es varētu pārbaudīt."
STATE MACHINE TEMPLATE"Rakstiet stāvokļa mašīnas skeletu šādam protokolam/procesam: [aprakstiet stāvokļus, notikumus, pārejas un taimautus]. Katram stāvoklim norādiet ieejas/izejas darbības un kļūdu/taimauta atzaru. Atstājiet aparatūrai specifiskās vērtības (reģistrs, ilgums) kā vietturi un ņemiet vērā, ka tās ir jāpārbauda."
KODA PĀRSKATĪŠANAS VEINE "Pārbaudiet šādu programmaparatūras kodu no iegultās perspektīvas un atzīmējiet riskus: neaizsargāts koplietotais mainīgais (gaistošs/atomiskums), ilgstoša/bloķējoša darbība ISR, steka pārpildes risks, gaidīšana bez taimauta, kļūdu reģistrēšana, sargsuņa plūsma. Iesakiet, kā pārbaudīt/pārbaudīt katru atradumu. Kods: [ielīmēt]."
Vāja uzvedne / spēcīga uzvedne
VĀJS PROMPT: "Uzrakstiet man UART draiveri."
STRONG PROMPT: "Rakstiet uz pārtraukumiem balstītu UART saņemšanas draivera ietvaru [mikrokontrollerim]. Izmantojiet zvana buferi; saglabājiet ISR īsu un vienkārši rakstiet buferī, apstrādājot galvenajā cilpā. Padariet koplietotos indeksus nepastāvīgus un atomus. Atstājiet reģistra adreses vietturos, atzīmējiet tās, lai tās pārbaudītu no datu lapas. Man ir vajadzīgas koda beigās, lai pārbaudītu, kādi nosacījumi un termiņi."
Vāja uzvedne rada kodu, kas ir akls aparatūrai un vienlaicīgumam; Spēcīgā uzvedne uzliek iegultus noteikumus un uzvednes verifikācijas sarakstam.
Programmaparatūras verifikācijas slāņi
slānis
kas nozvejas
AI loma
Datu lapas pārbaude
Nepareizs reģistrs/bits
Izveido vietturi un vadības piezīmi
Statiskā analīze (linter)
nepastāvīgas, tipa, robežkļūdas
Noteikumu saraksts un skaidrojums
Kompilatora brīdinājumi
Netieša konversija, neizmantota vērtība
Brīdinājuma komentārs
Testēšana aparatūrā
Laiks, faktiskā uzvedība
Testa scenārija ieteikums
Osciloskops/analizators
Signāla un protokola precizitāte
Mērīšanas punkts un gaidāmais vilnis
Uzmanību: tas, ka programmaparatūra "kompilējas" un "darbojas lielāko daļu laika", nenozīmē, ka tā ir pareiza. Vienlaicības un laika kļūdas rodas tikai noteiktos apstākļos; Tāpēc statiskā analīze un reāla aparatūras pārbaude ir neaizstājama.
Biežas kļūdas
- Neaizsargā koplietotos mainīgos. Datiem starp ISR un galveno cilpu jābūt nepastāvīgiem un atomiem.
- Netiek pārbaudīta reģistra adrese/bits ar datu lapu. AI var kartēt nepareizu variantu.
- ISR saglabāšana garā vai bloķēšana tajā. Sistēma nevar reaģēt, pārtraukumi tiek izlaisti.
- Pieņemot laiku bez mērīšanas. Faktiskais laiks ir atkarīgs no aparatūras; pārbaudīts ar osciloskopu.
- Drošības/drošībai kritiskā koda atstāšana AI apstiprināšanai. Būtisks ir kompetents inženieris un atbilstošs standarta process.
Rezumējot
Šajā vienībā jūs izmantojāt AI kā spēcīgu paātrinātāju programmaparatūras skeleta, draivera, stāvokļa mašīnas un ISR skices ģenerēšanai. Bet iegultajā pasaulē kods ir saistīts ar aparatūru, reālo laiku un drošību: reģistra/bitu vērtības tiek pārbaudītas no datu lapas, vienlaicīgums tiek pārbaudīts no statiskās analīzes, laiks tiek pārbaudīts no osciloskopa, uzvedība tiek pārbaudīta no reālas aparatūras pārbaudes. AI piegādā skeletu minūtēs; Inženieris pārbauda, vai programmaparatūra darbojas pareizi, droši un laikā. Drošībai kritiskās sistēmās mākslīgā intelekta izvade neaizstāj attiecīgā drošības standarta procesus un kompetenta inženiera apstiprinājumu.
Lietojumprogrammas uzdevums
Izvēlieties perifērijas ierīci (piemēram, I2C sensoru). Izmantojot veidni “vadītāja skelets”, AI jautājiet vadītāja skeletu, kas atstāj reģistrus vietturos. Pēc tam ģenerējiet ISR skici datu gatavības pārtraukumam no šī sensora, izmantojot veidni "ISR drošība". Visbeidzot, skenējiet tā izveidoto kodu, izmantojot veidni "Koda pārskatīšana", lai atrastu iegultos riskus, un uzrakstiet vismaz trīs verifikācijas/testēšanas darbības.
kontrolsaraksts
- [ ] Es pārbaudīju katru reģistra adresi un bitu no pareizā datu lapas varianta.
- [ ] Kopīgos mainīgos starp ISR un galveno cilpu padarīju nepastāvīgus un atomiskus.
- [ ] Saīsināju ISR, neliku bloķēšanu, garo darbu nodevu galvenajai cilpai.
- [ ] Es plānoju pārbaudīt laiku un faktisko uzvedību aparatūrā un ar osciloskopu.
- [ ] Es skenēju kodu ar statisko analīzi un kompilatora brīdinājumiem.
- [ ] Es atstāju drošībai/drošībai kritiskās daļas kompetenta inženiera apstiprināšanai un attiecīgo standarta procesu.