exponenta event banner

Проверить библиотеку замены кода

Проверьте свою библиотеку замены кода, изучив ее структуру, замену и производительность. Используйте средство просмотра замены кода (crviewer) для проверки структуры библиотеки. Используйте отчет о замене кода, чтобы проверить замены, выполненные с библиотекой в созданном коде. Используйте crviewer еще раз, чтобы проверить производительность библиотеки во время создания кода, проверив попадание замены и пропуски журналов.

Проверка структуры библиотеки

Используйте средство просмотра замены кода (crviewer) для открытия и просмотра структуры библиотеки замены кода путем анализа ее таблиц и записей таблицы.

  1. В командной строке MATLAB откройте библиотеку замены кода с помощью крестоносца с помощью команды:

    >> crviewer('library')
  2. Средство просмотра открывает библиотеку замены кода и отображает ее таблицы замены кода на левой панели. Убедитесь, что в библиотеке перечислены все требуемые таблицы в правильном относительном порядке.

  3. Откройте и просмотрите записи для каждой таблицы замены кода. В crtool щелкните каждую таблицу, указанную на левой панели, чтобы просмотреть ее записи на средней панели.

    Если кривошип не используется, можно открыть каждую таблицу непосредственно из командной строки MATLAB с помощью команды:

    crviewer(table)

  4. Для каждой таблицы в библиотеке убедитесь, что в ней перечислены все необходимые записи в правильном относительном порядке. Убедитесь в правильности концептуального представления и представления реализации для каждой записи в таблице.

Проверка замены библиотеки

Используйте отчет о замене кода, чтобы проверить, что при использовании генератором кода библиотеки замены кода он создает замены, как и ожидалось в созданном коде. Для каждого экземпляра замены отчет о замене кода предоставляет сопоставление между блоком Simulink, который инициировал замену, и его реализацией в сгенерированном коде. Это сопоставление используется для проверки правильной замены кода путем трассировки между отчетом и кодом в любом направлении (от отчета к коду или от кода к отчету).

Для создания отчета о замене кода:

  1. Настройте модель для использования библиотеки замены кода.

  2. Настройте модель для открытия отчета о создании кода. Отчет о замене кода представляет собой закладку в этом отчете. В диалоговом окне «Параметры конфигурации модели» на панели «Создание кода» > «Отчет» выберите:

    • Создание отчета о создании кода

    • Открыть отчет автоматически

    • Модель-код

    • Обобщить, какие блокируемые замены кода

  3. Настройте созданный код для включения комментариев. В диалоговом окне «Параметры конфигурации модели» на панели «Создание кода» > «Комментарии» выберите:

    • Включить комментарии

    • Комментарии к блокам Simulink и описания блоков Simulink

  4. Создайте модель только для создания кода. Отчет о создании кода открывается автоматически. На левой панели щелкните, чтобы открыть отчет о замене кода.

  5. Убедитесь, что замена кода выполняется так, как ожидалось.

    • Переход от отчета к модели: В отчете о замене кода щелкните каждую ссылку блока, чтобы увидеть источник, вызвавший замену.

    • Переход от модели к отчету: в окне Модель Simulink используйте подсветку модель-код для трассировки замены кода. Щелкните правой кнопкой мыши блоки, в которых ожидалась замена кода, и выберите C/C + + Code > Перейти к C/C + + Code. Появится отчет с выделенным соответствующим кодом замены.

Проверка производительности библиотеки

Проверьте производительность библиотеки замены кода, проверив совпадения и промахи, которые произошли при создании кода с помощью библиотеки. Во время создания кода, когда генератор кода находит совпадение для замены кода из библиотеки замены кода, он регистрирует попадание в кэше совпадений. Когда он не находит совпадение замены кода, он регистрирует неудачную попытку в кэше промахов. Каждый раз при создании кода генератор кода перезаписывает свое предыдущее попадание и пропускает журналы кэша.

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

