То В этом примере показано, как использовать блок Log Event, вставляет пользовательское событие в выполнение, профилирующее поток событий. Для получения дополнительной информации о профилировании выполнения, смотрите, что Выполнение Профилирует для Приложений реального времени.
Чтобы открыть модель, в командном окне MATLAB, введите:
open_system(fullfile(matlabroot,'toolbox','slrealtime','examples','slrt_ex_log_event'));
mdl = 'slrt_ex_log_event'; mdlOpened = 0; systems = find_system('type', 'block_diagram'); if ~any(strcmp(mdl, systems)) mdlOpened = 1; open_system(fullfile(matlabroot,'toolbox','slrealtime','examples',mdl)); end
Откройте диалоговое окно Configuration Parameters. Выберите Code Generation> Verification.
В течение времен выполнения функции Меры выберите Detailed (все сайты вызова функции). Флажок времени выполнения задачи Меры проверяется и блокируется. Нажать ОК.
Или в окне команды MATLAB введите:
set_param('slrt_ex_log_event','CodeProfilingInstrumentation','Detailed');
Создайте модель и загрузите на целевой компьютер.
evalc('slbuild(mdl)');
tg = slrealtime;
load(tg,mdl);
Запустите профилировщик и затем выполните приложение реального времени.
startProfiler(tg); start(tg); pause(20) stopProfiler(tg); stop(tg);
Warning: Profiler already stopped. Command ignored.
Получите данные Профилировщика. Отобразите пользовательское событие в таблице.
profiler_data = getProfilerData(tg); profiler_data.EventTrace.etData
Processing data on target computer ... Transferring data from target computer ... Processing data on host computer ... ans = 2×6 table Channel Timestamp Event Value CPU ModelTime _______ ________________ _____ _____ ___ _________ 500 3545275820041720 200 200 1 2 1000 3545280320044224 100 700 1 6.5
График Профиля Выполнения показывает выделение циклов выполнения через эти четыре процессора, обозначенные цветными горизонтальными планками. Разделы модели перечислены в Отчете Профилирования Выполнения кода. Ядра обозначаются числами под панелями.
Закройте модель, если она открыта.
if (mdlOpened) bdclose(mdl); end