Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

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

Чт апр 12, 2018 14:14:11

Добрый день, можно ли отлаживать программу в кейл если она начинается не с базового адреса, а например с 0x800A000?


Можно.

Вячеслав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
}

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

Чт апр 12, 2018 15:15:03

Ярослав555 писал(а):Да там еще до таймеров и ацп далеко будет - сначала надо тактирование из программы настроить.
Зачем? Тактирование настраивается в system_stm32fxxx.c
После создания проекта, все готово к разработке программы и на настроку тактирования отвлекаться не нужно (если она такая как по умолчанию). Прочитайте для начала. http://purebasic.mybb.ru/viewtopic.php?id=575#p7256

Ярослав555 писал(а):Теперь без CubeMx наверное не одну неделю периферию настраивать пришлось бы
Это совершенно не так. Наоборот библиотека SPL проще чем CubeMx в плане настройки периферии. Но это кто к чему привык.

ВячеславX писал(а):Можно, например, в CubeMx сконфигурировать, а далее на ассемблере писать?
Если для вас важна стабильность и безопасность работы устройств и не хочется при выходе каждой версии куба изучать его библиотеки на предмет ошибок и исправлять файлы проекта из-за несовместимости версий, то куб не самый лучший выбор.
SPL в этом плане лучше. Библиотека устроена проще и вероятность ошибок в ней меньше чем в HAL.

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

Чт апр 12, 2018 18:30:50

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

если stm32f303 затактировать ( при ограничении по внешней тактовой частоте в 32 МГц) от внешнего генератора 50 МГц , он заработает ?
и не спрашивайте зачем(

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

Чт апр 12, 2018 19:44:22

У меня не работает покажите как Вы это делаете?Одни фиг после сброса МК стартует с адреса 0x800000, а программу я расположил чуть дальше.
Меня интересует именно отладка, потому, что сначала Флэша там живёт бутлоадер и не охото его каждый раз перезаписывать после отладки.

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

Чт апр 12, 2018 20:38:31

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

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

с адреса 0x800000 прыгайте на старт программы, но тут есть нюанс что указатель на стек и на таблицу прерываний скорей всего нужно корректировать, пускай более опытные коты подскажут

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

Чт апр 12, 2018 20:50:40

Мне бы таки по существу, я же вроде понятно описал задачу.
Как и что переносить я знаю, но вначале памяти живёт бутлоадер и не хотелось бы его трогать))

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

Чт апр 12, 2018 21:07:47

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

Код:
SCB->VTOR = ((uint32_t)0x08000000) | (0xA000 & (uint32_t)0x1FFFFF80);


И в настройках отладчика установить Erase sectors

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

Чт апр 12, 2018 22:31:09

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

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

Чт апр 12, 2018 23:27:51

ARM выкупила Keil и в нем идет компилятор ARM

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

Пт апр 13, 2018 08:56:51

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

если stm32f303 затактировать ( при ограничении по внешней тактовой частоте в 32 МГц) от внешнего генератора 50 МГц , он заработает ?
и не спрашивайте зачем(

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

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

Добавлено after 3 minutes 34 seconds:
Что то я вообще запутался??? У Keil свой ассемблер, у IAR свой ассемблер, в мануалах по камню свой ассемблер... Зачем всё это сделано? Мне более естественен и понятен ассемблер который в мануале по нужному мне процессору. В какой программе можно использовать ассемблер, который в мануале по процессору?
Myp3ik спасибо за пример, +, Ярослав555 спасибо за ссылки на pdf, +.

Вторая ссылка на пдф содержит апноут для АТМЕЛА. Дана как пример Мб Вы не обратили на это внимания.

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

Пт апр 13, 2018 09:38:37

Я недавно наступил на такие грабли


понял - не хочешь сюрпризу, делай согласно документу

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

Пт апр 13, 2018 16:17:35

Вторая ссылка на пдф содержит апноут для АТМЕЛА. Дана как пример Мб Вы не обратили на это внимания.
Да я понял, что можно писать в асм. Я читал информацию в Интернете, что код написанный с ассемблерными вставками, а тем более на ассемблере в Keil не работает в IAR и наоборот. Типа как разные ассемблеры, но я до конца так и не понял.
ARM выкупила Keil и в нем идет компилятор ARM
Что вы имели ввиду? Компилятор имеет меньше ошибок, или поддержка производителя показатель серьёзности?

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

Пт апр 13, 2018 21:50:19

Вам, пока вы там выбираете среду разработки, я бы хотел посоветовать все же прикинуть, насколько достижимы те цели, которые вы преследуете. Ассемблер -- это хорошо, но надеюсь вы в курсе, что такой точности со временем выполнения команд, как на AVR или PIC-ах, с ARM-ами у вас может и не быть.

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

Пт апр 13, 2018 22:19:56

Вам, пока вы там выбираете среду разработки, я бы хотел посоветовать все же прикинуть, насколько достижимы те цели, которые вы преследуете. Ассемблер -- это хорошо, но надеюсь вы в курсе, что такой точности со временем выполнения команд, как на AVR или PIC-ах, с ARM-ами у вас может и не быть.
Да, я в курсе, что в ARM есть алгоритм, который увеличивает скорость за счет параллельного выполнения внутрисхемных операций исходя из последующих инструкций, и что эта система не работает например при косвенном переходе и количество тактов на выполнение одной и той же инструкции может быть разной.

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

Пт апр 13, 2018 22:37:38

Не только в этом дело. На частотах выше 24мгц ядро начинает перемалывать код со скоростью большей, чем флеш может отдавать. Из-за такой разности в скорострельности, ядру приходится время от времени тормозиться, пока происходит считывание инструкций. В какой-то степени эту проблему нивелирует конвейер, но там тоже не все безоблачно. Следствием всей этой чехарды оказывается невозможность во многих случаях посчитать время выполнения того или иного кода, что делает затруднительным реализацию алгоритмов с жесткой растактовкой.

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

Вт апр 17, 2018 20:49:46

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

Добавлено after 12 minutes 57 seconds:
отбой ребята - скинул частоту SWD с 240 на 100 и пошло. А почему так получилось - без понятия.

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

Чт апр 19, 2018 12:28:19

Добрый день, у RTC есть два предделителя синхронный и асинхронный. Подскажите пожалуйста в чем разница?

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

Пт апр 20, 2018 04:42:14

Вопрос к знатокам. Мне надо сохранять интервалы времени между приходящими импульсами. F407 CPU. Настроил таймер, интерапт по capture ch1, читаю count, вычитаю предыдущий. Все хорошо. Но хотелось бы еще лучше. Можно ли настроить таймер так, чтобы он при поступлении импульса сохранял счетчик (скажем по DMA) и автоматом обнулял? Тогда бы не надо было вычитать и не надо прерывания на каждый импульс.

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

Пт апр 20, 2018 09:03:48

alexf58 писал(а):читаю count
В смысле читаете счетчик? Данные захватываются в специальный регистр, оттуда и читайте, это будет максимально точное значение.

alexf58 писал(а):Можно ли настроить таймер так, чтобы он при поступлении импульса сохранял счетчик (скажем по DMA) и автоматом обнулял?
Почитайте про режим PWM input mode.

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

Пт апр 20, 2018 09:16:33

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