ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
1215501 Топик полностью
RxTx (14.06.2022 10:43, просмотров: 313) ответил AlexG на В проекте на ARM Cortex-M3 возникла проблемка с быстродействием (а именно с отрисовкой пользовательского интерфейса). В исходниках после нескольких лет правок все очень запущено и совершенно не очевидно, на что тратится основное время. Была мысль использовать IARовский профайлер, но он ничего не показывает. Что ему нужно шепнуть для работы?
Самый легкий способ. Неинвазивный, в программу вмешиваться не надо. 

1. Выводим аппаратный пин SWO (введенный в архитектуру ARM) на отладчик.

2. Включаем SWO в настройках отладчика и настраиваем частоты обмена SWO Clock.

(Включение SWO со стороны микроконтроллера, настройку скоростей производит обычно отладчик записью в регистры ARM блока отладки ETM Instruction Trace).

3. После этого будет доступно окно, управляющее регистрами отладочного блока.

4. Отмечаем галочкой "PC" и указываем PC Sampling и Prescaler'ом периодичность отсылки пакетов содержащих текущий выполняемый в программе адрес (мгновенный снимок PC, "PC Sample").

5. После этого заработают окна, скажем Performance Analyzer. Зная адреса и зная .elf/.map IDE вычисляет в какой именно функции чаще всего находится процессор. Это будет показано в виде дерева функций и статистики где процессор проводит больше всего времени. Надо дать программе поработать некоторое время чтобы собрать статистику.