1️⃣ В случае переполнения стека NEC V850 E1 не имеет защищённой памяти, поэтому переполнение стека невозможно точно определить.
2️⃣ Использование анализатора gstack от Green Hills Software для определения требований к максимальному размеру стека. Это статический анализатор, который вычисляет верхнюю границу размера стека, необходимого для исполняемого файла. Для ETCS-i максимально возможный размер стека составил 1688 байт. Однако этот результат имеет один недостаток: gstack не может учитывать рекурсию, как указано в руководстве пользователя, и не может работать, если в программе есть потенциальные прямые или косвенные рекурсивные вызовы, поскольку не может предсказать их.
3️⃣ В программном обеспечении ETCS-i присутствовала рекурсия, что запрещают стандарты AUTOSAR8.
4️⃣ Недостаточный уровень проверки качества кода из-за присутствия рекурсии.
5️⃣ Использование только Unit-тестирования.
6️⃣ Отсутствие контура HIL тестов.
7️⃣ Отсутствие программной документации и графов состояний системы.
Что нужно было сделать?
Конечно, мир разработки сильно изменился с тех пор, как и регуляторика. Я думаю, что и нас с вами ждёт процесс ужесточения регуляторики качества программных продуктов.
❗️Всё, что работает с людьми и может нанести вред их здоровью, должно проходить повышенные требования к качеству кода (AUTOSAR).** В современном мире гораздо проще это реализовать, а линтеры можно подключить прямо в контур тестов PR.
Важно понимать ограничения и алгоритмы работы статических анализаторов кода, таких как gstack. Не все проблемные случаи такие инструменты могут обнаружить. Необходимо уделять особое внимание возможным проблемам на уровне проектирования системы, устанавливая требования качества для разработчиков.
📎 Смотрите полный отчёт по проведённому исследованию в файле.
#IT #embedded #разработка