Я бы порекомендовал от вечных шлюх последнего времени (многопроцессорности) удалиться, тогда реализация мьютекса будет одной командой -- запрещение/разрешение прерываний, которая обычно выносится в интринсики производителем. Вряд ли при запрещённом прерывании сможет случиться нечто, которое переключит задачи и внесёт сумятицу в процесс инкремента указателя, в котором обычно "собака роется". Упоминание "SPIEEPROM" у ТС говорит о достаточной медлительности самой операции записи, так что разбить исходную структуру на байты или хотя бы short-ы будет нестрашно. Хотя в идеале -- захочется несколько типов данных пихать рано или поздно, тогда в "систему" "прирастёт" длина "пакета", его "тип", время его "случения", где-то рядом с кольцевым буфером надо будет хранить его текущие позиции "начала" и "конца"... Короче, получится настоящая трассировка всего, чего "приспичит" отладить "вживую", а потом "выгрузиться" в удобной форме... Эта тема очень объёмная в идеале, даже если не трогать "настоящих шлюх", а для них легче тогда устроить отдельные ЦБ для каждого ядра, потом сливать... Лучше бы "EEPROM" делать в конце всего исполнения -- когда "усё пропало", а до того складироваться в ОЗУ -- оно обычно быстрее. Ну и если опереции "EEPROM" нереентерабельные -- их тоже придётся под мьютекс затягивать.
|