STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Сообщение MLX90640 »

Да не важно как это называется, важен сам факт наличия такого аппаратного генератора случайных чисел в микроконтроллере.
Но как бы к указанному вопросу проверки целостности ячеек памяти случайные числа вообще не имеют отношения. Память проверяется не случайными числами, а послоянным шаблоном и инвертированной его копией. Таким образом проверяется каждый бит ячейки на способность хранить как 1 так и 0.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25454
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="MLX90640",url="/forum/viewtopic.php?p=4320827#p4320827"]Память проверяется не случайными числами[/uquote]
Автор разве предлагал проверять память случайными числами? :dont_know:
По моему, автор предлагал ГЕНЕРИРОВАТЬ случайные числа посредством чтения неинициализированной оперативной памяти, полагая значения в ней случайными. Они не вполне случайны.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Сообщение MLX90640 »

Вероятно, я не совсем понял затею автора...
В целом, некоторую случайность чисел можно получить, используя более сложную методику чтения ОЗУ. Например, часть прочитанного значения можно испльзовать как относительное смещение для адреса следующего чтения (не забывая проверять вылет за диапазон адресов ОЗУ), и комбинируя каждый раз прочитанные результаты, можно получить подобие случайности.
Друг Кота
Аватара пользователя
Сообщения: 25454
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="MLX90640",url="/forum/viewtopic.php?p=4320839#p4320839"]можно получить подобие случайности.[/uquote]
Именно подобие. Назначение непонятно. Поэтому и случайность невозможно определить.
ЗЫ. Детерминированная функция не сделает массив более случайным, чем он есть. Поэтому игрища с адресами бесполезны.
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Ну и смысл так извращаться, если всегда есть АЦП? И здесь будет меньше шансов нарваться на одну и ту же последовательность. Особенно после старта.
Натравливаем DMA, и хай себе молотит. Знай, из памяти числа считывай…
А если более глубоко заморочиться, можно и "почти настоящий" ГСЧ замутить. Аппаратный. Если пользоваться тепловым шумом, получится что-то вроде Пуассона, а если дробовым — 1/f, немного близкое к экспоненциальному. Разбавить это еще какими-нибудь псевдослучайными числами, и получится почти кошерный Гаусс. Как "энтропия" собирается для /dev/random. Вот равномерное распределение сделать сложно, это да (пересчитывать из Гаусса - достаточно много математики)…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

COKPOWEHEU писал(а):А если сброс по ресету или собаке?
По ресету, кнопка ресет на плате
Спойлер1 включение

Код: Выделить всё

121
15
239
82
62
157
164
146
168
120

480060 это контрольная сумма оперативки, 32-битное значение
1 ресет

Код: Выделить всё

64
156
18
22
229
213
217
26
143
154

451611
2 ресет

Код: Выделить всё

60
176
219
156
237
254
20
237
229
83

451470
3 ресет

Код: Выделить всё

44
120
184
235
95
238
205
139
129
149

451505
Если подскажите как собачку дернуть из кода, дернем и собачку.
Eddy_Em, вы не правы, по моему расчет rand() построен по такому принципу что бы перебрать все числа из какого либо диапазона, а не как там ацп покажет.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Реализация rand примитивнейшая: просто к предыдущему числу прибавляем некое большое, чтобы вышло переполнение. Потом - еще одно. И так далее. Например, вот так:

Код: Выделить всё

static uint32_t rnd = 1;

uint32_t rand(){
      rnd = (rnd * 1103515245) + 12345;
      return rnd;
}

void srand(uint32_t seed){
    rnd = seed;
}
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

VladislavS писал(а):Возьмите старатп на Си и делайте там что угодно.
Где взять?
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Dimon456, вот, например.
Честно стырил из opencm3
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Сообщение MLX90640 »

Дак какая разница, от стартапа тут ничего не зависит. Если автору нужно получить генерацию случайных чисел на основе чтения SRAM, то "случайность" там так себе. При увеличении числа итераций получаемое число стремится к некоему среднему постоянному числу, потому что значения в ОЗУ после подачи питания носят некий периодический характер.
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Dimon456",url="/forum/viewtopic.php?p=4321005#p4321005"]Где взять?[/uquote]Вот немного из моих.Можно использовать с любым тулчейном. Будут слегка оптимальней чем от Eddy_Em. Если не используете плюсы, можно закомментировать вызов конструкторов. Лучше использовать в паре с прилагаемыми линкерскриптами. Друг от друга отличаются только списком векторов прерываний, так что для любого кортекса-м переделать пара минут.
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

Eddy_Em, не подходит, vector.h уже нету, #if defined STM32F0 это где-то объявлять надо.
Я их кучу перепробовал, то не так, то не эдак.
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="MLX90640",url="/forum/viewtopic.php?p=4321017#p4321017"]Если автору нужно получить генерацию случайных чисел на основе чтения SRAM, то "случайность" там так себе.[/uquote]Мне тоже кажется идея "так себе", но пусть попробует. Опять таки, XY-problem вырисовывается. Зачем такой идеальный rnd нужен не понятно.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Dimon456, vector.h лежит здесь. Проще сразу взять репу к себе клонировать, да на месте тренироваться. Лучше с чем-нибудь из последних, у меня там Makefile более приличный (debug нормально генерит, т.е. после make debug обычный make не вызовет make release, как раньше; контроль версий есть)…

Добавлено after 58 seconds:
Идеальный рандом для криптографии нужен. Но на STM'ках младших поколений - какая уж криптография?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Dimon456",url="/forum/viewtopic.php?p=4321019#p4321019"]#if defined STM32F0 это где-то объявлять надо.[/uquote]Обычно такие вещи в настройках проекта задаются.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

VladislavS, в Makefile же! Какие "настройки проекта"?
Вот, кстати, в более свежем Makefile у меня появились make openocd для запуска сервера отладки и make debug…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4321031#p4321031"]VladislavS, в Makefile же! Какие "настройки проекта"?[/uquote]Тогда уже в ключах компилятора, если быть точным. А в ключи компилятора они попадают из настроек проекта, одним из видов которого makefile можно тоже считать.

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4321031#p4321031"]Вот, кстати, в более свежем Makefile у меня появились make openocd для запуска сервера отладки и make debug…[/uquote]Нафига это надо людям, использующим IDE с человеческой отладкой?
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

VladislavS, и Eddy_Em, у мну не получается, не то не другое.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4321036#p4321036"]Нафига это надо людям, использующим IDE с человеческой отладкой?[/uquote]
Я это "человеческим" не считаю. Дрочить мышу - так себе человечность...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

Сообщение azhel12 »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4321042#p4321042"]Я это "человеческим" не считаю. Дрочить мышу - так себе человечность...[/uquote]Вот же:)[uquote="Eddy_Em",url="/forum/viewtopic.php?f=59&t=185169&p=4309825#p4309825"]Пытаюсь таки впервые в жизни отладку при помощи gdb попробовать[/uquote]

Добавлено after 3 minutes 8 seconds:
Почти в тему сделаю рекламу небольшую, уже давно использую связку VSCode + Platformio, понадобилось её без интернета поднять, пришел к решению VS Code + WSL-контейнер, на котором стоит Platformio (с gcc). Оказалось, что компиляция/отладка на Linux (WSL-контейнере) примерно вдвое быстрее, чем в случае, когда все стоит на Windows-хосте.
Ответить

Вернуться в «ARM»