Не получается запустить бинарник на stm32f0discovery
splinter
Пункты: 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
Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
на местном форуме stm32 обсуждают крайне мало, т.ч. вам путь на electronix.ru - там кишат эстеэмшики
что у вас с тактированием АРМа, если базовый кварц на 8-25МГц, а потом PLL, то где инит PLL..
иначе, имхо, на такой частоте миллион на ожидание многовато..
если есть осцилл, то уберите вызов задержек и осциллом гляньте на копытце АРМа..
На любой вопрос есть любой ответ.
splinter
Пункты: 1549
Регистрация: 16.12.2011
Пол: Мужчина
это может быть из-за того что я пытаюсь залить туда бинарник в формате elf?
Jury093
Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата это может быть из-за того что я пытаюсь залить туда бинарник в формате elf?
вполне может быть..
структура исполняемых бинарников - это забота ОС.. в голом камне есть только понятие потока 0 и 1..
посмотрите, нет ли рядом с *.elf что-то такое же с расширением *.bin..
или *.hex, который можно скормить отладчику..
На любой вопрос есть любой ответ.