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

 
 
> Подключение libc (из состава arm-kgp-eabi) на STM32, Необходимо подключит стандартную библиотеку к проекту
gba
сообщение Feb 17 2011, 06:18
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 21-01-11
Пользователь №: 62 381



Пытаюсь подключить стандартную библиотеку к проекту для STM32. Использую Eclipse + тулчейн от KGP.

Насколько я понимаю, линкер должен выдать мне десяток сообщений о том, что не найдены системные вызовы типа sbrk, read, write и т.д., но ничего подобного не происходит все компилится на ура. Однако при попытке вызова printf() проц вываливается в HardFault. Если я правильно понимаю это может происходить из-за проблем с адресацией(?). Т.е., например, указатель указывает на область данных?

Параметры компиляции:

Код
CROSS_COMPILE    = arm-kgp-eabi-
CC                = $(CROSS_COMPILE)gcc
LD                = $(CROSS_COMPILE)gcc
AR                = $(CROSS_COMPILE)ar
AS                = $(CROSS_COMPILE)as
CP                = $(CROSS_COMPILE)objcopy
OD                = $(CROSS_COMPILE)objdump
OPENOCD            = openocd

CCFLAGS    = -std=c99 -I./ -c -fno-common -O0 -g -mcpu=cortex-m3 -mthumb -DSTM32F10X_HD -DUSE_FULL_ASSERT -DUSE_STDPERIPH_DRIVER
ARFLAGS = -rcs
LDFLAGS    = -Tstm32_flash.ld -nostartfiles -nostdlib -L../lib
CPFLAGS    = -Obinary
ODFLAGS    = -S


В чем может быть косяк?

PS Могу выложить Makefile целиком, если необходимо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
gba
сообщение Feb 28 2011, 07:08
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 21-01-11
Пользователь №: 62 381



Можно не любить калькулятор, но он тем не менее ускоряет работу sm.gif Честно говоря, я первый раз сталкиваюсь с таким глюкаловом при отладке. Хотя может это специфика отладки железок?

Спасибо за работающий обработчик HardFault. К сожалению он ясности не добавил, вот что в регистрах:
Код
        r0 = 0x08018238
        r1 = 0x000000FF
        r2 = 0x00000001
        r3 = 0x200008F0
        r12 = 0xFFEFFBFF
        lr = 0x08000829
        pc = 0x0800128C
        psr = 0x21000000

По адресу 0x0800128C вызов printf():
Код
287           printf("New DBGU enabled %d!\n", 0xff);
08001280:   movw r0, #33336; 0x8238
08001284:   movt r0, #2049 ; 0x801
08001288:   mov.w r1, #255 ; 0xff
0800128c:   blx 0x800e050 <printf>

Соответственно по адресу 0x0800e050 printf() и лежит:
Код
          printf:
0800e050:   push {r0, r1, r2, r3}
0800e054:   push {lr}              ; (str lr, [sp, #-4]!)
0800e058:   ldr r3, [pc, #44]      ; 0x800e08c <printf+60>
0800e05c:   sub sp, sp, #12
0800e060:   ldr r0, [r3]
0800e064:   add r12, sp, #20
0800e068:   ldr r1, [r0, #8]
0800e06c:   ldr r2, [sp, #16]
0800e070:   mov r3, r12
0800e074:   str r12, [sp, #4]
0800e078:   bl 0x800e1a4 <_vfprintf_r>
... ... ...

Принципиальных отличий с Вашим примером не смог пока найти... пробовал даже подсовывать в свой проект Ваши sysinit.c и syscalls.c толку ноль. Скрипт линкера тоже такой же. Единственное, что может еще отличаться это Standard Peripheral Library - я качал где-то месяц назад с сайта ST.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 28 2011, 09:08
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(gba @ Feb 28 2011, 12:08) *
Можно не любить калькулятор, но он тем не менее ускоряет работу sm.gif

Посчитать 2+2 быстрее в умеsm.gif
Цитата(gba @ Feb 28 2011, 12:08) *
Код
0800128c:   blx 0x800e050 <printf>

Меня смутило blx. Насколько я понимаю, это вызов с переключением режима. Причём, поскольку операнд имеет сброшенный нулевой бит, то переключение в ARM-моде, которого в кортексах нет. Вот и HardFault... Вы случаем не потеряли ключик -mthumb или что-то типа того?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- gba   Подключение libc (из состава arm-kgp-eabi) на STM32   Feb 17 2011, 06:18
- - AHTOXA   Цитата(gba @ Feb 17 2011, 11:18) Могу выл...   Feb 17 2011, 07:22
- - gba   Вот... Тот кусок, что в первом посте и есть option...   Feb 17 2011, 07:36
|- - AHTOXA   Хм. Странно. Вроде нормально всё. Я самые свежие k...   Feb 17 2011, 09:06
|- - timm   Слаб я в армах, но: Цитата(gba @ Feb 17 2011,...   Feb 24 2011, 11:01
|- - gba   timm, честно говоря, не понял, что Вас смутило с l...   Feb 25 2011, 15:23
|- - AHTOXA   Цитата(gba @ Feb 25 2011, 20:23) AHTOXA, ...   Feb 25 2011, 17:59
|- - gba   Цитата(AHTOXA @ Feb 25 2011, 20:59) А про...   Feb 25 2011, 18:46
|- - AHTOXA   Я редко пользуюсь отладчиком, но когда пробовал, в...   Feb 25 2011, 19:21
|- - gba   Цитата(AHTOXA @ Feb 25 2011, 22:21) Я ред...   Feb 25 2011, 21:19
- - gba   Проект собирается, правда заливать не пробовал... ...   Feb 17 2011, 14:50
|- - AHTOXA   Цитата(gba @ Feb 17 2011, 19:50) Проект с...   Feb 17 2011, 17:59
- - gba   Да, с Code Sourcery эффект есть. Выкинул файл sysc...   Feb 17 2011, 18:27
- - gba   Оказалось не все так радужно. При попытке вызова p...   Feb 24 2011, 10:44
|- - AHTOXA   Цитата(gba @ Feb 24 2011, 15:44) При попы...   Feb 24 2011, 11:46
- - KnightIgor   Цитата(gba @ Feb 17 2011, 07:18) Пытаюсь ...   Feb 26 2011, 12:11
|- - gba   Цитата(KnightIgor @ Feb 26 2011, 15:11) А...   Feb 26 2011, 13:51
|- - KnightIgor   Цитата(gba @ Feb 26 2011, 14:51) А вот дл...   Feb 26 2011, 15:06
|- - gba   Цитата(KnightIgor @ Feb 26 2011, 18:06) Э...   Feb 26 2011, 19:47
|- - AHTOXA   Вот за это я и не люблю отладчики. Они зачастую сб...   Feb 26 2011, 21:26
- - gba   Цитата(AHTOXA @ Feb 28 2011, 12:08) Меня ...   Feb 28 2011, 09:46
- - AHTOXA   Да ерунда всё это. Нормальный процесс начального в...   Feb 28 2011, 10:46


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

 


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


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