реклама на сайте
подробности

 
 
> stm32 gcc lib printf улетает в HardFault_Handler, Не получается запустить printf улетает в HardFault_Handler
marka
сообщение Nov 26 2015, 20:16
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 26-11-15
Пользователь №: 89 481



Здравствуйте.

Суть проблемы...

Пытаюсь вызвать стандартный printf из stdio и после вызова вылетает в HardFault_Handler.

Запускал отладчик смотрел на каком месте падает...
На строчке ldrh r2, [r1, #12]

Код
        862 [1]    in ../../../../../../newlib/libc/stdio/vfprintf.c
0x8003934  <+0x0034>        51 46        mov    r1, r10
0x8003936  <+0x0036>        8a 89        ldrh    r2, [r1, #12]


Есть подозрения что что-то с линковкой (адреса путаются)... или флаги линковщику особенные нужно скармливать...

Да! Заранее конечно подготовил мин. набор функция для библиотеки _write, _read и другие. Линковка проходит нормально, не ругается это точно.

Хочу узнать ваши предположения. Может кто сталкивался с такой проблемой...

Кусок из makefile, то что касается линковщика:

Код
LD     =arm-none-eabi-ld

LIB_B       =/usr/lib/arm-none-eabi/newlib/armv6-m/
LIB_GCC =/usr/lib/gcc/arm-none-eabi/4.8.2/armv6-m/
LIB_OP    =-L$(LIB_B) -lc -lg -L$(LIB_GCC) -lgcc
LINKOP   =-T link.ld

AFOBJ= \
    startup_stm32f0xx.o \
    user_io.o \
    main.o \
    phisic.o

$(LD) $(AFOBJ)  $(LINKOP) $(LIB_OP) -o $(PBIN)$(NAMEPROJ).elf


Вот скрипт линкера (самописный):
CODE
MEMORY
{
FLASH(RX) : ORIGIN = 0x08000000, LENGTH = 64K
RAM(rwx) : ORIGIN = 0x20000000, LENGTH = 8K
}

_Min_Heap_Size =1; /* required amount of heap */

SECTIONS
{
.isr_vector : ALIGN(4)
{
_start_isr_vector = .;
KEEP(*(.isr_vector))
_end_isr_vector = .;
. = 0xc8 - _end_isr_vector + ALIGN(2);
KEEP(*(.loop))
} > FLASH = 0xff

.text : ALIGN(4)
{
_start_text = .;
*(.text)
*(.text*)
KEEP(*(.data_flash))
_end_text = .;
} > FLASH

.rodata : ALIGN(4)
{
_start_rodata = .;
*(.rodata)
*(.rodata*)
_end_rodata = .;
} > RAM AT > FLASH

.data : ALIGN(4)
{
_start_data = .;
*(.data)
*(.data*)
_end_data = .;
} > RAM AT > FLASH

.bss : ALIGN(4)
{
_start_bss = .;
*(.bss)
*(.bss*)
_end_bss = .;
} > RAM

.heap :
{
. = ALIGN(4);
PROVIDE(end = .);
KEEP(*(.heap))

. = . + _Min_Heap_Size;
} > RAM
}

_size_rodata = SIZEOF(.rodata);
_size_data = SIZEOF(.data);
_size_bss = SIZEOF(.bss);

_start_rodata_copi = _end_text;
_start_data_copi = _end_text + _size_rodata;
_start_bss_copi = _end_text + _size_rodata + _size_data;


Сообщение отредактировал IgorKossak - Nov 27 2015, 08:42
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- marka   stm32 gcc lib printf улетает в HardFault_Handler   Nov 26 2015, 20:16
- - slavokhire5   Вероятно проблемы с не выровнянным доступом. В f0...   Nov 26 2015, 22:43
|- - marka   Большое спасибо что откликнулись) Цитата(slavokhi...   Nov 27 2015, 08:20
|- - AHTOXA   Стек должен быть выровнен на 8 байт. Проверьте это...   Nov 27 2015, 09:50
|- - marka   Цитата(AHTOXA @ Nov 27 2015, 13:50) Стек ...   Nov 27 2015, 10:08
|- - Сергей Борщ   Цитата(marka @ Nov 27 2015, 13:08) Я толь...   Nov 27 2015, 11:13
|- - marka   Цитата(Сергей Борщ @ Nov 27 2015, 14:13) ...   Nov 27 2015, 16:24
|- - AHTOXA   Осей никаких не используете? Ну и покажите, наконе...   Nov 27 2015, 17:40
|- - marka   Цитата(AHTOXA @ Nov 27 2015, 20:40) Осей ...   Nov 27 2015, 18:11
|- - marka   Цитата(marka @ Nov 27 2015, 21:11) Оси не...   Nov 28 2015, 14:15
|- - AHTOXA   Да непонятно. Куда у вас должен выводить текст pri...   Nov 28 2015, 17:00
|- - marka   Цитата(AHTOXA @ Nov 28 2015, 20:00) Да не...   Nov 28 2015, 17:45
|- - marka   Проблема решена А дело вот в чем было... В скрипт...   Nov 28 2015, 21:32
- - Tarbal   Какое содержимое регистров r1, r10 и r2?   Nov 27 2015, 01:45
- - Сергей Борщ   .rodata класть в ОЗУ не нужно.   Nov 28 2015, 22:00
- - marka   Цитата(Сергей Борщ @ Nov 29 2015, 01:00) ...   Nov 28 2015, 22:06


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016