Fla sh память используется для регистрации кадра: данные $ D, ошибка $ E и отчет $ R и еще немного. Каждый кадр имеет метку времени после типа кадра: $ D, Метка времени ......... $ E. Все данные в шестнадцатеричном формате и переменной длины, ie 0 = 0, 1587912486 = 5EA59F26, это не фиксированная длина кадра. Отметка времени - UDT1970.
Примечание: в Fla sh каждая страница имеет размер 256 байт.
До сих пор я начинал с центральной страницы между начальной и конечной страницами, где на этой странице он ищет (с помощью совпадения $ D) ) и считывает метку времени (читая fla sh byte byte byte в массив до тех пор, пока не будет обнаружено ',') в начале каждой страницы. если временная метка меньше или превышает целевую временную метку, она переходит на следующую половину номера страницы (шаг) и повторяется до тех пор, пока шаг не переходит к 1. Затем я возвращаюсь на одну страницу назад и выполняю байтовый поиск для временной метки вверх, пока не будет найдено фактическое соответствие. Это два процесса: поиск с переходом по страницам и затем побайтовый поиск.
Мне любопытно, существует ли подобный алгоритм с указанным именем c или более лучший алгоритм, оптимизированный для поиска в памяти Fla sh. NB. У меня есть ограничение в использовании SRAM, ie передача в большой буфер невозможна.