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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

[uquote="baghear",url="/forum/viewtopic.php?p=3351981#p3351981"]Добрый день, можно ли отлаживать программу в кейл если она начинается не с базового адреса, а например с 0x800A000?[/uquote]

Можно.

ВячеславX , в Keil можно делать ассемблерные вставки где угодно и как угодно.

Например (взято из FreeRTOS CM4F port):

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

__asm void prvEnableVFP( void )
{
	PRESERVE8

	/* The FPU enable bits are in the CPACR. */
	ldr.w r0, =0xE000ED88
	ldr	r1, [r0]

	/* Enable CP10 and CP11 coprocessors, then save back. */
	orr	r1, r1, #( 0xf << 20 )
	str r1, [r0]
	bx	r14
	nop
}
Иван Сусанин - первый полупроводник :solder:
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

Ярослав555 писал(а):Да там еще до таймеров и ацп далеко будет - сначала надо тактирование из программы настроить.
Зачем? Тактирование настраивается в system_stm32fxxx.c
После создания проекта, все готово к разработке программы и на настроку тактирования отвлекаться не нужно (если она такая как по умолчанию). Прочитайте для начала. http://purebasic.mybb.ru/viewtopic.php?id=575#p7256
Ярослав555 писал(а):Теперь без CubeMx наверное не одну неделю периферию настраивать пришлось бы
Это совершенно не так. Наоборот библиотека SPL проще чем CubeMx в плане настройки периферии. Но это кто к чему привык.
ВячеславX писал(а):Можно, например, в CubeMx сконфигурировать, а далее на ассемблере писать?
Если для вас важна стабильность и безопасность работы устройств и не хочется при выходе каждой версии куба изучать его библиотеки на предмет ошибок и исправлять файлы проекта из-за несовместимости версий, то куб не самый лучший выбор.
SPL в этом плане лучше. Библиотека устроена проще и вероятность ошибок в ней меньше чем в HAL.
Реклама
Аватара пользователя
ozzy
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вс янв 18, 2009 20:15:27
Откуда: UA ZT

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

Сообщение ozzy »

задам глупый вопрос :))

если stm32f303 затактировать ( при ограничении по внешней тактовой частоте в 32 МГц) от внешнего генератора 50 МГц , он заработает ?
и не спрашивайте зачем(
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

У меня не работает покажите как Вы это делаете?Одни фиг после сброса МК стартует с адреса 0x800000, а программу я расположил чуть дальше.
Меня интересует именно отладка, потому, что сначала Флэша там живёт бутлоадер и не охото его каждый раз перезаписывать после отладки.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ozzy
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вс янв 18, 2009 20:15:27
Откуда: UA ZT

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

Сообщение ozzy »

так мк по любому стартует с того адреса

перенесите программу на 0x800000 , отладите и перенесете обратно

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

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

Сообщение baghear »

Мне бы таки по существу, я же вроде понятно описал задачу.
Как и что переносить я знаю, но вначале памяти живёт бутлоадер и не хотелось бы его трогать))
Реклама
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

baghear, в настройках отладчика поставить галочку Run to main. На вкладке Target вместо 0x8000000 указать свой адрес 0x800A000. При необходимости указать смещение таблицы векторов прерываний, первой строчкой в main

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

SCB->VTOR = ((uint32_t)0x08000000) | (0xA000 & (uint32_t)0x1FFFFF80);
И в настройках отладчика установить Erase sectors
Иван Сусанин - первый полупроводник :solder:
ВячеславX
Прорезались зубы
Сообщения: 239
Зарегистрирован: Пн дек 01, 2008 10:30:05

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

Сообщение ВячеславX »

Что то я вообще запутался??? У Keil свой ассемблер, у IAR свой ассемблер, в мануалах по камню свой ассемблер... Зачем всё это сделано? Мне более естественен и понятен ассемблер который в мануале по нужному мне процессору. В какой программе можно использовать ассемблер, который в мануале по процессору?
Myp3ik спасибо за пример, +, Ярослав555 спасибо за ссылки на pdf, +.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

ARM выкупила Keil и в нем идет компилятор ARM
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

[uquote="ozzy",url="/forum/viewtopic.php?p=3352581#p3352581"]задам глупый вопрос :))

