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

 
 
 
Reply to this topicStart new topic
> Кольцевая организация памяти в DataFlash
Tcom
сообщение Feb 4 2010, 13:29
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



День добрый!!
Нужно доработать свой прибор который считывает температуру и др. параметры, кольцевой(после полной записи памяти, запись начиналась сначала) памятью.
Вопрос в самой организации, где хранить указатель на последний записанный адрес, что нужно предусмотреть и так далее.
Кто делал расскажите или может есть пример в исходниках.
Спасибо.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 4 2010, 13:42
Сообщение #2


Гуру
******

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



Цитата(Tcom @ Feb 4 2010, 16:29) *
где хранить указатель на последний записанный адрес

Указатель нигде не хранить. Вместо этого лучше снабжать каждую запись порядковым номером, а при включении прибора просто находить конец по разрыву в нумерации.
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 4 2010, 14:03
Сообщение #3


Гуру
******

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



Согласен с aaarrr. В базах данных используется уникальный идентификатор, который сопровождает любую запись. Используйте при записи в журнал какой-либо идентификатор записи. Вполне достаточно кольцевого счетчика записей с достаточно большим временем повторения. Для ускорения записи можно держать этот счетчик в ОЗУ, но при рестарте обязательно восстанавливать его значение поиском из журнала.
Go to the top of the page
 
+Quote Post
Tcom
сообщение Feb 4 2010, 14:16
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Как то так и планировал, думал может есть какие нить изощрённые способы.
Спасибо за совет.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Feb 4 2010, 15:31
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Tcom @ Feb 4 2010, 17:16) *
думал может есть какие нить изощрённые способы.

Конечно, есть!

Код
void fLowPower(void)
{
  if (!Sensor(LowPower)) {Delay (1000);  NEWS(stRestart);}
  switch (event)
  {  case evNew:
    OffAll();
    OffPin(Backlight);
    if (!((state.old==stError)&&(other_error==erSetupChecksum)))
      {  if (GetFlag(eeprom_good_))
          { (void)StoreAreaError(STATISTIC,0);   // запись статистики, где среди прочих значений хранится указатель на последнюю запись
             (void)StoreAreaError(CONSUMPTION,0);
          }
}


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 4 2010, 15:54
Сообщение #6


Гуру
******

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



Цитата(Dog Pawlowa @ Feb 4 2010, 18:31) *
Конечно, есть!

А если не успеет?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Feb 5 2010, 01:43
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Но ведь всё равно, кроме указателя, чаще всего есть и другие константы, требующие модификации по ходу работы.

Я выделяю первую страницу под это дело. Соответственно кольцо начинается с адреса, следующего за первой. Ну а остальное - аналогично. Если запись запорчена, перехожу на предыдущую.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 5 2010, 09:20
Сообщение #8


Гуру
******

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



Цитата(SasaVitebsk @ Feb 5 2010, 04:43) *
Но ведь всё равно, кроме указателя, чаще всего есть и другие константы, требующие модификации по ходу работы.

Для них отдельное кольцо.

Цитата(SasaVitebsk @ Feb 5 2010, 04:43) *
Я выделяю первую страницу под это дело.

Ресурса не жалко? 100K ведь всего гарантируется (а раньше даже писать стеснялись, т.к. было 10K, потом 50).
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 6 2010, 14:09
Сообщение #9


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Есть такая штука как журнальная файловая система: jfs.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Feb 6 2010, 14:42
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(aaarrr @ Feb 5 2010, 13:20) *
Для них отдельное кольцо.

Вариант конечно.
Цитата
Ресурса не жалко? 100K ведь всего гарантируется (а раньше даже писать стеснялись, т.к. было 10K, потом 50).

Ну у меня очень редко изменяемая инфа. И объём "записи" настандартен и очень значителен. Несколько десятков кб. Истории мне достаточно только на предудущую.

Ну а если требуется что-то типа журнала, то необходимо применять стандартные подходы. Ну типа указатель на предыдущую и последующую. Всётаки здесь многое зависит от поставленной задачи.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 6 2010, 15:40
Сообщение #11


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(demiurg_spb @ Feb 6 2010, 19:09) *
Есть такая штука как журнальная файловая система: jfs.


Для Dataflash? smile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 6 2010, 21:35
Сообщение #12


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(AHTOXA @ Feb 6 2010, 18:40) *
Для Dataflash? smile.gif
Нет, но идею работы посмотреть можно.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 6 2010, 21:43
Сообщение #13


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(demiurg_spb @ Feb 7 2010, 02:35) *
Нет, но идею работы посмотреть можно.


Смеётесь? smile.gif Прикиньте сами, кроме записи собственно данных, писать ещё и журнал? При ограниченном ресурсе записи? Это явно самоубийственное решение.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

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

 


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


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