Дальнейшее развитие идей по Embedded TDD (test driven development). Самый экономичный вариант по памяти и процу. ============ Предыдущие посты по теме ============
TDD (Test-driven Development) применительно к embedded системам: похоже, я догнал, как это должно быть устроено.
http://www.caxapa. …echo/arm.html?id=63285
http://electronix. …ex.php?showtopic=18859
Развитие идей по упрощенной отладке.
http://www.caxapa. …echo/arm.html?id=63474
http://electronix. …s=&showtopic=18859
Мультиплексированный отладочный канал
http://www.caxapa. …echo/arm.html?id=65805
============ COG, пЫтон ============
http://www.nedbatc …code/cog/index_ru.html
http://www.onembed …m/articles/cog-n-make/
http://www.onembed …og-n-make/examples.htm
"Питон для Си-программистов"
http://www.caxapa. …wwwboard.html?id=57403
http://www.caxapa. …wwwboard.html?id=57960
============ Идея ============
Отдельный файл(ы) - module_under_test() - тестируемый модуль
Пишется "протопрограмма":
include;
декларация переменных
// COG код: Variables_List
// COG код: Variables_Input
// список всех переменных, которые видны "снаружи" в процессе тестирования
// COG генерит код, который обращается к внешнему каналу
// и по нему получает значения для тех переменных, которые надо задать перед тестовым прогоном
module_under_test();
// COG код: Variables_Out
// список всех переменных, которые надо выдать "наружу" после тестирования
// COG генерит код, который обращается к внешнему каналу
// и по нему выдает значения переменных
Test suite на пЫтоне, который все это разгребает и принимает решение о прохождении или провале теста.
Далее "протопрограмма" компилится COG в сишную программу. Сборка, прошивка, тестировние, запуск - стандартными средствами.
Основной кайф состоит в том, что не надо руками выписывать код, который общается с отладочным каналом. Там все однотипно, можно сделать шаблон, и вперед! Но в отличие от универсальных тествых либ все будет работать при ограниченном объеме памяти.
http://cunit.sourceforge.net/index.html
http://check.sourceforge.net/
Все будет очень экономично по памяти по ресурсам, так что удастся впихнуть в целевой контроллер и целевую задачу, и отладочный код.
Т.е. даже для примитивных контроллеров можно устроить полностью автоматическое тестирование без участия человека.
РУЛЕЗ!!!