Узнать, как характеристики сгенерированного кода и данных RAM/ROM влияют на метрику RAM/ROM.
Для получения информации о модели в качестве примера и других примерах в этом ряду, смотрите, Генерируют код С от Алгоритма управления для Встраиваемой системы.
Можно оценить сгенерированный код на основе двух первичных метрик: скорость выполнения и использование памяти. В некоторых случаях улучшение одной метрики подразумевает жертву в другой метрике. Например, можно часто получать более быстрое выполнение путем потребления большей памяти.
Можно далее классифицировать использование памяти как ROM (постоянная память) и RAM (оперативная память).
Доступ к данным из RAM быстрее, чем доступ к данным из ROM.
Исполняемые файлы и данные должны храниться на ROM, потому что RAM не поддерживает данные между, подвергает циклу включения и выключения питания.
Этот пример оценивает требования к памяти и делит использование памяти на компоненты данных и функцию. Пример не оценивает скорость выполнения.
Эта оценка использует компилятор Freescale™ CodeWarrior®.
Компилятор: Freescale™ CodeWarrior®
Версия: 5.5.1.1430
Целевой процессор: степень PC 565
Как описано в Сборке Интегрированный Код Вне Сгенерированного кода окружения Simulink и Теста, сгенерированный код может потребовать использования служебных функций. Служебные функции несут однократные, фиксированные расходы памяти. Из-за этих фиксированных издержек, данные в этом примере показывают использование памяти для:
Алгоритмы: код С сгенерирован из блок-схем 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 байтов вместо 1 172 байтов. Для этой системы, с помощью одинарной точности вместо двойной точности не влияет на точность алгоритма управления, таким образом, можно использовать эту настройку, чтобы достигнуть более эффективного кода.
Исходные файлы: 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
Эта настройка использует больше данных и функциональной памяти, чем предыдущая настройка.