Jump to content

    

Как тестировать разработанную электронику и встраиваемое ПО?

С Новым, уже 2018 годом. Всех благ!

Добавлю еще от себя.

 

Мы попробовали двинуться дальше в области качества ПО.

Приобрели LDRA пакет вместе с TBManager, TBrun, LDRAcover, LDRAunit.

Данный пакет умеет увязывать требования написанные в Word или из JIRA/Polarion с кодом. А также запускать тесты прямо на железе используя JTAG.

Более подробно - презентация.

 

Возник попутно вопрос - а что вы используете для отладки кода, когда ещё железо не готово?

Отладки спаянные воедино? Может есть софтовые эмуляторы? (как например QEMU) или что-то иное? (Особенно если 60% кода копируется из проекта-в-проект, меняется только приложение)

К примеру: есть проект на FreeRTOS который конвертирует аналоговые входы используя алгоритмы в цифру и гонит по Ethernet по спец протоколам. Нужно сделать ещё пару приложений, которые основу имеют туже, но кол-во аналоговых входов другое, уровни другие, выхлодной протокол другой - но железо не готово. Как разрабатывать софт параллельно максимально абстрагируя софт от железа пока оно не готово?

Какие при этом риски?

Share this post


Link to post
Share on other sites
Как разрабатывать софт параллельно максимально абстрагируя софт от железа пока оно не готово?

Этом не просто хороший, это отличный вопрос, в нём содержится 100% ответа.

Share this post


Link to post
Share on other sites
Этом не просто хороший, это отличный вопрос, в нём содержится 100% ответа.

 

Я скорее имел ввиду - возможно кто-то знает техники, как это сделать малой кровью.

Share this post


Link to post
Share on other sites
Я скорее имел ввиду - возможно кто-то знает техники, как это сделать малой кровью.

 

Если малой кровью, то "включайте голову", ибо это самый лучший эмулятор, плюс макеты, которые никто не отменял. :rolleyes:

 

Или еще так, пока железо не готово, беру стандартные модули от прошлых разработок, делаю на них основу программы, а когда подъезжает новое железо уже окончательно правлю под него. И время экономится и без дела не сижу..

Edited by mantech

Share this post


Link to post
Share on other sites
Я скорее имел ввиду - возможно кто-то знает техники, как это сделать малой кровью.

Волшебство в программировании мало распространено

 

"включайте голову", ибо это самый лучший эмулятор

+100

Поддерживаю данного оратора :beer:

Share this post


Link to post
Share on other sites

Спасибо!

Про голову, это конечно замечательно:)

Но я хочу спросить за конкретику. Может кто-то знает хорошие техники из опыта?

Я понимаю, что нужно соблюдать баланс между стоимостью решения для тестирования/отладки без железа и производства реальных образцов. Однако время простоя тоже денег стоит.

Share this post


Link to post
Share on other sites
Спасибо!

Про голову, это конечно замечательно:)

Но я хочу спросить за конкретику. Может кто-то знает хорошие техники из опыта?

Я понимаю, что нужно соблюдать баланс между стоимостью решения для тестирования/отладки без железа и производства реальных образцов. Однако время простоя тоже денег стоит.

 

Да никто не скажет про конкретную методику, ибо ее нет таковой, чтоб конкретной. Одно дело тестировать железяку для узкого применения, например привод двигателя или контроллер передачи данных, тут тестирование просто сводится к тому, чтоб устройство работало под полной нагрузкой и не глючило или выходило из строя. Другое дело - устройства, предназначенные для работы с клиентами, например вендинговое оборудование, тут проверить его самому разработчику крайне сложно, даже работникам предприятия, в котором создается сей аппарат, ибо люди уже интуитивно знают, куда "тыкать" можно, а куда нет, поэтому тестирование такой техники возможно только "на клиентах", т.е. на торговой точке. Единственное, что должен сделать разработчик в этом случае - это грамотная система логов при сбоях.

Edited by mantech

Share this post


Link to post
Share on other sites
Да никто не скажет про конкретную методику, ибо ее нет таковой, чтоб конкретной.

Я ему уже сказал

"Волшебство в программировании мало распространено"

Share this post


Link to post
Share on other sites

Использую gmock+gtest, но как правило тестирую не всю прошивку, а отдельные модули.

Share this post


Link to post
Share on other sites

"Как разрабатывать софт параллельно максимально абстрагируя софт от железа пока оно не готово?"

Для разработки софта до появления железа применяю такие варианты:

- Если проект ASIC/FPGA и процессор есть в виде RTL, то создаются напрямую прошивки памяти и симулятся в цифровом симуляторе (аналоговая периферия моделируется в верилоге напр.)

- До появления силикона (ASIC) делается FPGA и софт заливается через дебагер (железо процессора конечно должно иметь этот дебагер)

- Использую программный эмулятор процессора + модели периферии написанные специально под платформу. Это часть аппаратного дебагера, которая вместо заливки программы в железо симулирует процессор. Такой вариант требует относительно длительного периода создания моделей периферии. Часто используется без моделей периферии.

- Абстрагирование от железа достигается например применением RTOS. Т..е доступ к периферии делается через вызов стандартных функций ОС.

Или как минимум периферийные адреса прячутся за DEFINE. Плюс пишется более-менее стандартный набор функций (напр. TimeEnable(), TimeSet(), TimeGet() итд.)

- Касаемо тестирования софта, на уровне отдельных функций пишутся тести на том-же языке и считается код кавередж. Плюс встраиваются асершены (не компилируются в финальную прошивку) для проверки того что входные данные в рендже, что произошли нужные события итп.

Создание и Тестирование софта для больших машин под Win\Unix  это отдельная тема...

Share this post


Link to post
Share on other sites

Время идёт и доработали нашу систему тестирования, моделями QEMU - особенно хорошо для Xilinx Zynq7000 & ZynqMP.

Также симуляторы иногда выручают - например Cadence Vision P6 DSP имеет неплохой симулятор.

Также ARM Fast models могут быть альтернативой.

Edited by SimpleSoft

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this