Я пытаюсь измерить время выполнения различных функций моего кода (написанного на C), чтобы определить узкое место.Да, я смог сделать это с помощью операторов печати, но я бы предпочел использовать осциллограф для экономии ресурсов, поскольку это проект обработки в реальном времени.(Я понимаю, что Rpi не идеально подходит для таких целей).
Язык кода: C
Операционная система: Raspbian GNU / Linux 9 (stretch)
Ядро: Linux 4.9.80-v7 +
Архитектура: arm
Проблема: до использования вывода GPIO для синхронизации код работает правильно и обновляет все необходимые переменные с каждой итерацией и дает ожидаемые результаты.Однако, как только я введу ПИН-код для синхронизации итерации кода, все остальные выходные данные консоли начнут выдавать фиктивные номера.
Я не уверен, как это диагностировать / отладить, так как я не получаю никаких сообщений об ошибках.
Мой метод настройки PIN-кода:
код вне функции:
#define TIME_ITERATION RPI_GPIO_P1_05 //
#define TIME_ITERATION_1() bcm2835_gpio_write(TIME_ITERATION, HIGH)
#define TIME_ITERATION_0() bcm2835_gpio_write(TIME_ITERATION, LOW)
код внутри функции:
// SETUP THE PIN TO BE AN OUTPUT
bcm2835_gpio_fsel(TIME_ITERATION, BCM2835_GPIO_FSEL_OUTP);
// SET PIN HIGH
TIME_ITERATION_1();
...
<body of function>
...
// SET PIN LOW
TIME_ITERATION_0();
Полный скрипточень длинный, поэтому я решил опубликовать этот отрывок, показывающий логический поток.Таким образом, по сути, вывод устанавливается как выход, а затем переключается на ВЫСОКИЙ в начале функции и НИЗКИЙ в конце.Как указано в названии, я использую библиотеку BCM2835.
Я ценю ваше время и ваш вклад.