Единица 6 / 12

Вештачка интелигенција во вградени системи и развој на фирмвер

Добивки:

  • Способност за забрзување на скелетот на фирмверот на микроконтролерот, нацртите на возачот и состојбата на машината со вештачка интелигенција
  • Способност за прегледување на прекини, тајминг, логика за набљудување и мала моќност со поддршка за вештачка интелигенција
  • Способност да се потврди кодот на фирмверот генериран од вештачка интелигенција преку статичка анализа, тестирање на хардвер и безбедносни барања

Вграден систем е електронски уред изграден околу микроконтролер (мал компјутер кој ги сместува процесорот, меморијата и периферните уреди на еден чип) дизајниран да врши одредена работа: термостат, модем, сензорски јазол, двигател на моторот. Фирмверот е софтвер кој директно го извршува хардверот на овој уред. Во оваа единица ќе видите како да ја користите вештачката интелигенција како забрзувач во развојот на фирмверот (пишување на двигател, машина за состојба, логика на прекини и тајминг, управување со мала енергија). ВИ е навистина моќна во кодирањето; Но, во вградениот свет, кодот е испреплетен со хардвер, реално време и често со безбедност. Така, секоја линија што ја произведува вештачката интелигенција мора да помине низ статичка анализа, проверка на регистарот/листата со податоци и вистинското тестирање во хардверот.

Каде е силно, каде е ризично во фирмверот со вештачка интелигенција

Вештачката интелигенција е многу силна на делот „скелет“ и „умре“ од фирмверот: структурата на двигателот I2C/SPI, рамката на состојбата на машината (логиката што ги дефинира состојбите и транзициите на уредот), имплементација на прстенест тампон, анализатор на инструкции, тест скелет. Може да ја чита табелата со регистри во сложен лист со податоци и да генерира код за иницијализација. Може да објасни грешка, да интерпретира предупредување од компајлерот.

Онаму каде што е ризично е суштината на вградениот систем:

  • Регистрирајте адреси и битови полиња: AI може погрешно да ја запамети мапата на регистарот на чипот; Секоја адреса и бит мора да бидат потврдени од листот со податоци.
  • Време и реално време: Колку микросекунди трае операцијата, колку често пристигнува прекин, зависи од хардверот; AI predicts, you measure.
  • Конкурентност: ако променливите споделени помеѓу рутината на услугата за прекин (ISR) и главната јамка не се заштитени со испарлив и атомски пристап, се појавуваат тивки, неповторливи грешки.
  • Ограничувања на ресурси: прелевање на магацинот, истекување на меморија, истек на чуварот значи паѓање во вграденото.

Прекини, тајминг и чувар

Прекин е кога се случува настан (податоци пристигнати, тајмерот истече), процесорот ја напушта главната работа и скока на рутина за сервисирање (ISR: Рутина за прекин на услугата). ISR се најчувствителните парчиња код во вградениот систем. Основни правила: ISR треба да биде кратка (долгата работа е оставена на главната јамка), во неа не треба да има операции за блокирање (чекајте, печатете), споделените променливи треба да бидат заштитени.

Watchdog е безбедносен механизам кој автоматски го рестартира уредот ако падне софтверот; Фирмверот го „храни“ редовно, ако не, системот се ресетира. Вештачката интелигенција ги подготвува овие структури, но времетраењето на чуварот, приоритетите на прекините и буџетот за закажување треба да се потврдат во однос на вистинското оптоварување на вашиот систем.

Совет: кога печатите ISR на вештачката интелигенција, експлицитно наложете му „да ја одржува ISR кратка, без блокирање, да ги означува споделените променливи со испарлив и атомски пристап, да ја делегира долгата задача на главната јамка со знаменце“. Потоа проверете линија по ред во кодот што го произведува дали овие правила навистина се применуваат.

Ниска моќност и безбедност

