|
|
  |
Быстрый алгоритм CRC, придумать надо |
|
|
|
Aug 26 2012, 18:39
|

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

|
Цитата(zombi @ Aug 26 2012, 21:11)  Надо подумать  А что, если загрузить 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) ! Но будет ли оное надёжнее чем просто КС ?
|
|
|
|
|
Aug 27 2012, 06:56
|
Местный
  
Группа: Участник
Сообщений: 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 байт) в восьмибитнике, но думаю вики поможет в этом вопросе
--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
|
|
|
|
|
Aug 27 2012, 08:10
|

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

|
Цитата Нужно тестить внешнюю флеш на предмет самопроизвольной порчи и правильности монтажа оной. ИМХО Да скорее всего никак. Вы представьте , что у Вас нет , предположим ,одной линии данных или адреса и что Вы получите прочитав из Flash данные, ничего не зная какие они должны быть? Ну пусть Вы их проссумируете , но это уже не те данные. Соответсвенно не та сумма Ваш проц изначально должен знать , сумму или CRC , например "разбросанных" по адресному пространству 10 - 100 ячеек FLASH и уже на основании этого Вы с уверенностью сможете сказать - есть или нет ошибки в монтаже или прошивке FLASH и при необходимости вычислить линию адреса или данных с которой есть проблема.
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Aug 27 2012, 11:26
|

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

|
Цитата(ILYAUL @ Aug 27 2012, 11:10)  Ваш проц изначально должен знать , сумму или CRC ... А почему Вы решили что он её не знает??? Именно её то он и знает и должен сравнить оную с вновь рассчитанной. Цитата(ILYAUL @ Aug 27 2012, 11:10)  и при необходимости вычислить линию адреса или данных с которой есть проблема. Для этого есть техники у них и лупы и тестера и паяльники, пусть ищут.
|
|
|
|
|
Aug 28 2012, 06:16
|

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

|
Ну вот , что-то уже прояснилось. Раз уж процу ещё ничего не известно, тогда Вы можете заложить 2 направления 1. "Быстрый" - предварительная оценка , здесь можно делать что захотите , но что бы быстро. Например КС по 1 байту из каждого адреса или вообще страницы 2. "Медленный" - CRC всей FLASH , если предварительный выдал ошибку , тут уже всё равно спешить не куда , кому-то с этим надо будет разбираться и что-то мне подсказывает , что не Вам
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|