Проверка замены кода

После просмотра содержимого библиотеки и таблиц замены кода создайте код и отчет о создании кода. Убедитесь, что генератор кода заменяет код в соответствии с ожиданиями.

Отчет о замене кода содержит сведения о функциях библиотеки замены кода, используемых генератором кода для замены кода. Отчет предоставляет сопоставление между каждым экземпляром замены и строкой кода MATLAB ®, инициировавшей замену. Отчет «Замена кода» недоступен для созданных функций MEX.

Следующий пример иллюстрирует два взаимодополняющих подхода к проверке замены кода:

  • Проверьте ожидаемую замену в разделе Отчет о замене кода отчета о создании кода.

  • Замена кода трассировки.

  1. Определите функцию MATLAB, в которой предполагается замена функции или оператора. В этом примере используется функция matlabroot/toolbox/rtw/rtwdemos/crl_demo/addsub_two_int16.m.

    function [y1, y2] = addsub_two_int16(u1, u2)
    
    y1 = int16(u1 + u2);
    y2 = int16(u1 - u2);
  2. Определите или создайте код или сценарий для выполнения функции. Например, рассмотрим тестовый файл addsub_to_int16_test.m, который включает в себя следующий код:

    disp('Input')
    u1 = int16(10)
    u2 = int16(10)
    
    [y1, y2] = addsub_two_int16(u1, u2);
    
    disp('Output')
    disp('y1 =')
    disp(y1);
    disp('y2 =')
    disp(y2);
  3. Откройте приложение MATLAB Coder™.

  4. На странице «Выбор исходных файлов» добавьте функцию в проект. Для этого примера добавьте функцию addsub_two_int16. Нажмите кнопку Далее.

  5. На странице Define Input Types используйте тестовый файл. addsub_to_int16_test для автоматического определения типов ввода. Нажмите кнопку Далее.

  6. На странице Check for Run-Time Issues укажите тестовый файл. addsub_to_int16_test. Приложение запускает тестовый файл, заменяя вызовы addsub_to_int16_test с вызовами MEX версии addsub_to_int16_test. Нажмите кнопку Далее.

  7. Чтобы открыть диалоговое окно «Генерация», на странице «Генерация кода» щелкните стрелку «Генерация».

  8. Задайте тип построения для создания исходного кода. Перед созданием исполняемого файла необходимо просмотреть замены кода в созданном коде.

  9. В диалоговом окне «Создание» нажмите кнопку «Дополнительные параметры».

  10. Настройте генератор кода для использования библиотеки замены кода. На вкладке Пользовательский код (Custom Code) задайте для параметра Библиотека замены кода (Code replacement library) имя библиотеки. В этом примере задайте для библиотеки значение Addition & Subtraction Examples.

  11. Настройте отчет о создании кода таким образом, чтобы он включал отчет о замене кода. На вкладке Отладка выберите:

    • Всегда создавать отчет о создании кода

    • Замена кода

    • Автоматически запускать отчет, если он создан

  12. Чтобы создать код и отчет, задайте для параметра Тип построения значение Source Code. Затем щелкните Создать (Generate).

  13. Откройте раздел Отчет о замене кода отчета о создании кода.

    В этом отчете перечислены функции замены, используемые генератором кода. Отчет предоставляет сопоставление между каждым экземпляром замены и кодом MATLAB, инициировавшим замену.

    Просмотрите отчет:

    • Проверьте, произошла ли ожидаемая замена функции и кода оператора.

    • В разделах замены щелкните каждую ссылку кода, чтобы увидеть источник, инициировавший замену кода, о которой сообщается.

Если функция или оператор заменяются не так, как ожидалось, генератор кода использует совпадение с более высоким приоритетом (значение с более низким приоритетом) или не находит совпадение.

Для анализа и устранения ошибок при замене кода используйте данные трассировки, предоставляемые средством просмотра замены кода.

Связанные темы