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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

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

Сообщение menzoda »

Тогда вообще не понятен смысл второго варианта. Вместо того, чтобы сразу использовать некое значение по адресу 0x40006100, копировать его в переменную, а оттуда уже использовать. Разве что это значение будет использоваться несколько раз, а чтение из нечто находящегося по адресу 0x40006100 очень-очень медленное. Тогда наверное имеет смысл один раз скопировать его в быструю SRAM и использовать уже оттуда. Но как-то это все странно выглядит.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

menzoda писал(а):Разве что это значение будет использоваться несколько раз

Именно. При этом интересует скорость только чтения (копирование оставляем в покое :) ). А вот как быстро происходит чтение из адреса периферии (USB, в данном примере), я не знаю. Думаю вот какие варианты лучше использовать. С переменной будет более читабельно, но окажется ли медленнее? :dont_know:
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

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

Сообщение menzoda »

К периферии доступ должен быть с 0 wait states, так что использовать buff не имеет смысла, только лишнее копирование. А чтобы читабельнее было делаем

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

#define BUFF (*(__IO uint32_t*)(0x40006100))

if (BUFF == 100) {
...
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Не быстрее так будет. Быстрее, если адрес периферийного устройства хранить в переменной, т.е. в ОЗУ. А в вашем примере, хоть дифайни его, хоть прямо в if используй, один черт он за константой адреса полезет во флеш.
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

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

Сообщение menzoda »

Если это мне, то я не говорил что так будет быстрее, мы читабельность обсуждали.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Пардон, увлекся.
ncp1400
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт янв 08, 2015 00:58:11

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

Сообщение ncp1400 »

Быстрее, если адрес периферийного устройства хранить в переменной, т.е. в ОЗУ
не факт. Адрес этой переменной все равно придется загрузить из flash
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Да это, как бы, понятно. При разовом использовании вообще нет смысла ни в какой переменной. Зато если планируется многократное чтение с периферии, то смысл один раз потратиться на инициализацию переменной несомненен, чтобы потом доступ к периферии происходил без ожидания каждый раз, пока целевой адрес будет вытащен из флеша.
ncp1400
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт янв 08, 2015 00:58:11

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

Сообщение ncp1400 »

если весь доступ в одном блоке, то компилер сам догадается один раз загрузить адрес в регистр.
хотя, если жмет, под переменную можно выделить регистр (в GCC вроде доступны R4-R8 http://www.ethernut.de/en/documents/arm-inline-asm.html )
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Подскажите как в IAR, включить функцию profilite function, я её запускаю ставлю на запуск, а после остановки все по нулям и так же с остальными фичами.
Программирую через ST32F4Discovery, вывод SWO подключен.
SyncM
Открыл глаза
Сообщения: 62
Зарегистрирован: Вт ноя 03, 2009 07:44:57

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

Сообщение SyncM »

Скажите пожалуйста, почему во время выполнения программы в контроллере одна переменная начинает изменять другую хотя они ни как не связаны, а потом как переименуешь одну из них добавлением любого символа в конце названия переменной и после компиляции все работает нормально...
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

a5021 писал(а):При разовом использовании вообще нет смысла ни в какой переменной. Зато если планируется многократное чтение с периферии, то смысл один раз потратиться на инициализацию переменной несомненен, чтобы потом доступ к периферии происходил без ожидания каждый раз, пока целевой адрес будет вытащен из флеша.

Компилятор при оптимизации во всем этом прекрасно разберется и, если смысла нет, в память ничего сохранять не будет. Она ж не volatile.
Зато текст аккуратный и читаемый.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

При оценке таких нюансов я бы вообще не закладывался на интеллектуальность компилятора. У него собственная стратегия оптимизации и она не всегда будет совпадать с чьими-то еще представлениями об оптимальности.
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

Добрый день, если правильно понял, то без каких либо изменений в разводке платы и без изменения программы можно заменить STM32F103VET6 на STM32F303VET6.
Подскажите пожалуйста правильно ли понял?
И был ли у кого-то такой опыт?
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

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

Сообщение amv2000 »

baghear писал(а):без каких либо изменений в разводке платы и без изменения программы можно заменить STM32F103VET6 на STM32F303VET6.

Есть документ "Переход от микроконтроллеров STM32F1 к STM32F3", ниже прикреплен. Где сказано, что есть некоторые изменения в выводах. Без перекомпиляции программы думаю не получится.
Вложения
en.DM00073522.pdf
(835.83 КБ) 289 скачиваний
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

Исходники есть и перекомпилировать не вопрос.
Спасибо!!!
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Сижу вот и думаю, а что выходит на ЦАПе МК - меандр с частотой около 1МГц или внутри уже есть подобие фильтра и на выходе "чистый" аналоговый сигнал? Вот бы посмотреть осцилограммы выхода с ЦАП без применения внешних фильтров и емкостной или индуктивной нагрузки... :solder:
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

isx, ЦАП с ШИМ не перепутали? :)))
Не знаю как именно устроен ЦАП в STM32, наверное резисторы и ОУ. :)
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Мурик писал(а): Не знаю как именно устроен ЦАП в STM32, наверное резисторы и ОУ.

Опа... А я думал там с ШИМ работает. Надо будет курнуть даташит :) .
Аватара пользователя
Jeka_M
Встал на лапы
Сообщения: 101
Зарегистрирован: Пт окт 03, 2014 14:50:06

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

Сообщение Jeka_M »

Ответить

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