реклама на сайте
подробности

 
 
> Посоветуте как управлять логом в датафлеши
vesago
сообщение Jul 28 2006, 07:36
Сообщение #1


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



К меге 128 подключена датафлеш, куда с GPS приемника надо класть принятые данные. Потом по запросу выдавать их хосту. Запрос - данные с такого-то по такое-то с определенной дискретностью. Поделитесь мыслями если у кого был успешный опыт. Не могу придумать как так данные хитрос кладывать и осуществлять поиск и выборку. Писать думаю по кольцу. Записи постоянной длинны. Дату и время буду хранить в лонге. Единственное что приходит на ум - метод половинного деления. Но может как-то можно отимальнее решить проблему? Допустим делал СКУД на большое число юзеров. Там решил проблему поиска ключя применением хэширования. Здесь чего-то подобного не приходит на ум.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
beer_warrior
сообщение Jul 28 2006, 10:11
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Делал постраничную запись. В начале каждого блока заголовок с датой, номером записи, различными атрибутами. В конце обязательно CRC (запись может сбойнуть). Потом сканил заголовки, с соответствующей фильтрацией. В принципе, если ресурсы позволяют сделать в ОЗУ таблицу заголовков, на старте их вычитать, а потом извлекать из нее номер требуемого блока. Хэширование на мой взгляд заметно усложнит процедуры поиска по различным критериям (например по времени).Делать подобие FAT в первых страницах на мой взгяд чревато - их ресурс исчерпаеться намного раньше остальных.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
vesago
сообщение Jul 28 2006, 11:18
Сообщение #3


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



То есть я правильно понял, что в начале каждой страницы идет дата время? Таким образом надо, чтобы запись была выравнена. Спасибо, хорошая мысль. То есть сначала находим страницу, а потом по ней методом половинного деления допустим. Как раз у датафлеши страница чуть больше 512 байт. И в остаток в начале или в конце можно запихнуть подобную инфу. Еще у меня есть на борту fm31256 c 32к фрам, где можно эти данные хранить, но это наверное медленне будет.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 28 2006, 12:09
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Насколько я помню, DataFlash имеет функцию, которая позволяет читать любое количество данных с любого адреса. Привязка (точнее фрагментирование) на страницы нужна лишь при записи данных. Так что при чтении не нужно именно страницы искать. Если дата лежит в начале записи и каждая запись одинакового размера, то достаточно установить указатель на начало первой записи. Потом прибавляя смещение (равное размеру записи), "пробежать" по всей памяти DataFlash, сравнивая заголовки с датой.
Go to the top of the page
 
+Quote Post
Семён
сообщение Jul 28 2006, 12:20
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Если еще есть возможность изменить конструкцию посмотри в сторну памяти работающею по SPI интерфейсу. Конечно дороже, но и скорость работы с ней значительно выше.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jul 28 2006, 16:09
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Код
//--------------------------------------------------------------------------
typedef struct  
        {
        WORD                  size
        BYTE                    rec_type;    
        WORD                  net_adr;    
        DeviceType_e    dev_type;    
        SysTime        st;            
        WORD        crc;
        } LogHeader_s;      //13
//--------------------------------------------------------------------------


Это заголвок для данных получаемых с разнородных устройств.
Поиск можно делать по времени, типу источника данных, его сетевому адресу, типу записи (текущие, накпленные, кофигурационные даные, сообщения об ошибках). Удобнее писать в начало каждой новой страницы, тогда просто начинаете с 0 со смещением в размер страницы. Легко писать, но будет присутствовать фрагментация.
Можете укладывать одну за другой со смещением в size, но тогда нужно будет все время переводить абсолютный адрес в страничный.
А это достаточно морочливо и может стать источником глюков, особенно если лог закольцован.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Jul 29 2006, 13:55
Сообщение #7


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



Поиск по времени вообще должен быть без проблем. Записи-то вносятся с определенной дискретностью? Прочли первую запись, вычислили разницу в записях между временем первой и требуемой записями, перешли на запись с результирующим номером.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 02:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016