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

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


Гуру
******

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



Господа, посоветуйте быстрый алгоритм подсчета CRC блока 32кБ.
CRC16,CRC32...MD5 не подходят из за большого времени счёта.
По быстродействию устраивает одно чтение байта и одна (максимум 2) операция с ним.

Реализовал вот так.
Весь блок рассматриваю как последовательность 8-ми байтных целых чисел и просто их суммирую.
В результате CRC тоже 8-мь байт.
Вопрос: если CRC сделать не восемь а девять или десять байт, будет ли надёжнее?

А может кто то предложит еще какой то быстрый алгоритм?
Go to the top of the page
 
+Quote Post
vvs157
сообщение Aug 26 2012, 10:43
Сообщение #2


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

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(zombi @ Aug 26 2012, 12:37) *
Весь блок рассматриваю как последовательность 8-ми байтных целых чисел и просто их суммирую.
В результате CRC тоже 8-мь байт.
Это не совсем CRC, это простая контрольная сумма, которая в отличие от CRC невосприимчива к перестановке байт.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Aug 26 2012, 11:58
Сообщение #3


Гуру
******

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



Цитата(zombi @ Aug 26 2012, 11:37) *
А может кто то предложит еще какой то быстрый алгоритм?

"Табличная" реализация расчета CRC имеется в той же Википедии и работает достаточно быстро. Может, вам лучше заменить МК на более производительный ? Или, если позволяет задача, можно подсчитывать CRC "на лету", подавая на вход вычислителя все новые и новые байты по мере их поступления в 32 - килобайтный массив ...
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 26 2012, 12:20
Сообщение #4


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

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



Быстрее и надёжнее стандартного табличного CRC вы вряд ли изобретёте. ИМХО.
Если конечно не будете использовать аппаратный блок микроконтроллера для расчёта CRC как например в STM32.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 26 2012, 12:54
Сообщение #5


;
******

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



Процессор 8-разрядный?
Тогда возьмите CRC16 из модбаса, там таблицы для удобства обработки разбиты - отдельно мл. байт отдельно старший.
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 26 2012, 13:11
Сообщение #6


Гуру
******

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



Цитата(vvs157 @ Aug 26 2012, 13:43) *
Это не совсем CRC, это простая контрольная сумма, которая в отличие от CRC невосприимчива к перестановке байт.

Ага понял.
Нужно тестить внешнюю флеш на предмет самопроизвольной порчи и правильности монтажа оной.
Не думаю что самопроизвольный сбой может выглядеть как перестановка N-байтных слов.
А вот кз/обрыв по адресу/сам и данным возможен.
Как бы оную быстро и качественно протестить?
Может рассматривать её как посл. челых чисел с нечётным кол-вом байт?

Проц Xmega128. Времени нет на любой CRC.
Go to the top of the page
 
+Quote Post
ae_
сообщение Aug 26 2012, 14:08
Сообщение #7


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(zombi @ Aug 26 2012, 22:11) *
...Проц Xmega128. Времени нет на любой CRC.

Можно сначала заполнить всю тестируемую память данными ПСП (псевдослучайная последовательность), затем сравнить с заново запущенным генератором ПСП.
Для 32кБ хватит 16-бит ПСП, например такой: LFSR
ПСП на LFSR работает быстро: 1 сдвиг + 1 условный XOR.
Проверка всей памяти целиком после её полной записи хороша тем, что обнаруживает ошибки при обрывах/КЗ в адресных линиях, чего не обнаружить, если тестировать по 1-2 байта(write/read/compare) в цикле перебирая адреса.
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 26 2012, 15:13
Сообщение #8


Гуру
******

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



Цитата(ae_ @ Aug 26 2012, 17:08) *
Можно сначала заполнить всю тестируемую память данными ПСП ...

Проц внешнюю флеш может только читать!
Он должен протестировать то что ему подсунули.
И либо работать с этими данным либо ругаться.
Go to the top of the page
 
+Quote Post
vvs157
сообщение Aug 26 2012, 15:31
Сообщение #9


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

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(zombi @ Aug 26 2012, 17:11) *
Нужно тестить внешнюю флеш на предмет самопроизвольной порчи и правильности монтажа оной.
Для этого простой контрольной суммы действительно достаточно.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 26 2012, 15:42
Сообщение #10


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (zombi @ Aug 26 2012, 22:11) *
Времени нет на любой CRC.

А что такое время в Вашем случае? Как много его есть, и сколько можно использовать для подсчета КС? Вот Вы суммируете. А по таблице дольше вычислять? А надежность? Надежность CRC подтверждена математически? А надежность суммирования для случая проверки флеша?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 26 2012, 16:26
Сообщение #11


