SmartPipe. Строим циклограммы.
В процессе разработки ПО для embedded систем, иногда, разработчик сталкивается с задачами анализа поведения системы такими как:
- исследования производительности;
- оценки задержек обработки внешних сигналов;
- исследования общей архитектуры системы;
- и тд.
Такая циклограмма дает много информации, полезной для анализа системы и ее оптимизации.
SmartPipe умеет собирать данные для построения циклограмм и формировать поток данных для программы OSL Logic Sniffer.
OSL Logic Sniffer — программа предназначена для работы с логическими анализаторами. Она может показывать изменения дискретных сигналов на 32-х каналах одновременно. Если эти дискретные сигналы будут представлять состояния работы функций исследуемой программы (функция выполняется — 1 / функция не выполняется -0), то мы получим циклограмму работы программы.
Принцип работы SmartPipe в режиме построения циклограммы достаточно простой, он основан на анализе логов проходящих через устройство. Если пользователь в коде программы добавит вывод уникальных логов при входе и выходе из функции, то при прохождении этих логов через SmartPipe, они будут опознаны и будет сформирована команда установки 0 или 1 в канале данных, зарезервированном для этой функции.
После этого поток каналов данных будет перенаправлен в один из портов SmartPipe. Подключив к порту терминальную программу и настроив ее на запись данных в файл, пользователь получает набор данных, который может быть загружен в OSL Logic Sniffer для анализа.
Таким образом подготовка к получению циклограммы от тестируемого устройства имеет два этапа:
Этап 1. Добавление логов на вход и выход функций.
Строка лога может быть любой.Например:
- [12:03:45.234987] Main() --:start
- [12:03:46.234987] Main() --:stop
Этап 2. Добавление SmartPipe правил.
В SmartPipe необходимо добавить правила для поиска логов функций из Этапа 1 в потоке логов.Правила составляются стандартным для SmartPipe способом (см. статью SmartPipe.Правила.). При «срабатывании» правила должна быть выполнена специальная OLS команда.
Таких команд три:
olsstart <порт> <количество каналов> <типа time дампа>; — команда настойки и начала записи циклограммы;
olsstop; — команда остановки записи логов (вызывается автоматически при переходе в COMMAND MODE (см. статью SmartPipe.Настройка.) )
olsrun <номер канала> <0/1>; — устанавливает/сбрасывает переменную канала данных.
Примеры правил:
- :*Main*start;; olsstart com2 6 2; — правило начала записи циклограммы со строки лога, содержащей подстроку Main и заканчивающийся подстрокой start. Данные будут выводиться в virtual COM2. При этом будет производиться запись в 6 каналов и будет распознаваться time дамп вида: [HH:MM:SS.uuuuuu]
- :*Init*start;; olsrun 1 1; — правило установки переменной канала 1 в единицу для строки лога, содержащей подстроку Init и заканчивающийся подстрокой start.
- :*Init*stop;; olsrun 1 0; — правило сброса переменной канала 1 в ноль для строки лога, содержащей подстроку Init и заканчивающийся подстрокой stop.
- :*Main*stop;; olsstop; — правило остановки записи циклограммы со строки лога, содержащей подстроку Main и заканчивающийся подстрокой stop.
0 комментариев