Я работаю над встроенной системой реального времени. Я пытаюсь создать подробный анализ времени. Я собрал данные времени выполнения, записывая время начала и окончания каждого прерывания. Каждый пакет данных выглядит что-то вроде этогоАлгоритм для сборки последовательности из нескольких фрагментов
ISR# time
----- ----
1 34
end 44
4 74
3 80
end 93
end 97
...
выходной канал My имеет ограниченную пропускную способность, и моя высокая точность таймер переполняется слово очень быстро, поэтому я собираю данные в ~ 150 микросекунд всплесков, а затем стекала его в течение долгого времени , Из этих данных я смог собрать время, проведенное в каждом перехвате, и номер вызовов и предварительных ошибок.
Что я хотел бы сделать, это собрать полную последовательность выполнения для обычного кадра, длина которого составляет ~ 2 мс.
Мне кажется, что это почти как проблема секвенирования генов. У меня есть несколько тысяч фрагментов, каждая из которых покрывает 7% от общего кадра. I должен быть в состоянии выровнять их - сопоставить части, которые покрывают ту же часть кадра - таким образом, что я могу построить единую последовательность событий за весь период. Там будут некоторые изменения от кадра к кадру, но я надеюсь, что они могут быть учтены в алгоритме наилучшего соответствия.
Итак, мой вопрос: существуют ли алгоритмы для такого рода секвенирования? Существуют ли какие-либо существующие инструменты, не предназначенные для ДНК или Protiens?
Еще один угол для преследования - это сжатие записи, чтобы вы могли вместить 10x больше данных в свой журнал. Дельта-сжатие для временных меток, сворачивание адресов в индексы, использование записей переменной длины, так что «конец» может быть выражен более сжато и т. Д. –
Это неплохая идея, но она неплохо сжимается. Каждая запись использует 4 бита для ID и 12 бит для метки времени. Я могу уменьшить количество бит на печать, уменьшив разрешение таймера. Возможна доработка до 14 бит, но это создает свои собственные манипуляции с данными, отправляя их через 16-разрядный ориентированный последовательный канал. – AShelly
Я еще не совсем понимаю - вы выполняете несколько независимых прогонов, каждый вокруг 2 мс, из которых вы захватываете около 150 мс каждый раз? Является ли последовательность прерываний запущена и остановлена детерминированной (то же самое для каждого прогона) или почти так? Если да, то да, это точно так же, как сборка последовательности ДНК; если нет, я не вижу, как вы могли бы надеяться на их соответствие. –