STM32 новичку в ARM что к чему
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="Dimon456",url="/forum/viewtopic.php?p=4321039#p4321039"]VladislavS, и Eddy_Em, у мну не получается, не то не другое.[/uquote]Что там может не получаться? Вместо стартап.s в проект добавить стартап.с. Что тут сложного то?
- Реклама
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
Dimon456, вот под F030. Там же директории: Servo, Chiller, QuadEncoder, uart_blink, uart_blink_dma. И здесь. Я тогда еще USB не раскурил, да и как-то казалось кощунственным ради пары шаговиков F072 пихать, когда хватит и F030 (который тогда стоил 30 рублей, а F072 - 60).
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="Dimon456",url="/forum/viewtopic.php?p=4321057#p4321057"]У вас нет f030, f071 есть.[/uquote]Я же говорил, отличается только списком векторов прерываний.
startup_iar_gcc_keil_stm32f030xc.c
STM32F030CC_flash.lds
STM32F030CC_sram.lds
Проверить в вашей версии CMSIS в файле cmsis_gcc.h определениеЕсли это не так, то либо свежий CMSIS скачать, либо в линкерскриптах поправить имя секции с векторами.
startup_iar_gcc_keil_stm32f030xc.c
STM32F030CC_flash.lds
STM32F030CC_sram.lds
Проверить в вашей версии CMSIS в файле cmsis_gcc.h определение
Код: Выделить всё
#define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section(".vectors")))
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
у меня этого файла нет, даже поиском не нахожу.VladislavS писал(а):Проверить в вашей версии CMSIS в файле cmsis_gcc.h
Вам, VladislavS, Eddy_Em, мой проект скинуть полностью?
- Реклама
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="Dimon456",url="/forum/viewtopic.php?p=4321072#p4321072"]у меня этого файла нет, даже поиском не нахожу.[/uquote]Так не бывает. Вот состав CMSIS/Core/Include/ Без этого ни один заголовочный файл от stm32 не собирается.
[uquote="Dimon456",url="/forum/viewtopic.php?p=4321072#p4321072"]Вам, VladislavS, Eddy_Em, мой проект скинуть полностью?[/uquote]Зачем?
[uquote="Dimon456",url="/forum/viewtopic.php?p=4321072#p4321072"]Вам, VladislavS, Eddy_Em, мой проект скинуть полностью?[/uquote]Зачем?
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
VladislavS, эти файлы (cmsis_compiler.h и cmsis_gcc.h) нужны только под F4. У меня в дереве инклюдов под F0 и F1 их даже нет за ненадобностью.
Вот когда таки решусь перейти на единые инклюды для всех моделей (в принципе, уже практически все есть, нужно лишь аккуратно собрать в одну кучу), то будут и они…
Вот когда таки решусь перейти на единые инклюды для всех моделей (в принципе, уже практически все есть, нужно лишь аккуратно собрать в одну кучу), то будут и они…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
Dimon456, у тебя жесть какая-то в дереве инклюдов. Это же SPL гребаный!
Вот все, что нужно под F0:
Ну и линкер со стартапом.
P.S. Причем, stm32f0.h является тупо оболочкой, которая в зависимости от твоих дефайнов подключает нужный stm32f030xxx.
А еще, если покопаться, можно все stm32f030xxx в один файл свести, используя ifdef'ы.
Вот все, что нужно под F0:
Код: Выделить всё
core_cm0.h
core_cmFunc.h
core_cmInstr.h
stm32f030x6.h
stm32f030x8.h
stm32f030xc.h
stm32f0.h
stm32f0xx.h
vector.h
P.S. Причем, stm32f0.h является тупо оболочкой, которая в зависимости от твоих дефайнов подключает нужный stm32f030xxx.
А еще, если покопаться, можно все stm32f030xxx в один файл свести, используя ifdef'ы.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Dimon456, Eddy_Em, вы прикалываетесь? Пользуйтесь актуальной версией CMSIS.


