- 1. Розробка вимоги до продукту
- 2. Проектування системи та розробка алгоритму
- 3. Кодування вбудованої прошивки
- Тестування вбудованого програмного забезпечення
Розробка програмного забезпечення, як правило, важка, але для вбудованої системи це на абсолютно новому рівні складності. Розробники прошивки повинні добре знати про розробку апаратного забезпечення та розуміти внутрішню роботу вбудованого процесора. У сьогоднішній статті я поділюсь інструментами та порадами, які можуть бути використані для досягнення високого рівня ефективності та усунення деяких речей, які роблять розробку мікропрограми нудною.
Розробка вбудованого програмного забезпечення проходить аналогічний процес розробки із "звичайною" розробкою програмного забезпечення. Незалежно від прийнятої моделі розробки / управління, розробка вбудованого програмного забезпечення, як правило, передбачає наступні кроки:
- Розробка вимоги до товару
- Проектування системи та розробка алгоритму
- Кодування
- Тестування
Ми розглянемо деякі труднощі, які виникають на цих етапах, та деякі інструменти, які можуть підвищити ефективність та продуктивність.
1. Розробка вимоги до продукту
Специфікації виробів часто робляться з урахуванням дизайнерів дощок. Зазвичай він містить мало інформації, яка може допомогти розробці мікропрограми. Таким чином, розробник вбудованого програмного забезпечення закінчується дефектним 250-сторінковим (середнім) документом, який не можна використовувати для посилань, і якщо його не ретельно розглянути, це може легко призвести до недоліків у дизайні, що, в свою чергу,, призведе до подовження часових рамок проекту, якщо не загальної невдачі проекту. Документи рідко містять інформацію про регістри або їх бітові полякрім усього іншого, це коштує розробникам прошивок декількох годин роботи, коли вони шукають у документі, щоб визначити такі речі, як який регістр належить до якої групи, а яке бітове поле до якого реєстру. Нижче наведено кілька порад, які можна розглянути, щоб забезпечити розробку більш корисних документів щодо специфікації проекту.
Використання описів реєстрів
Як обговорювалося вище, розробники мікропрограми повинні розуміти тонкощі всіх реєстрів, пам’яті тощо всіх елементів управління (ЦП, MCU тощо) у проекті, щоб мати змогу ефективно керувати всіма частинами системи. Щоб це встановити, розробники мікропрограми можуть забезпечити, щоб у документі специфікації був належний опис регістрів разом із картами пам'яті. Всім регістрам в елементі керування може бути присвоєно відмінне ім'я, що полегшує їх ідентифікацію в документі, і всі вони можуть бути гарячими зв’язками, так що вони ведуть до списку в документі, де вказується назва, місцезнаходження, блок та адреса кожен реєстр.
Описи завдань
Інший спосіб, за допомогою якого специфікаційні документи можуть бути корисними для розробників вбудованого програмного забезпечення, - це опис того, що повинен робити кожен блок, і як він повинен це робити. Також на цьому етапі повинні бути плани обробки помилок під кожним блоком. По суті, це виглядає так, як каже розробник мікропрограми; “Коли я потрапляю сюди, я маю робити те, те і те, забезпечуючи те, що і те, і те не відбувається”. Це допомагає керувати роботою розробника та допомагає оцінити проект ще до початку проекту, щоб виявити потенційні помилки та помилки, заощаджуючи дорогоцінний час та гроші.
Є й інші фактори, включаючи структуру документа, використання шрифтів, які легко читати (з якими розробники можуть працювати, навіть перевтомлюючись), діаграми та зображення, де це можливо, що може збільшити ефективність команди прошивки після цього етапу.
2. Проектування системи та розробка алгоритму
Цей етап передбачає розробку псевдокодів, блок-схем, автоматів та всього, що пов'язано з розробкою мікропрограми. На цьому етапі можна використати досить багато інструментів, які допоможуть упорядкувати думки, дослідити застаріле / раніше написане програмне забезпечення навколо проекту та розробити власну блок-схему, автомат стану тощо. Деякі з цих інструментів розглядаються нижче.
PIM
На цьому етапі розробки продукту розробники, як правило, багато пишуть, збираючи ресурси в проекті від веб-посилань до формул тощо. Одним з найкращих способів відстеження цієї інформації, щоб вона була корисна пізніше, є використання PIM (інструменти управління інформацією про товар). Існує досить велика кількість PIM, але я згадаю декілька з них, які мають видатні особливості.
1. Evernote
Evernote допомагає робити нотатки, доступні на будь-якій платформі, щоб ви могли перевірити нотатку, яку зробили на своєму ПК, перебуваючи в автобусі додому. Нотатки добре організовані та є цілком доступними для пошуку, тому ви завжди знайдете те, що вам потрібно.
2. TrunkNote
Магістральна нотатка - це додаток для створення нотаток, схожий на Wiki. Це приносить всю організаційну силу вікі до записів. Це програма на базі мобільного телефону, але її можна легко синхронізувати з ПК через WIFI.
Інші види PIM, такі як Tiddlywiki тощо. Кожен із них має функції, які можуть зробити його більш привабливим для конкретних людей і можуть взяти вибірку, перш ніж ви нарешті зупинитесь на одному.
Розуміння Кодексу спадщини
Ще однією групою інструментів, дуже корисних на етапі проектування, є інструменти для розуміння застарілих кодів. У ситуаціях, коли продукт, що розробляється, є вдосконаленою версією попереднього продукту, розробник може виявити корисним переглянути вже виконану роботу, щоб отримати деякі ідеї та, можливо, шматочки коду для цього нового проекту. Це може бути досить довгий шлях, особливо якщо ви не були частиною команди, яка створила попереднє програмне забезпечення. Існує досить багато програмного забезпечення, яке допомагає створювати дерева, створювати документацію та блок-схеми з уже написаного коду.
1. Кисень
Doxygen - це досить потужний інструмент, який допомагає створювати документацію із вихідних кодів. Він в основному був розроблений для роботи з C ++, але також працює з C, Python та деякими іншими мовами. Він має можливість витягувати структуру коду будь-якого коду, забезпечуючи автоматично згенеровані графіки залежностей та діаграми успадкування, які допомагають візуалізувати код.
2. Графівіз
За даними їх веб-сайту, graphviz допомагає подавати структурну інформацію як схеми абстрактних графіків та мереж. Його можна використовувати поряд із Doxygen для кращого розуміння графіки, виробленої ним.
3. Срекорд
Srecord - це потужний інструмент для обробки зображень прошивки та перетворення між різними форматами файлів. За допомогою нього можна обчислювати та робити CRC та контрольні суми на байтових блоках, виправляти файли помилок, створені внаслідок помилок, та фільтрувати або переміщувати розділи файлів серед іншого. Більше інформації про його використання можна знайти на його сторінці SourceForge.
Деякі інші інструменти, які підпадають під цю категорію, - це CrystalRev та Hexplorer серед інших.
Розробка алгоритмів
Усі сукупні дослідження та конспектування для розробки алгоритмів, що виділяються в псевдокоди та блок-схеми для проекту. Існує кілька інструментів для розробки блок-схем, і хоча більшість з них не є виключно розробкою мікропрограми, вони надають корисні та важливі функції, які просто роблять роботу, а також допомагають підтримувати діаграми протягом усього циклу розробки продукту. Нижче наведено деякі найкращі інструменти для блок-схеми.
1. QFSM
QFSM - графічний інструмент для проектування та моделювання кінцевих автоматів. Його здатність імітувати конструкції робить його набагато кращим, ніж більшість іншого програмного забезпечення цієї групи. Це особливо корисно при розробці автоматів для ПЛІС та подібного цільового обладнання.
2. Ясна діаграма
Ясна діаграма - це, мабуть, найкраще та найгнучкіше програмне забезпечення для побудови діаграм. Він заснований на Інтернеті та має командні функції, які дозволяють працювати між кількома пристроями та співпрацювати в режимі реального часу з товаришами по команді.
3. Microsoft Visio
Visio - один із найкращих графічних інструментів на даний момент. Він має масив об’єктів з різних полів, що дозволяє легко описати що-небудь. Однак він не має функцій, що покращують співпрацю між командами, і його можна використовувати лише на машині Windows, на якій він встановлений.
4. Google Презентації
Однією з ключових речей у розробці продуктів у сучасному світі є використання інструментів, які дозволяють командам ефективно співпрацювати, де б вони не знаходились, і це одне, що Google слайди вносять на борт. Він може бути використаний для розробки всіх видів діаграм - від блок-схем програмного забезпечення до організаційних діаграм та розумових карт. Він заснований на хмарі та працює майже у всіх популярних браузерах.
Існує кілька інших інструментів для створення блок-схем та загальної розробки алгоритму, як зазвичай, кожен із своїх плюсів і мінусів.
3. Кодування вбудованої прошивки
Все, що було згадано до цього моменту, веде сюди. Світ SDK та IDE, вибір інструментів на цьому етапі залежить від цільового пристрою та функцій, що вбудовуються в пристрій, з цієї причини я виключу з обговорення популярні SDK та IDE, такі як MPLAB тощо, і просто дотримуюся до інструментів, які більше доповнюють один одного за своєю суттю.
1. QT (розробка графічного інтерфейсу)
Дисплеї (інтерактивні чи ні) є найпопулярнішими засобами для забезпечення зворотного зв'язку з користувачами в наші дні, і SDK QT є одним з найкращих, і, мабуть, не чужий для когось із вбудованого кола. Він надає функції "перетягування", які спрощують розробку складних програм на основі графічного інтерфейсу для вбудованих пристроїв, незалежно від цільової платформи або мови програмування, що використовується для загальної розробки проекту. Це в основному усуває стрес, пов’язаний із використанням коду для створення користувацьких інтерфейсів.
2. (Швидке створення прототипів)
Одним з найбільших вузьких місць у розробці вбудованого програмного забезпечення є той факт, що апаратне забезпечення, як правило, недоступне для перевірки речей на ходу під час розробки програмного забезпечення. Часто, коли вона доступна, розробникам прошивки доводиться чекати весь час, поки знадобиться апаратне забезпечення, яке робить мало або нічого. Це збільшує час виконання і не створює місця для такої синхронізації між апаратними інженерами та розробниками мікропрограми, яка могла б підвищити якість продукту. Щоб допомогти вирішити цю проблему, хлопці з VaST створили платформу віртуального прототипу на рівні електронних систем, яка може бути використана для створення віртуального апаратного прототипу на якому може бути виконано вбудоване програмне забезпечення для визначення продуктивності систем до того, як обладнання буде готове.
3. Кисень (документація)
Однією з найважливіших частин написання будь-якого коду є документація і одним з найпопулярніших інструментів для цього є Doxygen. Окрім використання його для розуміння застарілого програмного забезпечення, Doxygen має можливість автоматично витягувати коментарі з коду та створювати документацію, яка включає його. Кисневі структури містять файли графічно і створюють посилання на кожну функцію, змінну та макрос, що використовуються у коді. Блок-схеми та схеми потоків даних також можуть бути вбудовані в документацію, комбінуючи Doxygen з graphviz.
4. GIT (системи контролю версій)
Важко повірити, що хтось розробляє програмне забезпечення будь-якого типу без якоїсь системи контролю версій в наші дні, але на всякий випадок, це досить погана ідея, яка може призвести до помилок, які будуть коштувати вам часу та грошей. Git виділяється серед усіх інструментів контролю версій з кількох причин. Це відкритий код, швидкий, ефективний і переважно локальний. Asides Git, такі інструменти, як диверсія, також варто згадати.
Тестування вбудованого програмного забезпечення
Тестування є важливою частиною процесу розробки будь-чого. Фірми втрачають тисячі доларів при відкликанні пристроїв через помилки вбудованого програмного забезпечення, тому це одна частина розробки, до якої слід поставитися дуже серйозно. Це часто робиться, рука об руку, з кодуванням і перший набір інструментів для тестування коду, ймовірно, є налагоджувачами в IDE або SDK, що використовуються для проекту. Випробування проводяться у різних формах і проводяться на різних етапах, тому як такі, вони включають різноманітні інструменти. Засоби тестування формують розробки мікропрограмного забезпечення, від перевірки дизайну до статичного аналізу та інструментів тестування середовища виконання. Нижче наведено кілька інструментів, які я вважаю справді корисними.
1. Кристал REV
Crystal revs - це інструмент для вивчення коду. Він може бути використаний для генерації блок-схеми з коду C / C ++, що робить його чудовим інструментом для перегляду власного коду та з’ясування того, чи реалізовано попередній проект. Завдяки кристалу rev ви зможете швидко побачити різницю між дизайном та реалізацією. Його здатність генерувати блок-схеми, дані та потік викликів з кодів також робить його інструментом, корисним для аналізу застарілого коду.
2. ПК - Lint
PC-lint - один із найстаріших інструментів тестування мікропрограми. Він здатний аналізувати програмне забезпечення для виявлення помилок, вразливостей системи безпеки та забезпечення написання коду відповідно до галузевих стандартів. Подібні інструменти включають поліпростір та LRDA, баклажани та Тессі серед інших.
3. Wireshark
Це стане в нагоді при побудові мережевих пристроїв. Це, по суті, пакетний снифер і може допомогти переглянути дані, які передає ваш пристрій. Це може допомогти у захисті пристрою.
4. Драйвер віртуального послідовного порту
Програмне забезпечення VSPD від eltima - це інструмент, який я нещодавно також представив друг. Це дуже зручно при роботі з драйверами пристроїв та іншими розробками, пов'язаними з портами. Віртуальний послідовний com-порт дає можливість перевірити поведінку com-портів без цільового пристрою. Ви можете створити необмежену кількість портів, який може емулювати всі налаштування реальних портів. Програмне забезпечення також постачається з такими функціями, як поділ послідовних портів, злиття портів Com, використання з’єднань com-портів в комплекті серед інших цікавих функцій.
Ось і все для цієї статті, дякую, що знайшли час для читання. Незважаючи на те, що перерахувати всі наявні інструменти неможливо, я сподіваюся, вам знадобляться деякі з цих інструментів.