Проверьте библиотеку замещения кода, изучив ее структуру, замену и эффективность. Чтобы проверить структуру библиотеки, используйте средство просмотра замещения кода (crviewer). Используйте отчет о замене кода для проверки замен, выполненных библиотекой в сгенерированном коде. Еще раз используйте crviewer, чтобы проверить эффективность вашей библиотеки во время генерации кода, исследуя хит замены и пропустив журналы.
Используйте Code Replacement Viewer (crviewer), чтобы открыть и просмотреть структуру библиотеки замещения кода путем изучения ее таблиц и записей таблицы.
Из командной строки MATLAB откройте библиотеку замещения кода с помощью crviewer с командой:
>> crviewer('library')Средство просмотра открывает библиотеку замещения кода и показывает таблицы замещения кода на левой панели. Убедитесь, что библиотека перечисляет все требуемые таблицы в правильном относительном порядке.
Откройте и просмотрите записи для каждой таблицы замещения кода. В crtool щелкните каждую таблицу в списке на левой панели, чтобы просмотреть ее записи на средней панели.
Если вы не используете crviewer, можно открыть каждую таблицу непосредственно из командной строки MATLAB с помощью команды:
crviewer(table)Для каждой таблицы в библиотеке убедитесь, что в ней перечислены все требуемые значения в правильном относительном порядке. Проверьте, что концептуальное представление и представление реализации верны для каждой записи в таблице.
Используйте Отчет о замене кода, чтобы убедиться, что, когда генератор кода использует библиотеку замены кода, он создает замены, как и ожидалось в сгенерированном коде. Для каждого образца замены Отчет о замене кода обеспечивает отображение между блоком Simulink, который инициировал замену, и ее реализацией в сгенерированном коде. Используйте это отображение для проверки правильности замены кода путем трассировки между отчетом и кодом в любом направлении (от отчета к коду или кода к отчету).
Чтобы сгенерировать отчет о замене кода:
Сконфигурируйте модель, чтобы использовать библиотеку замены кода.
Сконфигурируйте модель, чтобы открыть отчет генерации кода. Отчет о замене кода является вкладкой в этом отчете. В диалоговом окне Model Configuration Parameters, на панели Code Generation > Report, выберите:
Create code generation report
Open report automatically
Model-to-code
Summarize which block triggered code replacements
Сконфигурируйте сгенерированный код для включения комментариев. В диалоговом окне Model Configuration Parameters, на панели Code Generation > Comments, выберите:
Include comments
Одно или оба из Simulink block comments и Simulink block descriptions
Создайте свою модель, чтобы сгенерировать код только. Отчет генерации кода открывается автоматически. На левой панели щелкните, чтобы открыть отчет о замене кода.
Проверьте, что замена кода происходит должным образом.
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-функций.
Следующий пример иллюстрирует два дополнительных подхода к рассмотрению замен кода:
Проверьте раздел «Отчет о замене кода» отчета о генерации кода на предмет ожидаемых замен.
Проследите замену кода.
Идентифицируйте функцию 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);
Идентифицируйте или создайте код или скрипт, чтобы реализовать функцию. Например, рассмотрите тестовый файл 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);Откройте приложение MATLAB Coder™.
На странице Select Source Files добавьте функцию к проекту. В данном примере добавьте функцию addsub_two_int16. Нажмите Next.
На странице Define Input Types используйте тестовый файл addsub_to_int16_test для автоматического определения типов входа. Нажмите Next.
На странице Check for Run-Time Issues укажите тестовый файл addsub_to_int16_test. Приложение запускает тестовый файл, заменяя вызовы на addsub_to_int16_test с вызовами на MEX версию addsub_to_int16_test. Нажмите Next.
Чтобы открыть диалоговое окно Generate, на странице Generate Code щелкните стрелу Generate.![]()
Установите Build type, чтобы сгенерировать исходный код. Прежде чем вы создадите исполняемый файл, вы хотите просмотреть ваши замены кода в сгенерированном коде.
В диалоговом окне «Генерация» нажмите кнопку More Settings.
Сконфигурируйте генератор кода, чтобы использовать библиотеку замены кода. На вкладке Custom Code установите для параметра Code replacement library имя библиотеки. В данном примере установите библиотеку равной Addition & Subtraction Examples.
Сконфигурируйте отчет генерации кода таким образом, чтобы он включал отчет о замене кода. На вкладке Debugging выберите:
Always create a code generation report
Code replacements
Automatically launch a report if one is generated
Чтобы сгенерировать код и отчет, установите Build type равным Source Code. Затем нажмите Generate.
Откройте раздел Code Replacements Report отчета о генерации кода.
В этом отчете перечислены функции замены, которые использовал генератор кода. Отчет содержит отображение между каждым образцом замены и кодом MATLAB, который инициировал замену.
Просмотрите отчет:
Проверьте, произошла ли ожидаемая замена функции и кода оператора.
В разделах «Замена» щелкните по каждой кодовой ссылке, чтобы увидеть источник, который инициировал замену отчетного кода.
Если функция или оператор не заменены должным образом, генератор кода использовал соответствие с более высоким приоритетом (значение с более низким приоритетом) или не нашел соответствие.
Чтобы анализировать и диагностировать ошибки замещения кода, используйте информацию трассировки, которую предоставляет Code Replacement Viewer.