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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Быстрый алгоритм CRC, придумать надо
zombi
сообщение Aug 26 2012, 17:02
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Plain @ Aug 26 2012, 19:57) *
Если нужно просто убедиться в целости линий адресов и данных, то достаточно пройти память по диагонали, т.е. 4 КБ.

А можно поподробнее?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 26 2012, 17:16
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(_Артём_ @ Aug 26 2012, 19:59) *
Если есть блок шифрования то нельзя ли выполнить команду DES? Но что-то не могу найти сколько циклов она выполняется, врядли 1.

1/2 цикла однако...
Go to the top of the page
 
+Quote Post
kovigor
сообщение Aug 26 2012, 17:30
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Суммы действительно хватит, скорее всего. Для примера, в тех же LPC214x целостность расположенной во Flash таблицы векторов прерываний контролируется именно так. Размер таблицы - восемь 32-разрядных слов. Загрузчик после включения питания суммирует их и получает 32-разрядный же результат. Возможные биты переполнения отбрасываются, и в результате должен получиться ноль. Любой другой результат указывает на повреждение таблицы векторов ...
Go to the top of the page
 
+Quote Post
Plain
сообщение Aug 26 2012, 17:42
Сообщение #19


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Цитата(Plain @ Aug 26 2012, 19:57) *
Если нужно просто убедиться в целости линий адресов и данных, то достаточно пройти память по диагонали, т.е. 4 КБ.

Цитата(zombi @ Aug 26 2012, 20:02) *
А можно поподробнее?

Делаете 12-разрядный цикл и в нём двумя одновременно инкрементируемыми 12-разрядными счётчиками половин адреса выбираете байты и циклически суммируете их. Можно для верности пройтись ещё по паре диагоналей, установив в эти счётчики любые другие начальные значения.
Go to the top of the page
 
+Quote Post
Sirko
сообщение Aug 26 2012, 17:57
Сообщение #20


Местный
***

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



Возможно ляпну ерунду, но у xmega есть некая "крипто-хрень". Может ее озадачить?
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 26 2012, 18:11
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(_Артём_ @ Aug 26 2012, 19:59) *
Если есть блок шифрования то нельзя ли выполнить команду DES? Но что-то не могу найти сколько циклов она выполняется, врядли 1.

Цитата(Sirko @ Aug 26 2012, 20:57) *
Возможно ляпну ерунду, но у xmega есть некая "крипто-хрень". Может ее озадачить?

Цитата(_Артём_ @ Aug 26 2012, 20:16) *
1/2 цикла однако...

Дааа, DES быстрая однако.

Надо подумать rolleyes.gif
Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 26 2012, 18:12
Сообщение #22


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(demiurg_spb @ Aug 26 2012, 15:20) *
Быстрее и надёжнее стандартного табличного CRC вы вряд ли изобретёте. ИМХО.
Для xmega оно, конечно, офтопик, но вот вроде бы быстрее:
http://w..._generators.pdf
http://sourceforge.net/projects/slicing-by-8/


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 26 2012, 18:39
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(zombi @ Aug 26 2012, 21:11) *
Надо подумать rolleyes.gif


А что, если загрузить R0-15 некой константой
затем N раз

R0=R0 XOR FLASH[N*8+0]
R1=R1 XOR FLASH[N*8+1]
...
R7=R7 XOR FLASH[N*8+7]
DES 0

В результате в R0-R7 получится некий рандомайз и к томуже быстрее чем просто KC (на 8-мь байт 8-мь чтений и один DES) !

Но будет ли оное надёжнее чем просто КС ?
Go to the top of the page
 
+Quote Post
редактор
сообщение Aug 27 2012, 06:56
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата
По быстродействию устраивает одно чтение байта и одна (максимум 2) операция с ним.

Можно попробовать код Флетчера, где то на форуме это уже обсуждалось.
В кратце

unsigned Crc1 = 0; // для большей надежности можно инициализировать какой либо константой
unsigned Crc2 = 0;
for (int i=0; i<n;i++)
{ Crc1 += Buf[i]; // пи сложении переносы не учитываются
Crc2 += Crc1;
}
Crc2++; // позволяет избежать ситуаций Crc1 == Crc2==0, или Crc1 == Crc2==-1;
При размере переменных 8 бит, гарантировано считается блок на 256 байт. Для бОльшего блока необходима бОльшая разрядность.
Насколько бОльше не скажу, применял для коротких сообщений (20-25 байт) в восьмибитнике, но думаю вики поможет в этом вопросе


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 27 2012, 08:10
Сообщение #25


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
Нужно тестить внешнюю флеш на предмет самопроизвольной порчи и правильности монтажа оной.

ИМХО Да скорее всего никак. Вы представьте , что у Вас нет , предположим ,одной линии данных или адреса и что Вы получите прочитав из Flash данные, ничего не зная какие они должны быть? Ну пусть Вы их проссумируете , но это уже не те данные. Соответсвенно не та сумма
Ваш проц изначально должен знать , сумму или CRC , например "разбросанных" по адресному пространству 10 - 100 ячеек FLASH и уже на основании этого Вы с уверенностью сможете сказать - есть или нет ошибки в монтаже или прошивке FLASH и при необходимости вычислить линию адреса или данных с которой есть проблема.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 27 2012, 11:26
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(ILYAUL @ Aug 27 2012, 11:10) *
Ваш проц изначально должен знать , сумму или CRC ...

А почему Вы решили что он её не знает???
Именно её то он и знает и должен сравнить оную с вновь рассчитанной.

Цитата(ILYAUL @ Aug 27 2012, 11:10) *
и при необходимости вычислить линию адреса или данных с которой есть проблема.

Для этого есть техники у них и лупы и тестера и паяльники, пусть ищут.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 27 2012, 13:50
Сообщение #27


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(zombi @ Aug 27 2012, 15:26) *
А почему Вы решили что он её не знает???
Именно её то он и знает и должен сравнить оную с вновь рассчитанной.


Для этого есть техники у них и лупы и тестера и паяльники, пусть ищут.

Ну наверное потому, что Вы об этом не писали. К тому же и сейчас не понятно , что он знает CRC или КС.
А уж облегчить жизнь техникам - святое


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 27 2012, 16:17
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(ILYAUL @ Aug 27 2012, 16:50) *
К тому же и сейчас не понятно , что он знает CRC или КС.

Какая разница? Чего надо то и будет знать.
Вопрос лишь в том как ему побыстрее определить что ему правильно подключили правильно прошитую внешнюю ROM.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 28 2012, 06:16
Сообщение #29


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Ну вот , что-то уже прояснилось.
Раз уж процу ещё ничего не известно, тогда Вы можете заложить 2 направления
1. "Быстрый" - предварительная оценка , здесь можно делать что захотите , но что бы быстро. Например КС по 1 байту из каждого адреса или вообще страницы
2. "Медленный" - CRC всей FLASH , если предварительный выдал ошибку , тут уже всё равно спешить не куда , кому-то с этим надо будет разбираться и что-то мне подсказывает , что не Вам biggrin.gif


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 28 2012, 07:21
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(ILYAUL @ Aug 28 2012, 09:16) *
1. "Быстрый" - предварительная оценка , здесь можно делать что захотите , но что бы быстро. Например КС по 1 байту из каждого адреса или вообще страницы

Т.е. Вы предлагаете что бы процессор считал правильной с флешку у которой в каждой странице правильно записан лишь один единственный байт?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 13:03
Рейтинг@Mail.ru


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