Управувањето со ниската енергија е од клучно значење за уредите на батерии: заспивање на процесорот, исклучување на периферните уреди, будење со настан. Вештачката интелигенција ги скицира транзициите на режимот на спиење и логиката за будење, но вистинската потрошувачка на струја се знае само со мерење (струен мерач на ниво на микроампери); Вештачката интелигенција велејќи „повлекува ~2 µA во овој режим“ е претпоставка.

Од безбедносна перспектива, вградените уреди се повеќе се вмрежуваат, а слабостите на фирмверот (прелевање на баферот, неавтентициран влез, слаба криптографија, отворен интерфејс за отстранување грешки) се сериозни ризици. Вештачката интелигенција може да ве потсети на принципите на безбедно кодирање, но безбедноста на генерираниот код се проверува со алатки за статичка анализа, преглед на кодот и безбедносно тестирање кога е потребно. Во безбедносните критични системи (медицински, автомобилски, индустриски) излезот на вештачката интелигенција никогаш не треба да ги замени процесите што се бараат со одобрението од надлежните инженери и релевантните безбедносни стандарди (на пр. IEC 61508, ISO 26262).

три мини футроли

Случај 1 - Незаштитена споделена променлива. Инженер бара UART да добие код од вештачката интелигенција. Кодот зголемува бројач во ISR и главната јамка го чита овој бројач; но бројачот не е испарлив и читањето на повеќе бајти не е атомско. Уредот работи најчесто, но повремено погрешно го чита бројот на податоци и грешката не може да се повтори. Статичка анализа и преглед на код фаќаат исчезнати испарливи; Грешката исчезнува кога бројачот е заштитен. Лекција: грешките во истовременоста се чести и подмолни во кодот за вештачка интелигенција; Неопходно е да се прочита и да се потврди.

Случај 2 - Погрешен бит за регистрација. Практикантот го поставува кодот за иницијализација на ADC генериран од вештачката интелигенција; ADC чита неочекувани вредности. Споредувајќи го со листот со податоци, се чини дека вештачката интелигенција поставила бит за конфигурација на погрешна локација (карта за различна варијанта на чипот). Откако битот ќе се коригира, ADC работи правилно. Лекција: потврдете го секој правопис на регистерот со точната варијанта на листот со податоци.

Случај 3 - Правилна употреба. Инженер бара од вештачката интелигенција скелет на државна машина за сложен протокол на сензори; опишува состојби, транзиции и гранки за истекување на времето. ВИ создава чиста, читлива рамка. Инженерот ја зема оваа рамка, го потврдува секој пристап до регистарот со листот со податоци, ги мери тајмингот со осцилоскоп и го тестира во хардвер. Развојот завршува за неколку часа наместо за неколку дена. Лекција: ВИ го забрзува скелетот; Проверката ја врши инженерот.

Шаблони за копирање на брзините

шаблон за скелет на двигател"Напишете го скелетот на драјверот [I2C/SPI/UART] за [чип/периферен уред]: функции за иницијализација, читање, пишување, справување со грешки. Оставете ги адресите на регистарот и полињата за битови во PLACEHOLDER (на пр. REG_XXX). секоја функција претпоставува со линија за коментари."

ОБРАБОК ЗА БЕЗБЕДНОСТ ISR"Напишете нацрт на рутинска услуга за прекин (ISR) за следниот настан: [настан]. Правила: држете го ISR краток, не блокирајте, означете ги споделените променливи со виволатилен и атомски пристап, делегирајте ја долгата задача во главната јамка со знаменце.

ШАБОР ЗА ДРЖАВНА МАШИНА „Напишете скелет на државна машина за следниов протокол/процес: [опишете ги состојбите, настаните, транзициите и временските прекини]. Наведете дејства за влез/излез и гранка за грешка/време за секоја состојба. Оставете специфични вредности за хардверот (регистар, времетраење) како поставки и забележете дека тие треба да бидат потврдени."

шаблон за преглед на КОД „Испитајте го следниов код на фирмверот од вградена перспектива и означете ги ризиците: незаштитена споделена променлива (испарлива/атомичноста), долга/блокирана операција во ISR, ризик од прелевање на магацинот, чекање без истек на време, регистрирање грешки, довод на чувар.

