-
- Всем спасибо! Отдельная благодарность SciFi! Научился готовить hw
crc. унутри готовая функция, авось кому пригодится Aleksey_75(1590 знак., 03.10.2020 23:47)
- Из любого метода без таблицы элементарно делается метод с таблицей, путём её расчёта методом без таблицы. И кстати таблицу не обязательно вставлять в код в виде кучи hex-цифр (где легко допустить маленькую ошибочку -- и всё CRC псу под хвост). А можно расчитывать в рантайме, когда нужно. И кроме того, не обязательно делать таблицу для каждого байта. Можно сделать более короткую таблицу для полубайт. Или сделать "таблицу" для каждого бита, причём захардкоженную в код: - fk0(04.10.2020 01:48, ссылка, ссылка)
- Вот тут есть online CRC Calculator, выдающий ещё и Lookup Table ЫЫyкпy(209 знак., 03.10.2020 23:39, ссылка, ссылка)
- Блин, ниже код от стм привёл ))... POV_(2023 знак., 03.10.2020 22:55, )
- Спасибо! но здесь таблицы в раме, что не очень приятно ! - Aleksey_75(03.10.2020 23:02)
- Ну заранее рассчитай и таблицы во флеше размести. - POV_(03.10.2020 23:07, )
- так уже ))) - Aleksey_75(03.10.2020 23:08)
- Ну заранее рассчитай и таблицы во флеше размести. - POV_(03.10.2020 23:07, )
- Спасибо! но здесь таблицы в раме, что не очень приятно ! - Aleksey_75(03.10.2020 23:02)
- Прям вот точно соответствует... POV_(236 знак., 03.10.2020 22:52, )
- это работает сели какой-то модуль проги захапал себе блок crc и
больше никому не дает его юзать ! если какой либо модуль чего
нибудь посчитает все порушится! - Aleksey_75(03.10.2020 23:01)
- Это легко решается добавлением двух функций: save_state/restore_state. - SciFi(03.10.2020 23:03)
- это работает сели какой-то модуль проги захапал себе блок crc и
больше никому не дает его юзать ! если какой либо модуль чего
нибудь посчитает все порушится! - Aleksey_75(03.10.2020 23:01)
- Нагуглилось кое-что. А что блоками? Как это может быть
препятствием? Наверняка можно посчитать, как скормить аппаратному
вычислителю 1 слово, чтобы получить то же, что и от целого блока. - SciFi(03.10.2020 22:36, ссылка)
- Спасибо! По ссылке, огонь! 64кб -> hwcrc 5,491ms , табличная (O3 Otime)(по ссылке) 22,85ms, моя расчетная (O3 Otime) 98,05ms - Aleksey_75(03.10.2020 22:54)
- скормленное слово будет тутже пересчитано на основе предвидущего значения регистра dr ! Спасибо! ща вашу ссылку проверю ! - Aleksey_75(03.10.2020 22:39)
- В F1 не было возможности инициализировать блок CRC значением? Это
только в F0 появилось? lloyd(72 знак., 03.10.2020 22:29)
- нет инитить нельзя , либо с 0 при включении тактирования, либо
0xffffffff при ресете модуля. Любая запись в crc->dr дает
пересчитанное значение - Aleksey_75(03.10.2020 22:37)
- а ресет и потом сразу запись в DR специально обученного значения,
не будет ли равно инициализации заданным числом? - Mahagam(03.10.2020 22:57)
- была такая мысль , вот SciFi выше ссылку подкинул где используется
вычисление значения для нужного значения DR, я пока сильно не
вникал, но чтот подсказывает что накладные расходы на расчет
значения похерят все плюшки аппаратного crc - Aleksey_75(03.10.2020 23:05)
- так обычно всегда надо стартовать с одного и того же значения. один раз его посчитали и потом просто reset+load_predefined_dr. - Mahagam(03.10.2020 23:15)
- Там цикл на 32 итерации. Наверняка это можно привести к табличной
форме, но, увы, лень одолела: SciFi(518 знак., 03.10.2020 23:10)
- )) не , не лень! пока оцениваю - Aleksey_75(03.10.2020 23:17)
- была такая мысль , вот SciFi выше ссылку подкинул где используется
вычисление значения для нужного значения DR, я пока сильно не
вникал, но чтот подсказывает что накладные расходы на расчет
значения похерят все плюшки аппаратного crc - Aleksey_75(03.10.2020 23:05)
- а ресет и потом сразу запись в DR специально обученного значения,
не будет ли равно инициализации заданным числом? - Mahagam(03.10.2020 22:57)
- нет инитить нельзя , либо с 0 при включении тактирования, либо
0xffffffff при ресете модуля. Любая запись в crc->dr дает
пересчитанное значение - Aleksey_75(03.10.2020 22:37)
- Всем спасибо! Отдельная благодарность SciFi! Научился готовить hw
crc. унутри готовая функция, авось кому пригодится Aleksey_75(1590 знак., 03.10.2020 23:47)