Форум: "Прочее";
Текущий архив: 2016.02.28;
Скачать: [xml.tar.bz2];
ВнизФункция для продления жизни EEPROM Найти похожие ветки
← →
Дмитрий С © (2015-06-11 17:14) [0]Есть устройство, в нем EEPROM память.
При каждом запуске устройство должно выбирать некое уникальное значение (4 ячейки - 32 бита). Уникальность в рамках этого устройства.
Можно при каждом запуске увеличивать предыдущее значение на 1: (next(x) = x + 1)
В этом случае износ ячеек будет очень сильно неравномерным. Да и износ всей группы ячеек будет ограничен износом последней.
Задача: придумать такую функцию (хотя возможно она уже есть) next(x), чтобы удовлетворяла условию уникальности, и чтобы износ ячеек был (более) равномерным и минимальным.
Минимальным он будет, если каждое следующее значение отличается от предыдущего минимальным количеством байт (бит).
← →
MBo © (2015-06-11 17:26) [1]про износ всей группы не понял - почему?
Уникальное, отличающееся от предыдущего минимальным количеством байт - например, x+p, где p - взаимно простое с общим количеством ячеек, большее указанного минимума
← →
Romkin © (2015-06-11 17:36) [2]Мне чудится что тут речь о коде Грея
← →
Дмитрий С © (2015-06-11 19:40) [3]
> про износ всей группы не понял - почему?
Если износится последняя (младшая) ячейка, то можно считать изношенной всю группу. Грубо говоря счетчик нужно будет перенести в другую область памяти, либо заменить память.
> x+p
Мне представляется, что очередные результаты сложения рано или поздно будут "налегать" на один и тот же байт.
> Мне чудится что тут речь о коде Грея
Почитал - интересно. Если двигаться в этом направление, остается подобрать такой код Грея, чтобы износ был не только минимальным, но и равномерным.
← →
MBo © (2015-06-11 19:49) [4]>Мне представляется, что очередные результаты сложения рано или поздно будут "налегать" на один и тот же байт.
Будут. Через MemSize итераций.
← →
Дмитрий С © (2015-06-11 20:12) [5]
> MBo © (11.06.15 19:49) [4]
Не могу сообразить. Можно небольшой пример?
У меня родилась следующая идея. Вариант не идеальный, но лучше чем сложение:
Все как в x+1, только каждые, например, 255, итераций число записывается циклически сдвинутым на 1 байт.
Таким образом следующие 255 значений лягут на плечи следующей ячейки.
Придется только хранить длину сдвига где-то в другом месте.
Получаем навскидку, примерно, 260 записей в каждый байт на 1024 значения функции. Ресурс увеличивается почти в четыре раза (кстати, почти идеально).
← →
MBo © (2015-06-11 20:31) [6]M=8, p=5
0 5 2 7 4 1 6 3 0
← →
Sha © (2015-06-11 21:10) [7]> Дмитрий С
Нельзя ли четко сформулировать условия задачи?
С объяснением всех используемых обозначений.
Что нужно сделать? Без всяких, что можно.
Если хочешь привести пример, приведи его полностью и отдельно от условия.
← →
Дмитрий С © (2015-06-11 21:23) [8]
> Sha © (11.06.15 21:10) [7]
Цель простая, каждый запуск устройства иметь уникальное 32х-битное значение в рамках этого устройства.
Что либо хранить устройство может только в EEPROM памяти, которая достаточно быстро изнашивается.
Задача: сделать так чтобы устройство пережило как можно большее количество запусков.
> MBo © (11.06.15 20:31) [6]
Я так понял, у меня в задаче:
M = 2^32, p = 3^20 (например).
Написал программу для проверки: существует байт, который перезаписывается каждую итерацию.
Затем написал программу для 2х байт (т.к. с 4 долго проверять). Где перебрал все значения "p". Во всех случаях существует байт, который перезаписывается каждую итерацию.
← →
Inovet © (2015-06-11 21:43) [9]> [8] Дмитрий С © (11.06.15 21:23)
> Задача: сделать так чтобы устройство пережило как можно большее количество запусков.
Больше чем
объём_EEPROM * ресурс_по_количеству_циклов_записи / объём_минимального_блока / количество_запусков
не получишь.
Устройства, навроде телевизоров, работают по 20 лет, и это при том, что 20 лет назад были EEPROM с худшими характеристиками.
← →
Sha © (2015-06-11 21:43) [10]> Дмитрий С © (11.06.15 21:23) [8]
Где тут что дано, что найти?
← →
Inovet © (2015-06-11 21:53) [11]> [10] Sha © (11.06.15 21:43)
> Где тут что дано, что найти?
Надо чтобы весило мало, а объём был большой. Найти силу Архимеда.
← →
Sha © (2015-06-11 21:58) [12]> Inovet © (11.06.15 21:43) [9]
> Больше чем ... не получишь.
Скорее всего это так, но не факт.
Задача автором совсем не формализована.
Возможных решений для возможных условий вагон и маленькая тележка.
> Дмитрий С © (11.06.15 21:23) [8]
> Задача: сделать так чтобы устройство пережило как можно большее количество запусков.
Что тут надо найти-то?
← →
KilkennyCat © (2015-06-11 22:11) [13]Чтение не ушатывает еепром. В остальном: задача действительно не формализована и даже вопрос "как запуздырить туда где часики.." более профессионален.
← →
Дмитрий С © (2015-06-11 22:39) [14]Пусть есть некое начальное x и искомая f(x) (оба uint32).
Тогда ряд X = (x, f(x), f^2(x), ..., f^N(x)); где N = 2^32 - 1.
Разложим каждое значение X[i] на биты. Будем считать изменением бита j для значения X[i], если ((X[i-1] and 1) shl j) <> ((X[i] and 1) shl j).
Тогда функция S(j, n) - возвращает количество изменений бита j, для значений (X[0], ..., X[n]).
Тогда функция M(n) = MAX(S(j, n)), j=0..31
Необходимо найти такую f(x), чтобы M(n) была минимально возможной для любого n начиная с некоторого значения.
← →
Дмитрий С © (2015-06-11 22:44) [15]
> KilkennyCat
При каждом запуске необходимо записать очередное значение иначе как гарантировать его уникальность.
Я не знаю как проще объяснить. Попробую так:
Каждый запуск устройства нужно иметь уникальное 32х битное значение в рамках устройства. Хранить между запусками устройство что-либо может в изнашиваемом при записи ПЗУ.
Необходимо найти такой способ генерации этих значений, чтобы как можно меньше износить ПЗУ.
← →
Дмитрий С © (2015-06-11 22:45) [16]В [14] не там скобки поставил.
Вместо
((X[i-1] and 1) shl j) <> ((X[i] and 1) shl j)
нужно
(X[i-1] and (1 shl j)) <> (X[i] and (1 shl j))
← →
Германн © (2015-06-12 01:28) [17]
> Дмитрий С © (11.06.15 21:23) [8]
>
>
> > Sha © (11.06.15 21:10) [7]
>
> Цель простая, каждый запуск устройства иметь уникальное
> 32х-битное значение в рамках этого устройства.
> Что либо хранить устройство может только в EEPROM памяти,
> которая достаточно быстро изнашивается.
Не секрет сказать что за устройство? Ибо нынешние EEPROM "изнашиваются" довольно таки не быстро.
← →
Sha © (2015-06-12 01:54) [18]balanced gray code
← →
Дмитрий С © (2015-06-12 02:00) [19]
> Не секрет
Не секрет. ATMega2560
← →
Германн © (2015-06-12 02:08) [20]
> Дмитрий С © (12.06.15 02:00) [19]
>
>
> > Не секрет
>
> Не секрет. ATMega2560
>
Не тем заботишься. Скорее всего внешние ресурсы устройства на базе этой ATMeg"и закончатся раньше чем внутренние ресурсы сего процессора.
← →
kilkennycat © (2015-06-12 07:39) [21]У меня в пике 100 тыщ циклов гарантированных перезаписей еепром. Что означает, что скорее всего, полмиллиона выдержит. Если вкл-выкл делать 100 раз в день или около 8 раз в час, то хватит на десяток лет.
Так в чем там вопрос-то был? :)
← →
Sha © (2015-06-12 09:38) [22]> kilkennycat © (12.06.15 07:39) [21]
> Так в чем там вопрос-то был? :)
На самом деле задача генерирования BGC-последовательности довольно интересна.
Пятница же)
← →
Дмитрий С © (2015-06-12 21:07) [23]
> Так в чем там вопрос-то был? :)
Все забил:) Теперь задача сугубо теоретическая.
> На самом деле задача генерирования BGC-последовательности
> довольно интересна.
На первый взгляд показалось, что в английской википедии есть даже формулы.
← →
Дмитрий С © (2015-06-12 21:08) [24]Спасибо всем. Каждым своим ответом или критикой вы делаете меня лучше! Спасибо!
← →
Sha © (2015-06-12 21:41) [25]> Дмитрий С © (12.06.15 21:07) [23]
> На первый взгляд показалось,
> что в английской википедии есть даже формулы.
Теория и формулы в томе 4а Кнута, п. 7.2.1.1, теорема D.
Можно попробовать самостоятельно поискать алгоритм.
Если не ошибаюсь, мне удалось найти новый алгоритм для BitCount=1,2,4,8,16,32... )
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2016.02.28;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.002 c