Cześć.
Nie wiem czy wątek Embedded to dobre miejsce na to, z góry przepraszam jeśli nie. Chociaż piszę tutaj teraz z konkretnym problemem, dałem ogólną nazwę tematu, ponieważ może być tutaj kontynuowana dyskusja o tym, o tych artykułach, coretx m0 itd. Ok, do rzeczy.
Zainteresowały mnie artykuły Rafała Kozika na temat CortexM0. Począwszy od artykułu "Małe jest piękne" z numeru 73 programisty do numeru 75 w którym jest opisane jak kodować w C. Kupiłem 2 miesiące temu tę płytkę Nucleo-F031K6, do tej pory próbowałem klepać kod w assemblerze, a teraz chciałem w C. Z pierwszym kodem który miga diodą nie ma problemu, wklejam do terminala ten kod który jest tam podany w tym artykule, dodaję /* Vector table */ asm(".long 0x20001000"); asm(".long main+1"); bo bez tego nie będzie migać, program się kompiluje, wgrywam go i wszystko działa jak należy. Dioda miga.
arm-none-eabi-gcc -Wall -g -mcpu=cortex-m0 -mthumb -O0 -Ttext 0x8000000 -e main -nostartfiles -o main.elf main.c
Jednak z tym przykładem jak wysyłać i odbierać informacje przez port szeregowy mam problem przy kompilacji. Tak samo, kopiuję te listingi z artykułu i wklejam do terminala.
arm-none-eabi-gcc -c -Wall -g -mcpu=cortex-m0 -mthumb -O0 –specs=nano.specs -o uart.o uart.c
arm-none-eabi-gcc -g -o uart.elf -T linker.ld --specs=nano.specs -nostartfiles -mcpu=cortex-m0 -mthumb startup.o uart.oarm-none-eabi-size uart.elf
I dostaję m.in błędy arm-none-eabi-gcc: error: pecs=nano.specs: No such file or directory oraz arm-none-eabi-gcc: error: uart.oarm-none-eabi-size: No such file or directory arm-none-eabi-gcc: fatal error: input file 'uart.elf' is the same as output file które widać na rysunku poniżej.
Ze skopliowaniem kodu startowego czyli komendą nie ma problemu. Jednak z tym wyżej wywala jakieś błędy i nie bardzo wiem jak ten problem rozwiązać.
arm-none-eabi-gcc -g -o uart.elf -T linker.ld --specs=nano.specs -nostartfiles -mcpu=cortex-m0 -mthumb -I CMSIS startup.S uart.c
Dodam że pobrałem instalki GCC gcc-arm-none-eabi-8-2018-q4-major-win32 z https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
OpenOCD serwer GDB z github.com/gnu-mcu-eclipse/openocd/releases
Niby wszystko powinno być ok, skoro pierwszy program w C do migania diodą działa, a jednak nie jest i nie wiem skąd te błędy. Albo coś przeoczyłem, nie wiem...
Może ktoś miał taki sam problem albo wie jak to rozwiązać.
Pozdrawiam.