|
HardFault на операциях с double |
|
|
|
Sep 16 2010, 10:25
|

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

|
Компилятор Sourcery G++ Lite 2010q1-188. Ядро Cortex-M3. При попытке выполнить операции с данными типа double контроллер вылетает в HardFault Exaption. Таже сама программа скомпилированая IAR работает нормально. Ключи компиляции Код CFLAGS = -mcpu=cortex-m3 -mthumb -Wall -g $(OPTIMIZATION) $(INCLUDES) LDFLAGS = -Wl,--gc-sections,-Map=$@.map,-cref,-u,Reset_Handler -T link.ld Подскажите в чем может быть причина возникновения исключительной ситуации?
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
 |
Ответов
|
Sep 21 2010, 12:08
|

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

|
Цитата(klen @ Sep 21 2010, 15:38)  глубина стека потребная для вызова вашей функции - 20 байтов, прогнал на всех значениях для входного параметра, у меня все работает.
я уже думаю что у вас проблемы не с флотами а с иницализацией в crt коде до кучи покажите ключи оптимизации, вдруг вы умудрились воткнуть ему аппраратную плавучку... Код 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
#------------------------------------------------------------------------------- # Rules #-------------------------------------------------------------------------------
all: clean gccversion $(BIN) $(OBJ) flash
$(BIN) $(OBJ): mkdir $@
define RULES C_OBJECTS_$(1) = $(addprefix $(OBJ)/$(1)_, $(C_OBJECTS)) ASM_OBJECTS_$(1) = $(addprefix $(OBJ)/$(1)_, $(ASM_OBJECTS))
$(1): $$(ASM_OBJECTS_$(1)) $$(C_OBJECTS_$(1)) $(CC) $(LDFLAGS) -o $(OUTPUT).elf $$^ $(OBJCOPY) -O binary $(OUTPUT).elf $(OUTPUT).bin $(OBJDUMP) -h -z -S $(OUTPUT).elf > $(OUTPUT).lss $(SIZE) $$^ $(OUTPUT).elf
$$(C_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.c Makefile $(OBJ) $(BIN) $(CC) $(CFLAGS) -D$(1) -c -o $$@ $$<
$$(ASM_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.S Makefile $(OBJ) $(BIN) $(CC) $(ASFLAGS) -D$(1) -c -o $$@ $$< crt код это sturtup ? Если да, то вот его фрагменты Код ............................. #define STACK_SIZE 0x00000100 /*!< Stack size (in Words) */ __attribute__ ((section(".co_stack"))) unsigned long pulStack[STACK_SIZE];
...............................
__attribute__ ((section(".isr_vector"))) void (* const g_pfnVectors[])(void) = { /*----------Core Exceptions-------------------------------------------------*/ (void *)&pulStack[STACK_SIZE-1], /*!< The initial stack pointer */ Reset_Handler, /*!< Reset Handler
.................................................................
void Default_Reset_Handler(void) { /* Initialize data and bss */ unsigned long *pulSrc, *pulDest;
/* Copy the data segment initializers from flash to SRAM */ pulSrc = &_sidata;
for(pulDest = &_sdata; pulDest < &_edata; ) { *(pulDest++) = *(pulSrc++); }
/* Zero fill the bss segment. This is done with inline assembly since this will clear the value of pulDest if it is not kept in a register. */ __asm(" ldr r0, =_sbss\n" " ldr r1, =_ebss\n" " mov r2, #0\n" " .thumb_func\n" "zero_loop:\n" " cmp r0, r1\n" " it lt\n" " strlt r2, [r0], #4\n" " blt zero_loop");
/* Setup the microcontroller system. */ SystemInit(); // Настройка PLL
/* Call the application's entry point.*/ main(); } Вот как описана секция .co_stackКод /* stack section */ .co_stack (NOLOAD): { . = ALIGN(8); *(.co_stack .co_stack.*) } > ram
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
Сообщений в этой теме
dimka76 HardFault на операциях с double Sep 16 2010, 10:25 klen на вскидку приходит мысль только о том что линкер ... Sep 16 2010, 16:18 AHTOXA У меня на прошлой сборке (arm-2009q1-161-arm-none-... Sep 16 2010, 17:02 dimka76 Цитата(klen @ Sep 16 2010, 20:18) на вски... Sep 17 2010, 05:03  klen а со стеком все впорядке,? плавющая запятая реали... Sep 18 2010, 14:45   dimka76 Цитата(klen @ Sep 18 2010, 18:45) а со ст... Sep 20 2010, 05:29    klen Цитата(dimka76 @ Sep 20 2010, 09:29) Я во... Sep 20 2010, 09:33     dimka76 Цитата(klen @ Sep 20 2010, 13:33) дайте и... Sep 20 2010, 09:42 dimka76 Цитата(_Pasha @ Sep 20 2010, 20:20) Дима,... Sep 21 2010, 04:50   dimka76 Цитата(klen @ Sep 21 2010, 15:38) глубина... Sep 22 2010, 04:30    klen Цитата(dimka76 @ Sep 22 2010, 08:30) Вы н... Sep 22 2010, 10:03     dimka76 Цитата(klen @ Sep 22 2010, 14:03) проверя... Sep 22 2010, 10:57 GetSmart Разве под отладчиком нельзя найти место "свал... Sep 22 2010, 04:28 dimka76 Удалось решить проблему.
Собрал свой проектик в K... Sep 24 2010, 09:56 _Pasha Цитата(dimka76 @ Sep 24 2010, 13:56) КодL... Sep 24 2010, 11:39  dimka76 Цитата(_Pasha @ Sep 24 2010, 15:39) 1.У В... Sep 24 2010, 12:01   klen -mcpu=cortex-m3 -mthumb
это никак не могло сыграт... Sep 24 2010, 12:45    dimka76 Цитата(klen @ Sep 24 2010, 16:45) а вот -... Sep 24 2010, 12:52   MrYuran Цитата(dimka76 @ Sep 24 2010, 16:01) А пл... Sep 24 2010, 13:41 dimka76 Поэкспериментировав с ключиками линкера выяснил, ч... Sep 25 2010, 03:47 klen Цитата(dimka76 @ Sep 25 2010, 07:47) Поэк... Sep 25 2010, 06:39  dimka76 Цитата(klen @ Sep 25 2010, 10:39) бред ка... Sep 25 2010, 06:47
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|