Технический форум по робототехнике.
elmot » 31 янв 2012, 00:40
Ставлю в KEIL "Use FPU" и при старте рантайм-библиотеки вылетаю в HardFault_Handler.
Проект на C++, библиотека стандартная. RTOS нету, кейл 4.22.
ЧЯДНТ?
Последний раз редактировалось
elmot 31 янв 2012, 15:59, всего редактировалось 1 раз.
Vooon » 31 янв 2012, 11:49
Вот что делать с gcc я знаю, но не с кейлом.
elmot » 31 янв 2012, 13:00
И что сним делать?
Vooon » 31 янв 2012, 14:50
Для gcc нужно чтобы он был собран с поддержкой
-mhard-float и чтобы newlib тоже.
Не уверен, но возможно уже есть
-cpu=cortex-m4f с нужными ключами.
Кстати вот нагуглилось:
03 - Harnisch_ARM_Cortex-M4_DSP_SIMD_FP.pdf
elmot » 31 янв 2012, 15:09
Ага... Кажется, это оно! Спасибо, вечером попробую
Похоже дело не в библиотеках и ключах компилятора, а в том, что FPU включить надо. Некий способ описан в PDF.
galex1981 » 31 янв 2012, 15:20
Главное отпишись по результатам - мне самому интересно как это сделать
elmot » 31 янв 2012, 22:07
Все, проблема решилась. Vooon, спасибо.
в функцию SystemInit(void)
добавить
- Код: Выделить всё • Развернуть
/* FPU settings ------------------------------------------------------------*/
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
kyb » 04 апр 2014, 09:30
Спасибо помогло
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
dccharacter » 04 апр 2014, 22:38
гггг, авр, серьезно?
3 = 0b11
два бита кагбэ
avr123.nm.ru » 04 апр 2014, 23:05
я понимаю что 2, просто не понимаю почему. я ж не пробовал их ни разу.
dccharacter » 05 апр 2014, 01:15
avr123.nm.ru писал(а):я понимаю что 2, просто не понимаю почему. я ж не пробовал их ни разу.
Ээээ, ну часто бывает, что настройка чего-то не просто вкл/выкл, а как, например, оптимизация - выкл, 1,2,3 левел. Попробуй одним битом представить это.
avr123.nm.ru » 05 апр 2014, 01:37
дак cp10 cp11 по 2 бита чтоль? вот и непонятно, привык к 1 битным битам настройки
dccharacter » 05 апр 2014, 04:59
Посмотри инициализацию осцилляторов в пиках. Да и куча регистров, определяются как бит-поля. По 2-3-4 бита легко. Мильен раз видел.
elmot » 06 апр 2014, 14:47
Двухбитные поля.
http://infocenter.arm.com/help/index.js ... DBFBJ.htmlОдин бит - разрешегние FPU для привелигерованного режима, второй - для обычного.
Вот почему 2 сопроцессора - вот сие вопрос
Добавлено спустя 25 минут 47 секунд:avr, а зачем ты "только мечтаешь"? купи себе одну из плат дискавери и развлекайся