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

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

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

Используйте Code Replacement Viewer (crviewer), чтобы открыть и просмотреть структуру библиотеки замещения кода путем изучения ее таблиц и записей таблицы.

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

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

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

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

    crviewer(table)

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

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

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

Чтобы сгенерировать отчет о замене кода:

  1. Сконфигурируйте модель, чтобы использовать библиотеку замены кода.

  2. Сконфигурируйте модель, чтобы открыть отчет генерации кода. Отчет о замене кода является вкладкой в этом отчете. В диалоговом окне Model Configuration Parameters, на панели Code Generation > Report, выберите:

    • Create code generation report

    • Open report automatically

    • Model-to-code

    • Summarize which block triggered code replacements

  3. Сконфигурируйте сгенерированный код для включения комментариев. В диалоговом окне Model Configuration Parameters, на панели Code Generation > Comments, выберите:

    • Include comments

    • Одно или оба из Simulink block comments и Simulink block descriptions

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

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

    • Navigate from report to model: В отчете о замене кода щелкните каждую блок ссылку, чтобы увидеть источник, который инициировал замену.

    • Navigate from model to report: В окне модели Simulink используйте подсветку модели к коду, чтобы проследить замену кода. Щелкните правой кнопкой мыши блоки, в которых вы ожидали замены кода и выберите C/C++ Code > Navigate to C/C++ Code. Появится отчет с выделенным кодом замены.

Проверьте эффективность библиотеки

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

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

Просмотр замен кода

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

Отчет о замене кода содержит подробную информацию о функциях библиотеки замещения кода, которые генератор кода использует для замещения кода. Отчет содержит отображение между каждым образцом замены и линией MATLAB® код, который вызвал замену. Отчет Кода Replacements недоступен для сгенерированных 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. На странице Select Source Files добавьте функцию к проекту. В данном примере добавьте функцию addsub_two_int16. Нажмите Next.

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

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

  7. Чтобы открыть диалоговое окно Generate, на странице Generate Code щелкните стрелу Generate.

  8. Установите Build type, чтобы сгенерировать исходный код. Прежде чем вы создадите исполняемый файл, вы хотите просмотреть ваши замены кода в сгенерированном коде.

  9. В диалоговом окне «Генерация» нажмите кнопку More Settings.

  10. Сконфигурируйте генератор кода, чтобы использовать библиотеку замены кода. На вкладке Custom Code установите для параметра Code replacement library имя библиотеки. В данном примере установите библиотеку равной Addition & Subtraction Examples.

  11. Сконфигурируйте отчет генерации кода таким образом, чтобы он включал отчет о замене кода. На вкладке Debugging выберите:

    • Always create a code generation report

    • Code replacements

    • Automatically launch a report if one is generated

  12. Чтобы сгенерировать код и отчет, установите Build type равным Source Code. Затем нажмите Generate.

  13. Откройте раздел Code Replacements Report отчета о генерации кода.

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

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

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

    • В разделах «Замена» щелкните по каждой кодовой ссылке, чтобы увидеть источник, который инициировал замену отчетного кода.

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

Чтобы анализировать и диагностировать ошибки замещения кода, используйте информацию трассировки, которую предоставляет Code Replacement Viewer.

Похожие темы