|
как тестировать программу микроконтроллера |
|
|
|
Nov 26 2013, 12:00
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 13-04-10
Пользователь №: 56 623

|
Собственно вопрос - пишу программу для микроконтроллера STM32, но как проверить все ли правильно работает? Как автоматизировать и симулировать проверку всех заявленных функций контроллера? Я почему спрашиваю, я долго работал с ПЛИСами и там с этим делом было более менее все понятно. В ПЛИС сам проект описывается на Verilog, потом к нему дописывается Testbench - это вторая программа на том же Verilog, которая симулирует все внешние воздействия / сигналы на микросхему. Так же, Testbench контролирует, что разрабатываемая микросхема выдает правильные отклики и вообще правильные последовательности сигналов. Таким образом, с помощью Verilog можно абсолютно точно посмотреть что и как происходит внутри любого блока проекта. Я так даже симулировал от начала до конца запуск ядра Linux в ПЛИС и просматривал сигналы обращения к SDRAM, и прочие.. А как все это делается с микроконтроллерами? И делается ли вообще? В принципе, я понимаю, можно использовать статический анализ с инструментами типа cppcheck, или писать Unit Test, но кажется мне это все не совсем то, что нужно.. Ну вот какой unit test можно написать для обработчика прерываний или функции ининциализации контроллера DMA? А если у меня контроллер управляет медленными процессами типа включил вентилятор, выждал 10 секунд, включил печку.. Как тестировать такие функции устройства? Возможно тема обсуждалась, извините если так, не нашел поиском.
|
|
|
|
|
 |
Ответов
|
Nov 27 2013, 13:04
|
Частый гость
 
Группа: Участник
Сообщений: 112
Регистрация: 10-10-13
Пользователь №: 78 684

|
Ну не знаю, у меня вопрос в отладке микроконтроллеров всегда решался довольно просто и топорно. Берем подпрограмму, запускаем ее по циклу на длительное время и долбим снаружи всеми возможными данными, которая она обязана сожрать. Если зависла, вылетела, отожрала память, порушился стек, разбираемся. Не вылетела, идем к следующему модулю. Отличие от ПЛИС, у микроконтроллеров в том, на мой взгляд, что они с одной стороны более "тянучие" на баги, то есть влетает он в баг легко, но и вылетает также легко. А вот ПЛИС, влетае в баг тяжело, благодаря жесткой симуляции, но уж если влетела, вытащить очень трудно. ТС могу повторить то, что тут уже озвучил сам ТС. Отлаживайте по кускам. Если подпрограмма не зависает от данных в тестовом модуле, она не зависнет и в связке с остальными устройствами. Микроконтроллеры скорее страдают от аппаратных чудес, которые устраивают им разработчики. Кривые клоки, плохое питание, порушенные входные сигналы, испорченные уровни и так далее. Соответственно микропроцессор зависает в 99% случаев не то того, что программа плохо написана, а от того, например, что разработчики забыли подтянуть выводы JTAG и вообще бросили их как попало, ну и там кондесаторы на питанию поставили не те и не там. Вот и начинается поле чудес...
Про ОСь, как необходимый инструмент в отладке на мой взгляд чушь конкретная. Имеет смысл только в пределах данной конкретной темы. Ось отдельно, отладка отдельно. На мой взгляд опять же, ось как существо жрущее несравнимо больше ресурсов менее надежна, чем более простая самописная программа. Но это уже другая тема...
Сообщение отредактировал lekintr - Nov 27 2013, 13:06
|
|
|
|
|
Nov 27 2013, 14:22
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(lekintr @ Nov 27 2013, 15:04)  Если подпрограмма не зависает от данных в тестовом модуле, она не зависнет и в связке с остальными устройствами. Вот это одно из главных заблуждений, скажем так, не очень опытных, из-за которого их тянет симулировать, юнит-тестить и заниматься прочими бесполезными делами. Глючная программа в 99% случаев изменяет свое поведение при переносе на целевую платформу, целевой компилятор и целевую область памяти. Цитата(lekintr @ Nov 27 2013, 15:04)  Про ОСь, как необходимый инструмент в отладке на мой взгляд чушь конкретная. Имеет смысл только в пределах данной конкретной темы. Ось отдельно, отладка отдельно. На мой взгляд опять же, ось как существо жрущее несравнимо больше ресурсов менее надежна, чем более простая самописная программа. Но это уже другая тема... Здесь искажен смысл первоначальной мысли. Ось (вернее RTOS) предлагалась как единственный надежный носитель таких сервисов как логи, сохранение логов, апгрейда, перехвата исключений, контроля загруженности процессора и проч.
|
|
|
|
Сообщений в этой теме
nckkm как тестировать программу микроконтроллера Nov 26 2013, 12:00 Falkon_99 вопрос почти риторический и многогранный, для этог... Nov 26 2013, 12:08 Tahoe Цитата(nckkm @ Nov 26 2013, 16:00) В ПЛИС... Nov 26 2013, 13:26 HardEgor Цитата(nckkm @ Nov 26 2013, 19:00) Собств... Nov 26 2013, 14:58 mempfis_ Цитата(nckkm @ Nov 26 2013, 15:00) Собств... Nov 26 2013, 16:01 nckkm Цитата(mempfis_ @ Nov 26 2013, 19:01) Про... Nov 26 2013, 17:51  scifi Цитата(nckkm @ Nov 26 2013, 21:51) Вот эт... Nov 26 2013, 18:14  AlexandrY Цитата(nckkm @ Nov 26 2013, 19:51) Чисто ... Nov 26 2013, 22:04   Golikov A. Цитата(AlexandrY @ Nov 27 2013, 02:04) Ны... Nov 27 2013, 05:10    AlexandrY Цитата(Golikov A. @ Nov 27 2013, 07:10) т... Nov 27 2013, 06:29 Aner Для профессиональных разработок на процах пишутся ... Nov 26 2013, 17:33 Golikov A. Ну в целом покрыть всю программу тестовыми модулям... Nov 26 2013, 20:10 Aner AlexandrY думаю вы напугали теоретиков и им подобн... Nov 27 2013, 09:12 AlexandrY Цитата(Aner @ Nov 27 2013, 11:12) Но все ... Nov 27 2013, 12:02  Lagman Цитата(AlexandrY @ Nov 27 2013, 16:02) То... Nov 27 2013, 13:30  lekintr Все это не менее надежно можно написать и без RTOS... Nov 27 2013, 14:56   AlexandrY Цитата(lekintr @ Nov 27 2013, 16:56) Все ... Nov 27 2013, 15:46 Golikov A. ОСЬ не панацея ни разу. Куча программ без операцио... Nov 27 2013, 15:57 ViKo Вот Cppcheck - буквально сегодня набрел. Не тестир... Nov 27 2013, 17:05
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|