Гуру
******

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



Цитата(haker_fox @ Aug 26 2012, 18:42) *
А что такое время в Вашем случае? Как много его есть, и сколько можно использовать для подсчета КС?

Чем быстрее тем лучше. Проц работает на 32MHz но всего лишь 5-10% времени он может уделить для тестирования флешки.
Тест 512-ти областей по 32кБ (16МВ) с подсчётом CRC32 (по табличному алг.) идёт примерно 2 минуты и это ужасно долго!
Тоже самое с КС 20 сек, красота!

Цитата(haker_fox @ Aug 26 2012, 18:42) *
Вот Вы суммируете. А по таблице дольше вычислять?

Суммирую 0-й байт флеш с 0-м бaйтом KC, второй со вторым с учётом переноса и т.д. (всего одно чтение и одно сложение на байт).
CRC32 - прочитать байт, загрузить указатель таблицы, сложить, сдвинуть ... (врядли в две команды хватит).

Цитата(haker_fox @ Aug 26 2012, 18:42) *
А надежность? Надежность CRC подтверждена математически? А надежность суммирования для случая проверки флеша?

laughing.gif
Go to the top of the page
 
+Quote Post
Plain
сообщение Aug 26 2012, 16:30
Сообщение #12


Гуру
******

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



Цитата(zombi @ Aug 26 2012, 11:37) *
устраивает одно чтение байта и одна (максимум 2) операция с ним

Например, сложение и циклический сдвиг.
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 26 2012, 16:40
Сообщение #13


Гуру
******

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



Цитата(vvs157 @ Aug 26 2012, 18:31) *
Для этого простой контрольной суммы действительно достаточно.

Надеюсь.
На всяк. случай алгоритм несколько поменял:
КС сделал 7-ми байтной и сложение заменил на XOR.

Цитата(Plain @ Aug 26 2012, 19:30) *
Например, сложение и циклический сдвиг.

Циклический сдвиг чего?
Одного байта результата сложения? или всей КС?
Go to the top of the page
 
+Quote Post
Plain
сообщение Aug 26 2012, 16:57
Сообщение #14


Гуру
******

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



Если нужно просто убедиться в целости линий адресов и данных, то достаточно пройти память по диагонали, т.е. 4 КБ.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 26 2012, 16:59
Сообщение #15


Гуру
******

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



Цитата(zombi @ Aug 26 2012, 16:11) *
Проц Xmega128. Времени нет на любой CRC.

xmegaA или другая ? Есть ли у неё Crypto Engine?
Врядли конечно будет быстрее, по вдруг...
Если есть блок шифрования то нельзя ли выполнить команду DES? Но что-то не могу найти сколько циклов она выполняется, врядли 1.
Go to the top of the page
 
+Quote Post
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
ILYAUL
сообщение Aug 28 2012, 07:29
Сообщение #31


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

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



А почему бы и нет, для быстрой проверки. К тому же я предлагал сумму байт или можете взять CRC8 , что конечно надёжней. Там же написано здесь можно
Цитата
делать что захотите
и только в случае проблем .....
Устройте "пробег" по всем адресам 1 2 4 8 16 32 ...... по одному байту с каждого


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

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


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

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



Цитата(zombi @ Aug 28 2012, 10:21) *
Т.е. Вы предлагаете что бы процессор считал правильной с флешку у которой в каждой странице правильно записан лишь один единственный байт?
Для быстрой первичной проверки на закоротки в шинах (беря байты со смещением, к примеру, инкрементируя адрес не на размер страницы, а на простое число) этого достаточно.
В зависимости от задачи — как можно быстрее отказаться от плохой ситуации или как можно быстрее убедиться в хорошей — и методы разные.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 28 2012, 07:44
Сообщение #33


;
******

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



Может и глупость скажу.
Возьмите контрольные суммы от блоков, лучше не более 256 байт, и загоните эти суммы в CRC16 по любому методу.
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 28 2012, 08:43
Сообщение #34


Гуру
******

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



Цитата(ReAl @ Aug 28 2012, 10:43) *
В зависимости от задачи — как можно быстрее отказаться от плохой ситуации или как можно быстрее убедиться в хорошей — и методы разные.

Не вижу разницы.
Любая из задач меня устраивает. Главное чтобы быстро.

Цитата(_Pasha @ Aug 28 2012, 10:44) *
Может и глупость скажу.
Возьмите контрольные суммы от блоков, лучше не более 256 байт, и загоните эти суммы в CRC16 по любому методу.