если stm32f303 затактировать ( при ограничении по внешней тактовой частоте в 32 МГц) от внешнего генератора 50 МГц , он заработает ?
и не спрашивайте зачем([/uquote]
Ну 50МГц довольно сложно правильно завести на кристалл. Не проще настроить PLL на умножение скажем 2МГц внешнего кварца и якобы получать номинальную частоту, а в реальности запаять кварц на 8МГц, к примеру?

Но предупреждаю - только для эксперимента. Я недавно наступил на такие грабли - XMega гарантировано работает на 32МГц, на столе стабильно работала на 48-ми. Вот я и зпустил так на обьекте, т-к не хватало вычислительной мощности. А потом получал чудные отчеты от клиента о зависаниях, и в итоге пришлось на поезде 600км туда/обратно ехать чтобы прошить МК.

Добавлено after 3 minutes 34 seconds:
[uquote="ВячеславX",url="/forum/viewtopic.php?p=3352724#p3352724"]Что то я вообще запутался??? У Keil свой ассемблер, у IAR свой ассемблер, в мануалах по камню свой ассемблер... Зачем всё это сделано? Мне более естественен и понятен ассемблер который в мануале по нужному мне процессору. В какой программе можно использовать ассемблер, который в мануале по процессору?
Myp3ik спасибо за пример, +, Ярослав555 спасибо за ссылки на pdf, +.[/uquote]
Вторая ссылка на пдф содержит апноут для АТМЕЛА. Дана как пример Мб Вы не обратили на это внимания.
Аватара пользователя
ozzy
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вс янв 18, 2009 20:15:27
Откуда: UA ZT

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

Сообщение ozzy »

Я недавно наступил на такие грабли
понял - не хочешь сюрпризу, делай согласно документу
ВячеславX
Прорезались зубы
Сообщения: 239
Зарегистрирован: Пн дек 01, 2008 10:30:05

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

Сообщение ВячеславX »

[uquote="Ярослав555",url="/forum/viewtopic.php?p=3352849#p3352849"]Вторая ссылка на пдф содержит апноут для АТМЕЛА. Дана как пример Мб Вы не обратили на это внимания.[/uquote] Да я понял, что можно писать в асм. Я читал информацию в Интернете, что код написанный с ассемблерными вставками, а тем более на ассемблере в Keil не работает в IAR и наоборот. Типа как разные ассемблеры, но я до конца так и не понял. [uquote="Myp3ik",url="/forum/viewtopic.php?p=3352737#p3352737"]ARM выкупила Keil и в нем идет компилятор ARM[/uquote] Что вы имели ввиду? Компилятор имеет меньше ошибок, или поддержка производителя показатель серьёзности?
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Вам, пока вы там выбираете среду разработки, я бы хотел посоветовать все же прикинуть, насколько достижимы те цели, которые вы преследуете. Ассемблер -- это хорошо, но надеюсь вы в курсе, что такой точности со временем выполнения команд, как на AVR или PIC-ах, с ARM-ами у вас может и не быть.
ВячеславX
Прорезались зубы
Сообщения: 239
Зарегистрирован: Пн дек 01, 2008 10:30:05

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

Сообщение ВячеславX »

[uquote="a5021",url="/forum/viewtopic.php?p=3353533#p3353533"]Вам, пока вы там выбираете среду разработки, я бы хотел посоветовать все же прикинуть, насколько достижимы те цели, которые вы преследуете. Ассемблер -- это хорошо, но надеюсь вы в курсе, что такой точности со временем выполнения команд, как на AVR или PIC-ах, с ARM-ами у вас может и не быть.[/uquote] Да, я в курсе, что в ARM есть алгоритм, который увеличивает скорость за счет параллельного выполнения внутрисхемных операций исходя из последующих инструкций, и что эта система не работает например при косвенном переходе и количество тактов на выполнение одной и той же инструкции может быть разной.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Не только в этом дело. На частотах выше 24мгц ядро начинает перемалывать код со скоростью большей, чем флеш может отдавать. Из-за такой разности в скорострельности, ядру приходится время от времени тормозиться, пока происходит считывание инструкций. В какой-то степени эту проблему нивелирует конвейер, но там тоже не все безоблачно. Следствием всей этой чехарды оказывается невозможность во многих случаях посчитать время выполнения того или иного кода, что делает затруднительным реализацию алгоритмов с жесткой растактовкой.
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

Cтрою тут приборчик на f103VDT6. Пару месяцев неспешного кодинга по выходным и все было норм - шилось и отлаживалось. Но вот сегодня пришел с работы, дописал чуть кода, нажал дебаг, оно скомпилило, типа зашило, потом сказало что были варнинги во время даунлоада - не совпадение ряда байт в прошивке. С чего вдруг?! :shock: Ну и конечно добавленный функционал не работает, бреикпоинты на новом коде не срабатывают.
ИАР 8.22, шьется через дискавери. Слышал кто о таком?

Добавлено after 12 minutes 57 seconds:
отбой ребята - скинул частоту SWD с 240 на 100 и пошло. А почему так получилось - без понятия.
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

Добрый день, у RTC есть два предделителя синхронный и асинхронный. Подскажите пожалуйста в чем разница?
alexf58
Нашел транзистор. Понюхал.
Сообщения: 183
Зарегистрирован: Сб фев 09, 2013 23:00:23

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

Сообщение alexf58 »

Вопрос к знатокам. Мне надо сохранять интервалы времени между приходящими импульсами. F407 CPU. Настроил таймер, интерапт по capture ch1, читаю count, вычитаю предыдущий. Все хорошо. Но хотелось бы еще лучше. Можно ли настроить таймер так, чтобы он при поступлении импульса сохранял счетчик (скажем по DMA) и автоматом обнулял? Тогда бы не надо было вычитать и не надо прерывания на каждый импульс.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

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

Сообщение Z_h_e »

alexf58 писал(а):читаю count
В смысле читаете счетчик? Данные захватываются в специальный регистр, оттуда и читайте, это будет максимально точное значение.
alexf58 писал(а):Можно ли настроить таймер так, чтобы он при поступлении импульса сохранял счетчик (скажем по DMA) и автоматом обнулял?
Почитайте про режим PWM input mode.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Frogfot
Мучитель микросхем
Сообщения: 443
Зарегистрирован: Ср окт 19, 2011 08:48:27
Откуда: Мать городов русских

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

Сообщение Frogfot »

Народ, только начал юзать STM32F051R8 на Discovery под Keil - pls кому не в лом, киньте пример инициализации TIM2 или TIM3 с прерыванием и как оформляется прерывание, ато после AVR тяжко втыкать.
Хорошему коту и в декабре - март :)
Ответить

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