Спойлер
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
VladislavS, в cmsis_gcc.h объявлены абсолютно те же самые макросы, что и в core_cmInstr.h. Так что, этот заголовочник вообще нигде не нужен!
P.S. Даже CMSIS 2002 года вполне себе актуален. Что там может быть в новых заголовочниках эдакого нужного? Абсолютно ничего!
P.S. Даже CMSIS 2002 года вполне себе актуален. Что там может быть в новых заголовочниках эдакого нужного? Абсолютно ничего!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4321233#p4321233"]Что там может быть в новых заголовочниках эдакого нужного?[/uquote]Я вот макрос __VECTOR_TABLE_ATTRIBUTE использую. Да мало ли что они там ещё за 10 лет исправили. Если интересено, можешь сравнить сам. У меня более интересные дела найдутся.
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4321233#p4321233"]Абсолютно ничего![/uquote]Я больше доверяю разрабочикам ARM.
PS: А зачем ты их вообще подключаешь, если там ничего нужного?
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4321233#p4321233"]Абсолютно ничего![/uquote]Я больше доверяю разрабочикам ARM.
PS: А зачем ты их вообще подключаешь, если там ничего нужного?
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
Ну, мне-то это нафиг не нужно, я даже понятия не имею, что оно делает.__VECTOR_TABLE_ATTRIBUTE
Потому что лень поковыряться и "причесать" нужные CMSIS заголовочники.А зачем ты их вообще подключаешь, если там ничего нужного?
Из всей той толпы макросов у меня разве что DSB() иногда использовалось. Ну, возможно, еще иной раз можно воспользоваться "реверсом" битов, подсчетом количества первых нулевых или преобразованием little/big endian.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4321287#p4321287"]Ну, мне-то это нафиг не нужно[/uquote]Другого я и не ожидал. Ну а мне пофиг, что тебе пофиг! 
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
Добавил 3 файлика, cmsis_compiler.h cmsis_gcc.h и startup_stm32f0xx.cVladislavS писал(а):Dimon456, Eddy_Em, вы прикалываетесь? Пользуйтесь актуальной версией CMSIS.
Проект собирается но с 0 (нулем)
Код: Выделить всё
Program Size:
text data bss dec hex filename
0 0 0 0 0 rnd_f030.elfВот настройки компилятора и линкера
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
А я то думал, что идеальной прошивки не существует, оказывается вот она, есть.
- Сообщения: 848
- Зарегистрирован: Ср авг 03, 2022 05:22:56
[uquote="VladislavS",url="/forum/viewtopic.php?p=4321022#p4321022"][uquote="MLX90640",url="/forum/viewtopic.php?p=4321017#p4321017"]Если автору нужно получить генерацию случайных чисел на основе чтения SRAM, то "случайность" там так себе.[/uquote]Мне тоже кажется идея "так себе", но пусть попробует. .[/uquote]
Кстати, сам решил попробовать читать. Ну как бы результат нестабильный и не всегда случайный, зачастую имеет явную периодичность даже в одном и том же алгоритме, но в разное время. Причем, эта закономерность прослеживается безотносительно алгоритма, как бы ты не извращался с преобразованиями. В общем, имеет склонность к зацикливанию при увеличении числа итераций или кол-ва генерируемых чисел.

Для вычисления следующего адреса ОЗУ я использовал относительное смещение на величину, полученную чтением текущего адреса и взятием из него последовательных 8 бит, начиная с позиции, указанной в текущем адресе в диапазоне 0 ... 16. Таким образом, адрес следующего числа будет находиться в диапазоне +127 ... -128. И берется несколько таких итераций. Если в процессе работы будет достигнута граница разрешенной области памяти, адрес вернется к середине диапазона. Внутри ф-ции адрес объявлен статическим, то есть при следующей генерации числа он берется от предыдущего раза.
Кстати, сам решил попробовать читать. Ну как бы результат нестабильный и не всегда случайный, зачастую имеет явную периодичность даже в одном и том же алгоритме, но в разное время. Причем, эта закономерность прослеживается безотносительно алгоритма, как бы ты не извращался с преобразованиями. В общем, имеет склонность к зацикливанию при увеличении числа итераций или кол-ва генерируемых чисел.
Для вычисления следующего адреса ОЗУ я использовал относительное смещение на величину, полученную чтением текущего адреса и взятием из него последовательных 8 бит, начиная с позиции, указанной в текущем адресе в диапазоне 0 ... 16. Таким образом, адрес следующего числа будет находиться в диапазоне +127 ... -128. И берется несколько таких итераций. Если в процессе работы будет достигнута граница разрешенной области памяти, адрес вернется к середине диапазона. Внутри ф-ции адрес объявлен статическим, то есть при следующей генерации числа он берется от предыдущего раза.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
К чему это всё? Достаточно один раз при старте где-то взять случайное число для инициализации библиотечного генератора.



