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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> А кто как организует в своих программах контроль завершённости, транзакции обновления базы данных
Kirill Frolov
сообщение Mar 29 2008, 10:06
Сообщение #16


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

Группа: Новичок
Сообщений: 111
Регистрация: 10-02-07
Из: St.Petersburg, Russia
Пользователь №: 25 241



Цитата(Непомнящий Евгений @ Mar 29 2008, 11:47) *
см разобранный пример выше. Записи никогда не удаляю. Самая старая просто перетирается, когда надо записать новую.


5 раз смотрел, ничего не понял. Я знаю, что для кодировании информации выбора одного из N надо минимум log2(N)+1 битов. А тут ерунда какая-то. Напиши какие значения этого бита у 9 последовательных записей. (т.е. чистый флеш, записали раз, записали два...) Сколько кстати блоков флеша? Не больше 8-и? Если это работает, значит старые записи таки переписываются, хотя бы этот бит сбрасывается.


--------------------
[ZX]
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 29 2008, 10:17
Сообщение #17


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Чистая эмпирика:
1. Блоки данных с CRC16 в конце прекрасно самосинхронизируются при фиксированной длине блока.
Таким образом, достаточно отследить последний правильный кадр методом скользящего CRC.
2. При overlapping-записи в память никаких проблем не наблюдается, если длина записываемого блока нечетная (ессно, при четном размере свободного пространства памяти smile.gif, и наоборот ). Ой, поправлюсь - если размер памяти не кратен длине блока.
Судите сами - последний блок никогда не уложится в верхнюю границу, и не надо никаких дополнительных условий для того, чтобы продолжить сканировать память сначала.
Может, несколько тормознуто (всегда полное сканирование), зато без признаков искусственного интеллекта. Девайс никогда не захватит весь мир. biggrin.gif
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Mar 29 2008, 12:49
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Kirill Frolov @ Mar 29 2008, 13:06) *
Напиши какие значения этого бита у 9 последовательных записей. (т.е. чистый флеш, записали раз, записали два...) Сколько кстати блоков флеша? Не больше 8-и? Если это работает, значит старые записи таки переписываются, хотя бы этот бит сбрасывается.

Блоков ("слотов") - теоретически сколько угодно. Я обычно делаю не больше 5.

Пример (обозначение: ПS(F), где S - номер слота, F - флаг. П2(1) - пакет во втором слоте, флаг = 1)
Код
0. Начальное состояние: пусто - все слоты пусты (т.е. у каждого неверная CRC)
1. Пишем 1-й пакет: П1(1) пусто .....
2. Пишем 2-й пакет П1(1) П2(1) пусто .......
...
9. Пишем 9-й пакет: П1(1) П2(1) ......... П8(1) П9(1)
10. Пишем 10-й пакет:  П1(0) П2(1) ......... П8(1) П9(1)
11. Пишем 11-й пакет:  П1(0) П2(0) П3(1) ......... П8(1) П9(1)
...
18. Пишем 18-й пакет: П1(0) П2(0) .... П8(0) П9(0)
19. Пишем 19-й пакет: П1(1) П2(0) ..... П9(0)
и т.д.

Чтобы определить актуальный пакет, ищем первый переход 0-1 или 1-0.
Если нашли - то пакет слева от перехода и будет актуальным (случай 10 - актуален П1, 11 - П2, 19 - П1)
Если не нашли - актуален последний пакет (случаи 1-9, 18).

PS Насчет теории информации - лень доказывать, но интуитивно - для этого примера у тебя есть 9 информационных бит (частично зависимых между собой), а не 1. Причем не совсем бит - флаг может быть 1, 0 или НЕВЕРЕН (у пакета с неправильной CRC).
Т.е. получается соответствие:
1 НЕВЕРЕН ... НЕВЕРЕН = 1-й пакет
...
1 1 1 1 .. 1 = последний пакет
0 0 1 ... 1 = 2-й пакет
и т.д.
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Mar 30 2008, 14:00
Сообщение #19


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(Igor26 @ Mar 28 2008, 12:31) *
Затем дожидаемся подтверждения, что данный блок успешно "лег" в ЕЕПРОМ.
От кого? От кого "дожидаемся подтверждения"?


Цитата(Kirill Frolov @ Mar 29 2008, 14:06) *
5 раз смотрел, ничего не понял.

Аналогично.. Галиматья какая-то


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
oran-be
сообщение Mar 30 2008, 14:13
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621



А я делаю очень просто - при закатывании данных к ней пришивается поле с подписью. В этом поле хранится информация о версии и СРС32 всего блока данных - на всякий случай но, если честно, то пользоватся ей еще не пользовался. Это блок хранится в определенном месте.
Смеда данных происходит по следующему алгоритму.
1. Отправляется команда о смене данных. Контроллер на нее затирает заголовок текущих данных.
2. отправляются данные пакетами ( у меня по 128 байт - не хотелось использовать двухбайтный счетчик) При получении 4 пакетов образуется консенсус страницы и контроллер пишет ее и заодно верифицирует ( я еще заодно проверяю на идентичность - а вдруг ее не надо писать).
3. После успешной верификации отправляется новая подпись, которую контроллер пишет на известное место.
В случае облома в любом месте будет известно, что типа данных во флеше нет, либо они не валидны..
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Mar 30 2008, 14:32
Сообщение #21


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(oran-be @ Mar 30 2008, 18:13) *
В случае облома в любом месте будет известно, что типа данных во флеше нет, либо они не валидны..

А как же откат?


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Mar 31 2008, 04:28
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Дон Амброзио @ Mar 30 2008, 17:00) *
Аналогично.. Галиматья какая-то

07.gif мгм. С учетом разобранного выше примера что именно кажется тебе галиматьей?
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Mar 31 2008, 05:06
Сообщение #23


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(Непомнящий Евгений @ Mar 31 2008, 07:28) *
07.gif мгм. С учетом разобранного выше примера что именно кажется тебе галиматьей?

Извините пожалуйста... Просто я не очень разобрался как у Вас это всё работает


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post

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

 


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


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