Узнайте, как характеристики сгенерированного кода и данных RAM/ROM влияют на метрику RAM/ROM.
Сведения о модели примера и других примерах этой серии см. в разделе Подготовка модели алгоритма управления для генерации кода C.
Сгенерированный код можно оценить на основе двух основных показателей: скорости выполнения и использования памяти. В некоторых случаях улучшение одной метрики подразумевает жертвоприношение в другой метрике. Например, вы часто можете ускорить выполнение, потребляя больше памяти.
Можно далее классифицировать использование памяти как ROM (постоянное запоминающее устройство) и RAM (оперативное запоминающее устройство).
Доступ к данным из ОЗУ выполняется быстрее, чем доступ к данным из ПЗУ.
Исполняемые файлы и данные должны храниться в ПЗУ, поскольку ОЗУ не поддерживает данные между циклами питания.
Этот пример оценивает требования к памяти и разделяет использование памяти на функциональные компоненты и компоненты данных. В примере не оценивается скорость выполнения.
Эта оценка использует компилятор Freescale™ CodeWarrior ®.
Компилятор: Freescale™ CodeWarrior ®
Версия: 5.5.1.1430
Целевой процессор: Power PC 565
Как описано в разделе Создание интегрированного кода вне среды Simulink и Тестирование сгенерированного кода, созданный код может потребовать использования служебных функций. Функции утилиты несут единовременную фиксированную стоимость памяти. Из-за этих фиксированных служебных данных данные в этом примере показывают использование памяти для:
Алгоритмы: код C, генерируемый на блок-схемах Simulink ®, а также функции определения данных
Утилиты: Функции, входящие в состав библиотеки Simulink ® Coder™
Полный: Сумма как алгоритма, так и утилит
В трех оценках в этом примере используется одна и та же конфигурация сборки. Freescale™ CodeWarrior ® был настроен для минимизации использования памяти и применения всех применимых оптимизаций.
Исходные файлы: PCG_Eval_File_1.zip
Тип данных: Все двойники
Включенные данные: проект включает все данные, необходимые для построения (включая данные, объявленные как extern: pos_rqst, fbk_1, и fbk_2)
Основная функция: Модифицированная версия example_main от создания интегрированного кода вне среды Simulink
Метод вызова функции: Многократно используемые функции для контроллеров PI
Использование памяти
Function Data Algorithms 1172 bytes 549 bytes Utilities 592 bytes 40 bytes Full 1764 bytes 589 bytes
В этой конфигурации данные модели используют тип данных с плавающей запятой с одинарной точностью вместо двойной точности.
Конфигурация модели
Исходные файлы: PCG_Eval_File_2.zip
Тип данных: Все синглы
Включенные данные: проект включает все данные, необходимые для построения (включая данные, объявленные как extern: pos_rqst, fbk_1, и fbk_2)
Основная функция: Модифицированная версия example_main от создания интегрированного кода вне среды Simulink
Метод вызова функции: Многократно используемые функции для контроллеров PI
Использование памяти
Function Data Algorithms 800 bytes 308 bytes Utilities 592 bytes 40 bytes Full 1392 bytes 348 bytes
Эта конфигурация использует только 56% памяти данных из первой конфигурации: 308 байт вместо 549 байт. Эта конфигурация также использует 68% функциональной памяти: 800 байт вместо 1172 байт. Для этой системы использование одиночной точности вместо двойной не влияет на точность алгоритма управления, поэтому эту конфигурацию можно использовать для достижения более эффективного кода.
Исходные файлы: PCG_Eval_File_3.zip
Тип данных: Все синглы
Включенные данные: проект включает все данные, необходимые для построения (включая данные, объявленные как extern: pos_rqst, fbk_1, и fbk_2)
Основная функция: Модифицированная версия example_main от создания интегрированного кода вне среды Simulink
Метод вызова функции: интерфейс функции: void void таким образом, обмен данными осуществляется через глобальные переменные
Использование памяти
Function Data Algorithms 948 bytes 348 bytes Utilities 592 bytes 40 bytes Full 1540 bytes 388 bytes
Эта конфигурация потребляет больше данных и функциональной памяти, чем предыдущая конфигурация.