roboforum.ru

Технический форум по робототехнике.

Очередной вопрос про STM32F407. Как завести FPU?

Очередной вопрос про STM32F407. Как завести FPU?

elmot » 31 янв 2012, 00:40

Ставлю в KEIL "Use FPU" и при старте рантайм-библиотеки вылетаю в HardFault_Handler.
Проект на C++, библиотека стандартная. RTOS нету, кейл 4.22.
ЧЯДНТ?
Последний раз редактировалось elmot 31 янв 2012, 15:59, всего редактировалось 1 раз.

Re: Очередной идиотский вопрос про STM32F407. Как завести FP

Vooon » 31 янв 2012, 11:49

Вот что делать с gcc я знаю, но не с кейлом.

Re: Очередной идиотский вопрос про STM32F407. Как завести FP

elmot » 31 янв 2012, 13:00

И что сним делать?

Re: Очередной идиотский вопрос про STM32F407. Как завести FP

Vooon » 31 янв 2012, 14:50

Для gcc нужно чтобы он был собран с поддержкой -mhard-float и чтобы newlib тоже.
Не уверен, но возможно уже есть -cpu=cortex-m4f с нужными ключами.

Кстати вот нагуглилось: 03 - Harnisch_ARM_Cortex-M4_DSP_SIMD_FP.pdf

Re: Очередной идиотский вопрос про STM32F407. Как завести FP

elmot » 31 янв 2012, 15:09

Ага... Кажется, это оно! Спасибо, вечером попробую
Похоже дело не в библиотеках и ключах компилятора, а в том, что FPU включить надо. Некий способ описан в PDF.

Re: Очередной идиотский вопрос про STM32F407. Как завести FP

galex1981 » 31 янв 2012, 15:20

Главное отпишись по результатам - мне самому интересно как это сделать

Re: Очередной вопрос про STM32F407. Как завести FPU?

elmot » 31 янв 2012, 22:07

Все, проблема решилась. Vooon, спасибо.
в функцию SystemInit(void)
добавить
Код: Выделить всёРазвернуть
  /* FPU settings ------------------------------------------------------------*/
  SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */

Re: Очередной вопрос про STM32F407. Как завести FPU?

kyb » 04 апр 2014, 09:30

:Yahoo!: Спасибо помогло

Re: Очередной вопрос про STM32F407. Как завести FPU?

avr123.nm.ru » 04 апр 2014, 10:58

я только мечатаю про stm32 - поясните кратко почему:
/* FPU settings ------------------------------------------------------------*/
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */

двигается 3 а не 1 и почему *2

Re: Очередной вопрос про STM32F407. Как завести FPU?

dccharacter » 04 апр 2014, 22:38

гггг, авр, серьезно?
3 = 0b11
два бита кагбэ

Re: Очередной вопрос про STM32F407. Как завести FPU?

avr123.nm.ru » 04 апр 2014, 23:05

я понимаю что 2, просто не понимаю почему. я ж не пробовал их ни разу.

Re: Очередной вопрос про STM32F407. Как завести FPU?

dccharacter » 05 апр 2014, 01:15

avr123.nm.ru писал(а):я понимаю что 2, просто не понимаю почему. я ж не пробовал их ни разу.

Ээээ, ну часто бывает, что настройка чего-то не просто вкл/выкл, а как, например, оптимизация - выкл, 1,2,3 левел. Попробуй одним битом представить это.

Re: Очередной вопрос про STM32F407. Как завести FPU?

avr123.nm.ru » 05 апр 2014, 01:37

дак cp10 cp11 по 2 бита чтоль? вот и непонятно, привык к 1 битным битам настройки

Re: Очередной вопрос про STM32F407. Как завести FPU?

dccharacter » 05 апр 2014, 04:59

Посмотри инициализацию осцилляторов в пиках. Да и куча регистров, определяются как бит-поля. По 2-3-4 бита легко. Мильен раз видел.

Re: Очередной вопрос про STM32F407. Как завести FPU?

elmot » 06 апр 2014, 14:47

Двухбитные поля. http://infocenter.arm.com/help/index.js ... DBFBJ.html
Один бит - разрешегние FPU для привелигерованного режима, второй - для обычного.
Вот почему 2 сопроцессора - вот сие вопрос

Добавлено спустя 25 минут 47 секунд:
avr, а зачем ты "только мечтаешь"? купи себе одну из плат дискавери и развлекайся


Rambler\'s Top100 Mail.ru counter