Блин 16МБ / 256 * 2 = 128 КВ памяти только на CRC !
Но надо попробывать на сколько быстрее (на моём 8-ми битном проце) считается CRC16 чем CRC32.
Возможно и устроит.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 28 2012, 09:17
Сообщение #35


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Так ли уж обязательно надо быстро? Можно придумать какой-нибудь альтернативный выбор. Нажал кнопку при сбросе (закоротил перемычку) - пошла медленная серьезная проверка устройства. Не нажал - обычный рабочий режим.
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 28 2012, 12:40
Сообщение #36


Гуру
******

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



Цитата(ViKo @ Aug 28 2012, 12:17) *
Так ли уж обязательно надо быстро? Можно придумать какой-нибудь альтернативный выбор. Нажал кнопку при сбросе (закоротил перемычку) - пошла медленная серьезная проверка устройства. Не нажал - обычный рабочий режим.

Это надо в первую очередь для того что бы проц не запустился случайно с не рабочей флешкой.
При отладке 2-3 изделий можно конечно и подождать.
А если надо 1000 отладить, 33 часа уйдёт только на проверку флеш.
А если некоторые придётся выключить и снова включить да еще и несколько раз.
Go to the top of the page
 
+Quote Post
_Ivana
сообщение Aug 28 2012, 12:58
Сообщение #37


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Цитата
При отладке 2-3 изделий можно конечно и подождать.
А если надо 1000 отладить,
то совершенно необязательно проверять их флешки строго одну за другой, можно синхронно запустить проверку. Или нет?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 28 2012, 13:13
Сообщение #38


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(zombi @ Aug 28 2012, 15:40) *
При отладке 2-3 изделий можно конечно и подождать.
А если надо 1000 отладить, 33 часа уйдёт только на проверку флеш.
А если некоторые придётся выключить и снова включить да еще и несколько раз.

А если вдруг непропаянная ножка найдется, то сразу - в мусорную корзину, чтобы время на пайку не терять? Как в Афгане подбитые грузовики - с дороги в пропасть, чтобы спасти остальные?
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 28 2012, 13:23
Сообщение #39


Гуру
******

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



Цитата(_Ivana @ Aug 28 2012, 15:58) *
то совершенно необязательно проверять их флешки строго одну за другой, можно синхронно запустить проверку. Или нет?

Можно конечно, но это дополнительные затраты на стендовое оборудование и т.д.

Цитата(ViKo @ Aug 28 2012, 16:13) *
А если вдруг непропаянная ножка найдется, то сразу - в мусорную корзину, чтобы время на пайку не терять? Как в Афгане подбитые грузовики - с дороги в пропасть, чтобы спасти остальные?

Я так понял что идеи кончились и пошёл просто стёб.
Go to the top of the page
 
+Quote Post
VCO
сообщение Aug 28 2012, 13:27
Сообщение #40


Voltage Control Output
******

Группа: Свой
Сообщений: 4 598
Регистрация: 21-07-09
Из: Kursk
Пользователь №: 51 436



При таком подходе можно в схемотехнику всепить CPLD-шку, которая будет максимально быстро считать CRC.
Но только кто будет её проверять? laughing.gif А в принципе, сам микроконтроллер это может делать.. rolleyes.gif
ЗЫ: Мой пост - не стёб, всё на полном серьёзе. BGAшная CPLD весит совсем мало и по деньгам, и по размерам...

Сообщение отредактировал VCO - Aug 28 2012, 13:29


--------------------
Слово - не воробей, вылетит - не пощадит
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 28 2012, 13:36
Сообщение #41


Гуру
******

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



Цитата(VCO @ Aug 28 2012, 16:27) *
При таком подходе можно в схемотехнику всепить CPLD-шку ...

Можно конечно, но всётаки цена изделия важнее времени его отладки.

Цитата(VCO @ Aug 28 2012, 16:27) *
ЗЫ: Мой пост - не стёб, всё на полном серьёзе. BGAшная CPLD весит совсем мало и по деньгам, и по размерам...

Охотно верю, но добавление в устройство дополнительных мс да еще и в BGA!!! абсолютно не приемлемо.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 28 2012, 13:46
Сообщение #42


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Мне думается, получив каждую новую плату, тестировщик пару минут будет ее только в руках крутить-вертеть, осматривать визуально. Прежде, чем подключать питание и т.д.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 28 2012, 13:56
Сообщение #43


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

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



Цитата(zombi @ Aug 28 2012, 11:43) *
Блин 16МБ / 256 * 2 = 128 КВ памяти только на CRC !
Зачем?
В конце флеша хранится только CRC16. Которая получается так:
Код
инициализируем CRC16
цикл по блокам в 256 байт
    считаем 8- или 16-битную сумму блока, возможно с цикл. переносом или xor-ку всех байтов или что не жалко
    добавляем эту сумму к CRC16
усё

