Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » ARM
Не получается запустить бинарник на stm32f0discovery
splinter
Добавлено 14.11.2013 21:46
0
Сообщение: 1
splinter
0

Пункты: 1549
Регистрация: 16.12.2011
Пол: Мужчина
main.c:
Код

// Пример проекта для платы STM32F0Discovery
// Моргание светодиодом

#include "stm32f0xx.h"

void SystemInit(void)
{

// Включить тактирование порта C
RCC->AHBENR |= RCC_AHBENR_GPIOCEN;

// 9, 10 выводы - на выход (general purpose output mode)
GPIOC->MODER |= GPIO_MODER_MODER8_0 | GPIO_MODER_MODER9_0;
}

void delay(uint32_t Value)
{
volatile uint32_t Counter = Value;

while(Counter--) { }
}

void led_On(void)
{
GPIOC->BSRR = GPIO_BSRR_BS_9; // Установить бит 9
GPIOC->BSRR = GPIO_BSRR_BS_8;
}

void led_Off(void)
{
GPIOC->BSRR = GPIO_BSRR_BR_9; // Сбросить бит 9
GPIOC->BSRR = GPIO_BSRR_BR_8;
}

int main(void)
{
while(1)
{
led_On();
delay(1000000UL);
led_Off();
delay(1000000UL);
}
}

Makefile:
Код

CC=arm-none-eabi-gcc
AS=arm-none-eabi-as
LD=arm-none-eabi-ld

CCFLAGS=-mcpu=cortex-m0 -mthumb -g
ASFLAGS=-mcpu=cortex-m0 -mthumb -g
OBJS= startup.o \
main.o
main.elf : $(OBJS)
$(LD) $(OBJS) -T linker_script.ld --cref -Map main.map -nostartfiles -o main.elf
main.o: main.c
$(CC) -c $(CCFLAGS) main.c -o main.o

startup.o: startup.s
$(AS) $(ASFLAGS) startup.s -asghl=startup.lst -o startup.o
clean:
rm $(OBJS)
rm main.elf

Для отладки использую st-util + gdb:
Код

./st-util
2013-11-14T22:35:54 INFO src/stlink-common.c: Loading device parameters....
2013-11-14T22:35:54 INFO src/stlink-common.c: Device connected is: F0 device, id 0x20006440
2013-11-14T22:35:54 INFO src/stlink-common.c: SRAM size: 0x2000 bytes (8 KiB), Flash: 0x10000 bytes (64 KiB) in pages of 1024 bytes
Chip ID is 00000440, Core ID is 0bb11477.
KARL - should read back as 0x03, not 60 02 00 00
init watchpoints
Listening at *:4242...

Код

make
arm-none-eabi-as -mcpu=cortex-m0 -mthumb -g startup.s -asghl=startup.lst -o startup.o
arm-none-eabi-gcc -c -mcpu=cortex-m0 -mthumb -g main.c -o main.o
arm-none-eabi-ld startup.o main.o -T linker_script.ld --cref -Map main.map -nostartfiles -o main.elf

Код

arm-none-eabi-gdb main.elf
(gdb) target remote localhost:4242
Remote debugging using localhost:4242
0xfffffffe in ?? ()

Код

GDB connected.
recv: qSupported:multiprocess+;qRelocInsn+
query: Supported;multiprocess+;qRelocInsn+
send: PacketSize=3fff;qXfer:memory-map:read+
recv: Hg0
send:
recv: ?
send: S05
recv: Hc-1
send:
recv: qC
send:
recv: qAttached
query: Attached;
send:
recv: qOffsets
query: Offsets;
send:
recv: Hg0
send:
recv: g
send: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8fffffff9fffffffeffffff
recv: g
send: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8fffffff9fffffffeffffff
recv: qXfer:memory-map:read::0,fff
query: Xfer;memory-map:read::0,fff
Xfer: type:memory-map;op:read;annex:;addr:0;length:4095
send: m<?xml version="1.0"?><!DOCTYPE memory-map PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN" "http://sourceware.org/gdb/gdb-memory-map.dtd"><memory-map> <memory type="rom" start="0x00000000" length="0x10000"/> <memory type="ram" start="0x20000000" length="0x2000"/> <memory type="flash" start="0x08000000" length="0x10000"> <property name="blocksize">0x400</property> </memory> <memory type="ram" start="0x40000000" length="0x1fffffff"/> <memory type="ram" start="0xe0000000" length="0x1fffffff"/> <memory type="rom" start="0x1fffec00" length="0xc00"/> <memory type="rom" start="0x1ffff800" length="0x10"/></memory-map>
recv: qXfer:memory-map:read::27c,d83
query: Xfer;memory-map:read::27c,d83
Xfer: type:memory-map;op:read;annex:;addr:636;length:3459
send: l
recv: mfffffffe,1
send: ff
recv: qSymbol::
query: Symbol;:
send:
recv: qTStatus
query: TStatus;
send:

На этом все, компилятор пробовал от CodeSourcery и 4.6.3 и 4.7.3 все равно без изменений.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 14.11.2013 23:03 Редактировалось 14.11.2013 23:04 Сообщение: 2
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
на местном форуме stm32 обсуждают крайне мало, т.ч. вам путь на electronix.ru - там кишат эстеэмшики
что у вас с тактированием АРМа, если базовый кварц на 8-25МГц, а потом PLL, то где инит PLL..
иначе, имхо, на такой частоте миллион на ожидание многовато..

если есть осцилл, то уберите вызов задержек и осциллом гляньте на копытце АРМа..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
splinter
Добавлено 18.11.2013 15:34 Сообщение: 3
splinter
0

Пункты: 1549
Регистрация: 16.12.2011
Пол: Мужчина
это может быть из-за того что я пытаюсь залить туда бинарник в формате elf?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 18.11.2013 16:14 Сообщение: 4
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
это может быть из-за того что я пытаюсь залить туда бинарник в формате elf?

вполне может быть..
структура исполняемых бинарников - это забота ОС.. в голом камне есть только понятие потока 0 и 1..
посмотрите, нет ли рядом с *.elf что-то такое же с расширением *.bin..
или *.hex, который можно скормить отладчику..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » ARM