Добици:
- Могућност убрзања скелета фирмвера микроконтролера, драјвера и нацрта државне машине помоћу АИ
- Способност прегледа прекида, времена, надзора и логике мале енергије уз подршку АИ
- Могућност верификације кода фирмвера генерисаног вештачком интелигенцијом кроз статичку анализу, тестирање хардвера и безбедносне захтеве
Уграђени систем је електронски уређај изграђен око микроконтролера (малог рачунара који садржи процесор, меморију и периферије на једном чипу) дизајниран да обавља одређени посао: термостат, модем, сензорски чвор, покретач мотора. Фирмвер је софтвер који директно покреће хардвер овог уређаја. У овој јединици ћете видети како да користите АИ као акцелератор у развоју фирмвера (писање драјвера, државна машина, логика прекида и времена, управљање малом потрошњом). АИ је заиста моћан у кодирању; Али у уграђеном свету, код је испреплетен са хардвером, реалним временом и често безбедношћу. Дакле, свака линија коју АИ производи мора проћи кроз статичку анализу, проверу регистра/табела са подацима и стварно тестирање у хардверу.
Где је јако, где је ризично у АИ фирмверу
АИ је веома јак на „скелету“ и „дие“ делу фирмвера: структури И2Ц/СПИ драјвера, оквиру државног строја (логика која дефинише стања и прелазе уређаја), имплементацији бафера прстена, парсеру инструкција, тестном скелету. Може да чита регистарску табелу у сложеном листу података и генерише иницијализациони код. Може објаснити грешку, протумачити упозорење компајлера.
Тамо где је ризично је суштина уграђеног система:
- Адресе регистра и битна поља: АИ може погрешно запамтити регистрску мапу чипа; Свака адреса и бит морају бити верификовани из листа података.
- Тајминг и реално време: Колико микросекунди траје операција, колико често долази прекид, зависи од хардвера; АИ предвиђа, ви мерите.
- Истодобност: Ако променљиве које се деле између рутине услуге прекида (ИСР) и главне петље нису заштићене променљивим и атомским приступом, долази до тихих, непоновљивих грешака.
- Ограничења ресурса: прекорачење стека, цурење меморије, временско ограничење чувара значи рушење уграђеног.
Прекид, тајминг и надзор
Прекид је када дође до догађаја (подаци су стигли, тајмер је истекао), процесор напусти главни посао и пређе на сервисну рутину (ИСР: Интеррупт Сервице Роутине). ИСР су најосетљивији делови кода у уграђеном систему. Основна правила: ИСР треба да буде кратак (дуг рад је препуштен главној петљи), у њему не би требало да постоје операције блокирања (чекање, штампање), дељене варијабле треба да буду заштићене.
Ватцхдог је сигурносни механизам који аутоматски поново покреће уређај ако се софтвер сруши; Фирмвер га редовно "храни", ако не, систем се ресетује. АИ прави нацрте ових структура, али трајање надзора, приоритети прекида и буџет за планирање морају да буду валидирани у односу на стварно оптерећење вашег система.
Савет: Када штампате ИСР на АИ, изричито му наложите да „одржи ИСР кратак, без блокирања, означи дељене варијабле променљивим и атомским приступом, делегира дуги посао главној петљи са заставицом“. Затим проверите ред по ред у коду који производи да ли се ова правила заиста примењују.
Мала снага и сигурност
Управљање ниском потрошњом је критично за уређаје који се напајају батеријама: стављање процесора у стање мировања, искључивање периферних уређаја, буђење са догађајем. АИ скицира прелазе у режим спавања и логику буђења, али стварна потрошња струје је позната само мерењем (мерач струје на нивоу микроампера); АИ каже да "у овом режиму троши ~2 µА" је претпоставка.
Из безбедносне перспективе, уграђени уређаји су све више умрежени и рањивости фирмвера (преливање бафера, неауторизовани унос, слаба криптографија, отворени интерфејс за отклањање грешака) представљају озбиљне ризике. АИ вас може подсетити на принципе безбедног кодирања, али безбедност генерисаног кода се верификује помоћу алата за статичку анализу, преглед кода и безбедносно тестирање када је то потребно. У системима који су критични за безбедност (медицински, аутомобилски, индустријски) излаз вештачке интелигенције никада не би требало да замени процесе које захтева одобрење надлежног инжењера и релевантни безбедносни стандард (нпр. ИЕЦ 61508, ИСО 26262).
три мини кофера
Случај 1 — Незаштићена дељена варијабла. Инжењер захтева УАРТ пријемни код од АИ. Код повећава бројач у ИСР-у и главна петља чита овај бројач; али бројач није променљив и вишебајтно читање није атомско. Уређај ради већину времена, али повремено погрешно чита број података и грешка се не може поновити. Статичка анализа и преглед кода хватају недостајуће волатиле; Грешка нестаје када је бројач заштићен. Лекција: грешке истовремености су честе и подмукле у АИ коду; Неопходно је прочитати и проверити.
Случај 2 — Погрешан регистарски бит. Приправник учитава АДЦ иницијализацијски код који генерише АИ; АДЦ чита неочекиване вредности. Упоређујући га са листом података, чини се да је АИ поставио конфигурациони бит на погрешној локацији (мапа за другу варијанту чипа). Када се бит исправи, АДЦ ради исправно. Лекција: проверите правопис сваког регистра у односу на тачну варијанту листа са подацима.
Случај 3 — Правилна употреба. Инжењер тражи од вештачке интелигенције скелет државне машине за сложени сензорски протокол; описује стања, прелазе и гране временског ограничења. АИ производи чист, читљив оквир. Инжењер узима овај оквир, верификује приступ сваком регистру са листом података, мери тајминг осцилоскопом и тестира га у хардверу. Развој се завршава за неколико сати уместо за неколико дана. Лекција: АИ убрзава скелет; Инжењер врши верификацију.
Шаблони упита који се могу копирати
ШАБЛОНА СКЕЛЕТА ДРАЈВЕРА"Напишите скелет [И2Ц/СПИ/УАРТ] драјвера за [чип/периферију]: функције иницијализације, читања, писања, руковања грешкама. Оставите адресе регистра и битна поља у ПЛАЦЕХОЛДЕР-у (нпр. РЕГ_КСКСКС) и забиљежите 'попуни и верификујте их са блоком са временским ограничењем за сваку функцију. ред за коментар."
ИСР СЕЦУРИТИ ТЕМПЛАТЕ"Напишите нацрт рутине прекида услуге (ИСР) за следећи догађај: [догађај]. Правила: Нека ИСР буде кратак, не блокирајте, означите дељене променљиве виволатиленим и атомским приступом, делегирајте дуги посао главној петљи са заставицом. На крају кода наведите где се свако од ових правила може применити."
ШАБЛОНА ДРЖАВНЕ МАШИНЕ"Напишите скелет аутомата стања за следећи протокол/процес: [опишите стања, догађаје, прелазе и временска ограничења]. Одредите радње уласка/изласка и грану грешке/временског ограничења за свако стање. Оставите вредности специфичне за хардвер (регистар, трајање) као чуваре места и имајте на уму да их треба верификовати."
ШАБЛОНА ЗА ПРЕГЛЕД КОДОВА „Проучите следећи код фирмвера из уграђене перспективе и означите ризике: незаштићена заједничка варијабла (променљива/атомичност), дуг/блокирајући рад у ИСР-у, ризик од прекорачења стека, чекање без временског ограничења, грешке у регистру, надзорни фид. Предложите како да тестирам/верификујем за сваки налаз: [пасте].“
Слаби промпт / Јаки промпт
ВЕАК ПРОМПТ: "Напишите ми управљачки програм за УАРТ."
СНАЖНО УПИТ: „Напишите оквир драјвера за пријем УАРТ заснован на прекидима за [микроконтролер]. Користите прстенасти бафер; нека ИСР буде кратак и само пишите у бафер, обрађујући у главној петљи. Учините дељене индексе променљивим и атомским. Оставите адресе регистара у чуварима места, означите их да буду верификоване из табеле са подацима.
Слаби промпт производи код који је хардверски и слеп за паралелност; Моћни промпт намеће уграђена правила и упите за листу за верификацију.
Слојеви верификације фирмвера
слој
шта хвата
Улога АИ
Провера листа са подацима
Погрешан регистар/бит
Генерише чувар места и контролну белешку
Статичка анализа (линтер)
променљиве, тип, граничне грешке
Листа правила и објашњење
Упозорења компајлера
Имплицитна конверзија, неискоришћена вредност
Коментар упозорења
Тестирање у хардверу
Тајминг, стварно понашање
Предлог сценарија за тестирање
Осцилоскоп/анализатор
Тачност сигнала и протокола
Тачка мерења и очекивани талас
Опрез: Само зато што се фирмвер „компајлира“ и „ради већину времена“ не значи да је исправан. Грешке паралелности и времена се јављају само под одређеним условима; Зато су статичка анализа и стварно тестирање хардвера неопходни.
Уобичајене грешке
- Не штити дељене варијабле. Подаци између ИСР-а и главне петље морају бити променљиви и атомски.
- Не проверава се адреса/бит регистра са подацима. АИ може мапирати погрешну варијанту.
- Одржавање ИСР дуго или блокирање унутар њега. Систем не може да одговори, прекиди су пропуштени.
- Претпостављајући тајминг без мерења. Стварно време зависи од хардвера; проверено осцилоскопом.
- Остављање безбедносног/безбедносно критичног кода за одобрење АИ. Неопходни су компетентни инжењер и одговарајући стандардни процес.
Укратко
У овој јединици сте користили АИ као моћан акцелератор у генерисању скелета фирмвера, драјвера, државног строја и ИСР скице. Али у уграђеном свету, код је испреплетен са хардвером, реалним временом и безбедношћу: вредности регистра/бита се верификује из табеле са подацима, истовременост се верификује из статичке анализе, тајминг се верификује помоћу осцилоскопа, понашање се проверава стварним тестирањем у хардверу. АИ испоручује скелет за неколико минута; Инжењер проверава да фирмвер ради исправно, безбедно и на време. У системима критичним за безбедност, АИ излаз не замењује процесе релевантних безбедносних стандарда и одобрење надлежног инжењера.
Задатак апликације
Изаберите периферни уређај (нпр. И2Ц сензор). Са шаблоном „костур возача“, затражите од АИ костур возача који оставља регистре у чуварима места. Затим генеришете ИСР скицу за прекид спреман за податке са овог сензора са шаблоном „ИСР безбедност“. На крају, скенирајте код који производи помоћу шаблона „Преглед кода“ за уграђене ризике и напишите најмање три корака верификације/тестирања.
контролна листа
- [ ] Проверио сам сваку адресу регистра и бит из исправне варијанте листа података.
- [ ] Направио сам дељене варијабле између ИСР-а и главне петље нестабилним и атомским.
- [ ] Држао сам ИСР кратак, нисам ставио блокирање, предао дуг посао главној петљи.
- [ ] Планирао сам да тестирам тајминг и стварно понашање у хардверу и са осцилоскопом.
- [ ] Скенирао сам код са статичком анализом и упозорењима компајлера.
- [ ] Препустио сам безбедносно/безбедносно критичне делове одобрењу надлежног инжењера и релевантном стандардном процесу.