|
HardFault на операциях с double |
|
|
|
Sep 22 2010, 04:30
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(klen @ Sep 21 2010, 15:38)  глубина стека потребная для вызова вашей функции - 20 байтов, прогнал на всех значениях для входного параметра, у меня все работает. Вы на каком контроллере пробовали ? В железе или в симуляторе? Цитата(GetSmart @ Sep 22 2010, 08:28)  Разве под отладчиком нельзя найти место "сваливания"? Нету у меня отладчика  Да и как я писал выше, тот же проект собранный в IAR замечательно работает.
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Sep 22 2010, 10:57
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(klen @ Sep 22 2010, 14:03)  проверял на stm32f103 от контроллера целевой код независит - ядро одно и библиотеки одни, разница только в инициализации микросхемы А можно на ваш пример посмотреть? Особенно интересуют startup, скрипт линкера и makefile. можно на почту dimka76<собака>rambler.ru
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Sep 24 2010, 09:56
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Удалось решить проблему. Собрал свой проектик в Keil, настроил Keil на GCC компилятор. Скомпилировал и все заработало. Посмотрел какие ключи компилятора и линкера генерит Keil. Вставил их в свой makefile и порядок. Вот исходный фрагмент моего makefile Код OPTIMIZATION = -Os CFLAGS = -mcpu=cortex-m3 -mthumb -Wall -g $(OPTIMIZATION) $(INCLUDES) -DSTM32F10X_MD LDFLAGS = -Wl,--gc-sections,-Map=$@.map,-cref,-u,Reset_Handler -T STM32.ld а вот с исправлениями из Keil Код CFLAGS = -c -mcpu=cortex-m3 -mthumb -Wall -gdwarf-2 -Os -mapcs-frame CFLAGS += $(INCLUDES) CFLAGS += -Wall
LDFLAGS = -T link.ld -mcpu=cortex-m3 -mthumb -nostartfiles -Wl,-Map=.map -lm
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Sep 24 2010, 12:01
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(_Pasha @ Sep 24 2010, 15:39)  1.У Вас что, стартап собственный? 2. lm - линкует математику, при чем тут плавучка?  Да, собственный StartUp. А плавучка разве не математика. Это целые для регистров могут быть использованы, а плавучка исключительно для математики. Может тут еще сыграло роль указание для линкера -mcpu=cortex-m3 -mthumbЯ больше с ключами не игрался, заработало и хорошо )))
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Sep 24 2010, 12:52
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(klen @ Sep 24 2010, 16:45)  а вот -nostartfiles должен быть в обязательном порядке, для каждого ядра нада настраивать crt код индивидуельно, еще символы в скрипте линкера коррелируют этим кодом. а если подлинковать непонятно что в качестве crt кода - это то что лежит в пакете по умолчанию то получиш ЧТОТО. если не добавлять -nostartfiles то прилинкуется crt0.o вместо Вашего кода както мы это незаметили. попробуйте убрать -nostartfiles, должно получится глюк как прежде. даю прогноз 56%  PS: компиллер как обычно - не виноват Возможно. Но до того как я добавил этот ключ и не использовал double все работало и прерывания и глубина вызовов была в несколько функций с аргументами, т.е. я хочу сказать, что стек не рушился. А как появились double, то начались Exaption. Как нибудь еще попробую поиграться с -nostartfiles и -lm.
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Sep 25 2010, 06:47
|

developer
   
Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032

|
Цитата(klen @ Sep 25 2010, 10:39)  бред какойто, ..... Может и бред, но у меня так получилось. Если вам интересно докопаться до истины, то можете взглянуть на мой изначальный проект, в котором у меня все кроме double работало и который я выкладывал здесь
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|