•  

    Новостная рассылка

    Подпишитесь и получайте самые свежие новости.
    Подписаться на новостную рассылку
    • Главная
    • >
    • Новости
    • >
    • Новые способы проверки автоматически сгенерированного кода при помощи инструментов Simulink и Embedded Coder по стандарту DO-178

    Новые способы проверки автоматически сгенерированного кода при помощи инструментов Simulink и Embedded Coder по стандарту DO-178

    12 апреля 2012 года
    PDF версия

    Том Эркинен, MathWorks


    В примере внедрения, доступном для просмотра и скачивания, используется интегрированная среда разработки GreenHillsMULTI, операционная среда реального времени (RTOS) Integrity на базе процессора FreescaleMPC8620.


    Автоматическое создание кода на базе имитационных моделей занимает основное место в процессе модельно-ориентированного проектирования и отнимает намного меньше времени и усилий, чем процедуры кодировки вручную. Для успешного развертывания высокопроизводительных встроенных систем необходим эффективный код. Достижение необходимой эффективности невозможно без сокращения использования ресурсов памяти и значительного повышения скорости исполнения. Успешное внедрение систем военного и оборонного назначения тоже невозможно без строгой проверки кода, что подразумевает соответствие определенным требованиям и стандартам.


    В данной статье описаны методы определения эффективности кода и выполнения его проверки с помощью семейства продуктов MATLAB и Simulink версии 2011b с поддержкой инструмента Embedded Coder, позволяющего создавать коды полета. Процедуры разработки и проверки соответствуют действующему стандарту DO-178B и планируемому к выходу DO-178C, а также отвечают требованиям ожидаемого дополнения к стандарту DO-178C по разработке и проверке кода с применением моделей. Основное внимание в статье уделяется не описанию каждого инструмента и не обсуждению стандарта DO-178, а применяемым инновационным технологиям. Для описываемых инструментов проверки доступны комплекты документов и руководств.


    Оценка исходного кода


    Эффективность кода

    Эффективность кода можно оценить по двум основным показателям: использованию памяти в отношении ОЗУ, ПЗУ и размера стека; а также по количеству рабочих циклов или скорости исполнения. После генерации кода инструмент Embedded Coder создает отчет оценки кода, что помогает разработчикам программного обеспечения проанализировать работу и оптимизировать объем памяти, занимаемой созданным кодом. В отчете содержатся строки кода, определен размер глобальной ОЗУ и стека на основе статического анализа исходного кода и знания характеристик целевого оборудования (например, размеры целочисленного разряда). Анализ является статическим, поскольку в нем не учитывается кросс-компиляция и выполнение кода. Все это позволяет разработчикам быстро внести необходимые изменения в исходный код для оптимизации использования памяти. Для этого, например, можно применить другие типы данных или изменить логику модели. Однако на следующем этапе анализа и оптимизации потребуется полный набор встроенных инструментов для оценки использования встроенной памяти и времени выполнения (см. далее в разделе «Исполняемый объектный код»).

    Рис. 1. Статический отчет с показателями кода


    Проверка кода

    Проверка исходного кода во многом зависит от инспекции кода и анализа выполнения требований. Новое средство Simulink Code Inspector от компании MathWorks автоматически выполняет структурный анализ созданного исходного кода и оценивает его соответствие модели требований низкого уровня. В ходе проверки определяются соответствия между каждой строкой кода и аналогичным элементом или блоком модели. И наоборот, указанный инструмент проверяет структурное соответствие элементов модели операциям, операторам и данным в созданном коде. После этого Simulink Code Inspector создает подробный анализ возможности трассировки между моделью и кодом и в обратном направлении.


    Рис. 2. Отчет Simulink Code Inspector


    К числу дополнительных задач по проверке исходного кода относится обеспечение соответствия промышленным стандартам программирования, как, например, MISRAACAGC(«Указания по использованию MISRA-C:2004 применительно к автоматической генерации кода»). Начиная с версии R2011a, средство Embedded Coder содержит возможности для генерации кода в соответствии с требованиями стандарта MISRA-C. Для проверки кода может применяться инструментарий анализа MISRA-C. К примеру, средства проверки Polyspace позволяют провести анализ кода с учетом требований MISRA AC AGC и MISRA-C:2004. Кроме того, Polyspace помогает выявить ошибки выполнения программы, включая деление на ноль и обращение вне пределов массива. Simulink Code Inspector и инструмент Polyspace применяются для проверки кода с выполнением всех требований стандарта DO-178 A5 в отношении анализа исходного кода. Для учета таких показателей, как время исполнения в худшем случае, необходимо применение исполняемого объектного кода и других дополнительных средств и методик, описанных далее.


    Рис. 3. Спецификация требований к генерации кода стандарта MISRA-C:2004


    Оценка исполняемого объектного кода


    Эффективность кода

    В среде Simulink поддерживается функция проверки исполняемого объектного кода с профилированием на базе тестирования с программой в контуре (software-in-the-loop, SIL) и с процессором в контуре (processor-in-the-loop, PIL) Подход SIL позволяет компилировать созданный код и запускать его на главном компьютере. Это обеспечивает быструю оценку исполнения кода на базе тестовых данных, полученных от Simulink, который выступает в качестве средства тестирования. Тестирование PIL поддерживает кросс-компиляцию сгенерированного кода в исполняемый объектный код и его выполнение на реальном процессоре или на симуляторе системы команд, при этом Simulink вновь выступает в качестве средства тестирования в контуре.


    Инструмент Embedded Coder поддерживает тестирование PIL для несмонтированных плат или RTOS на любом встроенном процессоре с помощью настраиваемых API и эталонных версий. В примере внедрения, доступном для просмотра и скачивания, используется интегрированная среда разработки Green Hills MULTI, операционная среда реального времени (RTOS) Integrity на базе процессора Freescale MPC8620.


    Рис. 4. Проверка исполняемого объектного кода с помощью тестирования PIL


    В процессе тестирования PIL создается отчет профилирования кода, который позволяет выявить узкие места и оптимизировать разработанную программу. Например, для этого применяются технологии замены кода: производится замена оптимизаций с одним потоком команд и многими потоками данных (SIMD) и Integrated Performance Primitives (IPP) на сгенерированный по умолчанию код ANSI/ISO C. Среда MATLAB поддерживает создание диаграмм с данными профилирования кода для последующего анализа. В соответствии с требованием стандарта DO-178 и других сопутствующих стандартов, сложные системы управления полетом должны проходить проверку на летном оборудовании. Таким образом, метод тестирования PIL является важнейшим средством проверки для систем с высоким уровнем интеграции.


    Рис. 5. Циклы выполнения профилирования с использованием MATLAB


    Проверка кода

    В рамках модельно-ориентированного проектирования для проверки кода можно повторно использовать совокупности имитационных проверок, примененных на модели, для проведения тестирований SIL и PIL. Разработчики могут использовать те же исходные данные, которые применялись для симуляции моделей, а затем, с помощью Simulink Simulation Data Inspector, определить численное соответствие результатов симуляции и данных тестирований SIL и PIL.

    Рис. 6. Сравнение результатов симуляции и тестирования PIL с помощью SimulationDataInspector


    Помимо перечисленного, стандарт DO-178B предусматривает применение анализа структурного покрытия ПО, включая покрытие моделью условий и альтернатив (MC/DC), для оценки полноты исполнения кода во время тестирования. Подобный тип анализа, позволяющий оценить полноту исполнения модели, предоставляется средством Simulink Verification and Validation и называется Model Coverage (покрытие модели). Совместно два этих вида анализа (покрытия по кодам и моделям) выявляют возможные ошибки разработки, реализации и тестирования. Анализ покрытия по моделям выполняется средством Simulink Verification and Validation. В версии R2011b для покрытия по кодам и дополнительной поддержки последовательности операций DO-178 средство Embedded Coder интегрировано с испытательной моделью LDRA.


    Рис. 7. Измерение покрытия по моделям и кодам с помощью средства SimulinkModelCoverage и испытательной модели LDRA


    В целом, проектирование с применением моделей позволяет автоматически генерировать код, отличительной особенностью которого является высокая эффективность и простота проверки на уровне модели, исходного кода и исполняемого объектного кода. Благодаря использованию моделей и имитационных тестовых сценариев Simulink для разработки и проверок, компании могут повторно использовать модели и проверки в соответствии с требованиями программных стандартов DO-178B и DO-178C, что позволяет значительно сократить расходы и время выпуска продукции на рынок. В предлагаемые комплексные решения входят необходимые интеграции, опубликованные API, а также инструменты сторонних производителей, используемые в проектах разработки DO-178. Помимо описанных усовершенствований в процессах разработки, Simulink предоставляет дополнительные преимущества благодаря поддержке различных стандартов в области системного проектирования (например, ARP 4754), разработки аппаратных средств (DO-254) и других сопутствующих стандартов при использовании совместно с продуктами MathWorks для физического моделирования систем, программно-аппаратного тестирования (HIL) и генерации кода HDL для ППВМ (FPGA).


    ***

    29 мая 2012 г. пройдетконференция одного из ведущих мировых специалистов по сертификации, Тома Эркинена «Сертификация в авиастроении по стандартам DO-178(B,C), DO-254, KT 178 при помощи инструментов MathWorks». К бесплатному участию приглашаются системные инженеры, инженеры по встроенному ПО и руководители проектов.


    Сведения об авторе

    Том Эркинен является руководителем отдела разработки встроенных приложений в компании MathWorks. Он возглавляет направление компании, отвечающее за внедрение технологий генерации встроенного кода. До своего прихода в MathWorks, Том работал в компании Lockheed-Martin, где занимался разработкой различных алгоритмов управления и ПО реального времени, включая создание робототехнического оборудования для космических шаттлов НАСА. Свыше 15 лет Том оказывал поддержку сотням различных компаний по развертыванию проектирования с применением моделей и генерацией встроенного кода. Том Эркинен получил степень бакалавра наук в области аэрокосмической техники в Бостонском Университете и степень магистра машиностроения в Университете Санта-Клары.


    ***

    MATLAB и Simulink являются зарегистрированными торговыми марками компании TheMathWorks, Inc. С перечнем дополнительных торговых марок можно ознакомиться по адресу www.mathworks.com/trademarks. Другие наименования изделий или фирменные наименования могут быть торговыми марками или зарегистрированными торговыми марками, принадлежащими своим владельцам.