Я хочу понять код прошивки, управляемой событиями.Прошивка состоит из многих модулей, и я могу понять интерфейсы, предоставляемые ими.
Прошивка работает посредством косвенных вызовов функций и событий.Всякий раз, когда происходит событие (например, прерывание или сообщение, отправленное в очередь другим модулем), обработчик события публикует сообщение в очереди.Сообщение содержит указатель функции на фактический обработчик для этого события и другие соответствующие данные для запуска обработчика.Обработчик событий может снова вызывать другие события, используя механизм, описанный выше.
Основной код просто проверяет события в связанных очередях и выполняет их (путем запуска косвенных вызовов функций).Существуют разные очереди только для обработки событий с различным приоритетом.
Как лучше понять и проанализировать этот код?Мне нужно понимать этот код, чтобы добавлять новые функции и исправлять существующие ошибки.
Есть ли способ генерировать граф вызовов программы в этом сценарии?Код написан на C.
Как лучше всего документировать поведение этой прошивки?