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

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

Сообщение 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:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

Сообщение ozzy »

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

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

Сообщение baghear »

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

Сообщение ozzy »

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

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

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

Сообщение baghear »

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

Сообщение Myp3ik »

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

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

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

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

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

Сообщение Myp3ik »

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

Сообщение Ярослав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]
Вторая ссылка на пдф содержит апноут для АТМЕЛА. Дана как пример Мб Вы не обратили на это внимания.
Грызет канифоль
Аватара пользователя
Сообщения: 256
Зарегистрирован: Вс янв 18, 2009 20:15:27
Откуда: UA ZT

Сообщение ozzy »

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

Сообщение Вячеслав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] Что вы имели ввиду? Компилятор имеет меньше ошибок, или поддержка производителя показатель серьёзности?
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

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

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

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

Сообщение a5021 »

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

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

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

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

Сообщение baghear »

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

Сообщение alexf58 »

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

Сообщение Z_h_e »

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

Сообщение Frogfot »

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

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