Слаб промпт / Силен промпт

СЛАБ ПРЕСТАВ: „Напиши ми UART драјвер“.

СИЛЕН ПРЕТСТАВ: „Напишете рамка за двигател за примање UART базирана на прекини за [микроконтролер]. Користете тампон за прстен; држете го ISR краток и само запишете во баферот, кој се обработува во главната јамка. Направете ги споделените индекси испарливи и атомски. Оставете ги адресите на регистрите во местата, означете ги да бидат потврдени од листот со податоци што треба да се тестираат, и наведете ги термините за точноста на кодот. тајмингот“.

Слаб промпт произведува код кој е слеп за хардвер и истовременост; Моќниот промпт наметнува вградени правила и поттикнувања за списокот за верификација.

Слоеви за проверка на фирмверот

слој

што фаќа

Улогата на вештачката интелигенција

Проверка на листот со податоци

Погрешен регистар/бит

Генерира место за место и контролна белешка

Статичка анализа (линтер)

испарливи, типски, гранични грешки

Список на правила и објаснување

Предупредувања од компајлерот

Имплицитна конверзија, неискористена вредност

Предупредувачки коментар

Тестирање во хардвер

Тајминг, вистинско однесување

Предлог сценарио за тестирање

Осцилоскоп/анализатор

Точност на сигналот и протоколот

Мерна точка и очекуван бран

Внимание: Само затоа што фирмверот се „компајлира“ и „повеќе од времето работи“ не значи дека е точен. Грешки во истовременоста и тајмингот се случуваат само под одредени услови; Затоа статичката анализа и вистинското тестирање во хардверот се неопходни.

Вообичаени грешки

  • Не ги штити споделените променливи. Податоците помеѓу ISR и главната јамка мора да бидат испарливи и атомски.
  • Не се потврдува адресата/бит на регистарот со лист со податоци. ВИ може да мапира погрешна варијанта.
  • Одржување на ISR долго или блокирање во него. Системот не може да одговори, прекините се пропуштаат.
  • Претпоставувајќи тајминг без мерење. Вистинското време зависи од хардверот; потврдено со осцилоскоп.
  • Се остава безбедносно/безбедносно критичен код за одобрување со вештачка интелигенција. Компетентниот инженер и соодветниот стандарден процес се од суштинско значење.

Сумирано

Во оваа единица користевте вештачка интелигенција како моќен забрзувач за генерирање на скелет на фирмверот, двигател, државна машина и скица на ISR. Но, во вградениот свет, кодот е испреплетен со хардвер, реално време и безбедност: вредностите на регистарот/бит се проверуваат од листот со податоци, истовременоста се проверува од статичка анализа, времето се проверува од осцилоскопот, однесувањето се проверува од реалното тестирање во хардверот. ВИ го испорачува скелетот за неколку минути; The engineer verifies the firmware working correctly, securely and on time. In safety-critical systems, AI output does not replace the relevant safety standard's processes and competent engineer approval.

Задача за апликација

Изберете периферен уред (на пр. I2C сензор). Со шаблонот „driver skeleton“, побарајте од вештачката интелигенција скелет на возачот што остава регистри во местата кои се наоѓаат. Then generate an ISR sketch for the data-ready interrupt from this sensor with the "ISR security" template. Finally, scan the code it produces with the "Code review" template for embedded risks and write at least three verification/testing steps.

листа за проверка

  • [ ] Ја потврдив секоја адреса и бит на регистарот од точната варијанта на листот со податоци.
  • [ ] I made the shared variables between the ISR and the main loop volatile and atomic.
  • [ ] I kept the ISR short, did not put blocking, handed over the long job to the main loop.
  • [ ] I planned to test the timing and actual behavior in hardware and with an oscilloscope.
  • [ ] Го скенирав кодот со статичка анализа и предупредувања од компајлерот.
  • [ ] Ги оставив безбедносните/безбедносно-критичните делови на одобрување на компетентен инженер и соодветниот стандарден процес.