Сумма с цикл. переносом считается как сумма разрядностью с запасом, после чего старшие биты добавляются к младшим.


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


Гуру
******

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



Цитата(ViKo @ Aug 28 2012, 16:46) *
Мне думается, получив каждую новую плату, тестировщик пару минут будет ее только в руках крутить-вертеть, осматривать визуально. Прежде, чем подключать питание и т.д.

Ни чё он не крутит.
Вытащил из коробки, тестером прозвонил питание на предмет кз, воткнул в неё шлейфы и всё что нужно, подал питание и на компе нажал ENTER. (максимум 15 сек).
За 8 сек всё прожглось, проц стартует с проверки флеш (2е минуты!).
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 28 2012, 22:33
Сообщение #45


Гуру
******

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



Цитата(zombi @ Aug 29 2012, 01:28) *
(2е минуты!).

И чё? У меня прошивка тестовой версии-проверка внешней флешки -зашивка рабочей версии минут 8 занимает.Какая разница - плату включил и само пошло, результат программа выдаст: всё ок или где-то застряло.
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 28 2012, 22:42
Сообщение #46


Гуру
******

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



Цитата(_Артём_ @ Aug 29 2012, 01:33) *
И чё? У меня прошивка тестовой версии-проверка внешней флешки -зашивка рабочей версии минут 8 занимает.Какая разница - плату включил и само пошло, результат программа выдаст: всё ок или где-то застряло.

И чё? Вас 8 минут устраивает, а мне и 2 много!

Цитата(ReAl @ Aug 28 2012, 16:56) *
Зачем?
В конце флеша хранится только CRC16. Которая получается так:

Правильно ли я понял?
Вы предлагаете считать CRC16 контрольных сумм всех блоков?
Go to the top of the page
 
+Quote Post
Flexz
сообщение Aug 29 2012, 08:42
Сообщение #47


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Если вопрос только в работе тестировщика, то почему не проверять одновременно несколько плат? Пока на одной тесты бегают он другую готовит и так по кругу.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 29 2012, 08:49
Сообщение #48


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

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



Цитата(zombi @ Aug 29 2012, 01:42) *
И чё? Вас 8 минут устраивает, а мне и 2 много!
8 / 8 = 1.
Т.е., как уже говорили, можно сделать многоместный стенд.
У меня 10-местный :-), за 3 минуты прошивается-тестируется десять плат.

Цитата(zombi @ Aug 29 2012, 01:42) *
Правильно ли я понял?
Вы предлагаете считать CRC16 контрольных сумм всех блоков?
Не я :-)
Цитата(_Pasha @ Aug 28 2012, 10:44) *
Возьмите контрольные суммы от блоков, лучше не более 256 байт, и загоните эти суммы в CRC16 по любому методу.


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


Гуру
******

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



Цитата(ReAl @ Aug 29 2012, 11:49) *
8 / 8 = 1.
Т.е., как уже говорили, можно сделать многоместный стенд.
У меня 10-местный :-), за 3 минуты прошивается-тестируется десять плат.
Надо подумать.

Цитата(ReAl @ Aug 29 2012, 11:49) *
Не я :-)

Ну да.
Идею сразу не понял. Спасибо _Pasha и Вам.
Тогда уж лучше CRC32 посчитать, вызов процедуры crc всего то 128 раз на блок!


Цитата(Flexz @ Aug 29 2012, 11:42) *
Если вопрос только в работе тестировщика, то почему не проверять одновременно несколько плат? Пока на одной тесты бегают он другую готовит и так по кругу.

Именно так и происходит. Раздражает лишь то что новую он готовит намного быстрее чем бегают тесты в предыдущей.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 29 2012, 15:21
Сообщение #50


;
******

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



CRC32 у Вас вызывается 262144 раза. Но оно длиннее чем CRC16. Вот и выбирайте, приемлемо ли время тестирования.
Go to the top of the page
 
+Quote Post
zombi
сообщение Aug 29 2012, 19:33
Сообщение #51


Гуру
******

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



Цитата(_Pasha @ Aug 29 2012, 18:21) *
CRC32 у Вас вызывается 262144 раза.

16*1024*1024 / 256 = 65536 раз. Не понимаю откуда 262144?

Цитата(_Pasha @ Aug 29 2012, 18:21) *
Но оно длиннее чем CRC16. Вот и выбирайте, приемлемо ли время тестирования.

Само собой.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 30 2012, 02:47
Сообщение #52


;
******

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



Цитата(zombi @ Aug 29 2012, 22:33) *
16*1024*1024 / 256 = 65536 раз. Не понимаю откуда 262144?

Пардон sm.gif
Go to the top of the page
 
+Quote Post

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

 


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


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