poweroff 0 11 июня, 2020 Опубликовано 11 июня, 2020 · Жалоба Добрый день. Приобрёл оценочную плату для stm32f100rb. Соответственно хочется поморгать светодиодами. Для этого создал проект, в котором : -библиотека CMSIS от ST -stm32_flash.ld от ST -makefile TARGET = main DEVICE = STM32F10X_MD_VL DEVICE_SRCS += Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_md_vl.s SYSTEM_SRCS += Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c INCLUDE_DIRS += -I . INCLUDE_DIRS += -I ./Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x INCLUDE_DIRS += -I ./Libraries/CMSIS/CM3/CoreSupport LINKER_SCRIPT = stm32_flash.ld ASFLAGS += -mcpu=cortex-m3 -mthumb CFLAGS += -c -g -mcpu=cortex-m3 -mthumb -Wall -DSTM32F10X_MD_VL LDFLAGS += -mthumb -mcpu=cortex-m3 CC = arm-none-eabi-gcc AS = arm-none-eabi-as OBJCOPY = arm-none-eabi-objcopy SIZE = arm-none-eabi-size RM = rm .PHONY: all all: startup_stm32f10x_md_vl.o system_stm32f10x.o $(TARGET).o $(TARGET).elf $(TARGET).bin size write startup_stm32f10x_md_vl.o: $(AS) $(ASFLAGS) $(DEVICE_SRCS) -o startup_stm32f10x_md_vl.o system_stm32f10x.o: $(CC) $(CFLAGS) $(INCLUDE_DIRS) $(SYSTEM_SRCS) -o system_stm32f10x.o $(TARGET).o: $(CC) $(CFLAGS) $(INCLUDE_DIRS) $(TARGET).c -o $(TARGET).o $(TARGET).elf: $(CC) -T $(LINKER_SCRIPT) $(LDFLAGS) -o $(TARGET).elf $(TARGET).o startup_stm32f10x_md_vl.o system_stm32f10x.o $(TARGET).bin: $(OBJCOPY) -Obinary $(TARGET).elf $(TARGET).bin size: $(TARGET).elf $(SIZE) $(TARGET).elf clean: $(RM) -f startup_stm32f10x_md_vl.o $(RM) -f system_stm32f10x.o $(RM) -f $(TARGET).o $(RM) -f $(TARGET).elf $(RM) -f $(TARGET).bin $(RM) -f $(TARGET).size write: st-flash write $(TARGET).bin 0x08000000 -main.c #include "stm32f10x.h" int main (void) { RCC->APB2ENR |= 0x00000010; GPIOC->CRH |= 0x00000077; GPIOC->ODR = 0x00000300; while(1) { } } При выполнении make возникает следующая ошибка make arm-none-eabi-gcc -T stm32_flash.ld -mthumb -mcpu=cortex-m3 -o main.elf main.o startup_stm32f10x_md_vl.o system_stm32f10x.o /usr/lib/gcc/arm-none-eabi/7.3.1/../../../arm-none-eabi/bin/ld: /usr/lib/gcc/arm-none-eabi/7.3.1/../../../arm-none-eabi/lib/thumb/v7-m/libc.a(lib_a-exit.o): in function `exit': /tmp/building/package/build/arm-none-eabi/thumb/v7-m/newlib/libc/stdlib/../../../../../../../newlib/libc/stdlib/exit.c:64: undefined reference to `_exit' collect2: error: ld returned 1 exit status make: *** [Makefile:40: main.elf] Ошибка 1 Подскажите, как это вылечить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 11 июня, 2020 Опубликовано 11 июня, 2020 · Жалоба 32 минуты назад, poweroff сказал: Подскажите, как это вылечить. void main() Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
poweroff 0 11 июня, 2020 Опубликовано 11 июня, 2020 · Жалоба Тогда он ругается ещё больше make arm-none-eabi-as -mcpu=cortex-m3 -mthumb Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_md_vl.s -o startup_stm32f10x_md_vl.o arm-none-eabi-gcc -c -g -mcpu=cortex-m3 -mthumb -Wall -DSTM32F10X_MD_VL -I . -I ./Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x -I ./Libraries/CMSIS/CM3/CoreSupport Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c -o system_stm32f10x.o arm-none-eabi-gcc -c -g -mcpu=cortex-m3 -mthumb -Wall -DSTM32F10X_MD_VL -I . -I ./Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x -I ./Libraries/CMSIS/CM3/CoreSupport main.c -o main.o main.c:3:9: warning: return type of 'main' is not 'int' [-Wmain] void main () ^~~~ arm-none-eabi-gcc -T stm32_flash.ld -mthumb -mcpu=cortex-m3 -o main.elf main.o startup_stm32f10x_md_vl.o system_stm32f10x.o /usr/lib/gcc/arm-none-eabi/7.3.1/../../../arm-none-eabi/bin/ld: /usr/lib/gcc/arm-none-eabi/7.3.1/../../../arm-none-eabi/lib/thumb/v7-m/libc.a(lib_a-exit.o): in function `exit': /tmp/building/package/build/arm-none-eabi/thumb/v7-m/newlib/libc/stdlib/../../../../../../../newlib/libc/stdlib/exit.c:64: undefined reference to `_exit' collect2: error: ld returned 1 exit status make: *** [Makefile:40: main.elf] Ошибка 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 11 июня, 2020 Опубликовано 11 июня, 2020 · Жалоба 1 hour ago, poweroff said: Добрый день. Подскажите, как это вылечить. syscalls.c Вот этот файл к проекту подцепите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
poweroff 0 11 июня, 2020 Опубликовано 11 июня, 2020 · Жалоба 1 час назад, dimka76 сказал: syscalls.c 3 kB · 0 downloads Вот этот файл к проекту подцепите. uart.h требует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 11 июня, 2020 Опубликовано 11 июня, 2020 · Жалоба 4 minutes ago, poweroff said: uart.h требует. Закоментируйте в нем #include "uart.h" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
poweroff 0 11 июня, 2020 Опубликовано 11 июня, 2020 · Жалоба 8 минут назад, dimka76 сказал: Закоментируйте в нем #include "uart.h" Пришлось ещё всю функцию int _write(int file, char *ptr, int len) закоментить, но всё с компилировалось. Правда после прошивки, светодиоды так и не загорелись. st-flash write main.bin 0x08000000 st-flash 1.5.1 2020-06-11T15:15:46 INFO common.c: Loading device parameters.... 2020-06-11T15:15:46 INFO common.c: Device connected is: F1 Medium/Low-density Value Line device, id 0x10016420 2020-06-11T15:15:46 INFO common.c: SRAM size: 0x2000 bytes (8 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes 2020-06-11T15:15:46 INFO common.c: Attempting to write 3716 (0xe84) bytes to stm32 address: 134217728 (0x8000000) Flash page at addr: 0x08000c00 erased 2020-06-11T15:15:46 INFO common.c: Finished erasing 4 pages of 1024 (0x400) bytes 2020-06-11T15:15:46 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL core id 2020-06-11T15:15:46 INFO flash_loader.c: Successfully loaded flash loader in sram 4/4 pages written 2020-06-11T15:15:47 INFO common.c: Starting verification of write complete 2020-06-11T15:15:47 INFO common.c: Flash written and verified! jolly good! Спойлер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 11 июня, 2020 Опубликовано 11 июня, 2020 · Жалоба 10 часов назад, poweroff сказал: Подскажите, как это вылечить. Похоже, у вас подключился библиотечный стартап. Добавьте к ключам линкера ключик -nostartfiles. Также полезно дать компилятору ключики -fno-exceptions -fno-rtti, чтобы не тянулись такие тяжёлые штуки. Эти ключи не всегда помогают, но лишними не будут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба 18 часов назад, poweroff сказал: GPIOC->CRH |= 0x00000077; GPIOC->ODR = 0x00000300; Даже когда скомпилится диоды не загорятся. В режиме порта Open Drain выход в 1 установлен. Как это может зажечь что-то? Гляньте приложенный проект. Там ключи компилятора подобраны чтобы по максимуму отключить всё ненужное библиотечное и на CMSIS кодить. make должен на win и linux собрать. Ну и диоды ваши, скорее всего, замигают. Бонусом это же и в Keil с Iar соберётся. STM32F100.ZIP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
poweroff 0 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба Добавил ключи компилятору и линковщику. так же заменил код на. GPIOC->CRH |= 0x00000033; Результат тот же . Вот бинарник который получается, он вначале и в конце почему то пустой. main.bin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба 34 минуты назад, poweroff сказал: GPIOC->CRH |= 0x00000033; И что это изменило? При включении питания было состояние 4. 4 |= 3 получаются те же 7. Open Drain. 38 минут назад, poweroff сказал: Вот бинарник который получается, 3 кB код зажигания светодиода? Вы серьёзно? Я же кидал проект. 500 байт бинарник, из которых 256 таблица векторов прерываний. 43 минуты назад, poweroff сказал: вначале и в конце почему то пустой В начале всё в порядке, там таблица вектров прерываний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
poweroff 0 12 июня, 2020 Опубликовано 12 июня, 2020 · Жалоба 9 минут назад, VladislavS сказал: И что это изменило? При включении питания было состояние 4. 4 |= 3 получаются те же 7. Open Drain. 3 кB код зажигания светодиода? Вы серьёзно? Я же кидал проект. 500 байт бинарник, из которых 256 таблица векторов прерываний. В начале всё в порядке, там таблица вектров прерываний. Действительно, ступил. Исправил на GPIOC->CRH = 0x00000033; и всё заработало. Всем спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
C2000 3 25 июля, 2020 Опубликовано 25 июля, 2020 · Жалоба On 6/12/2020 at 8:20 PM, poweroff said: Действительно, ступил. Исправил на GPIOC->CRH = 0x00000033; и всё заработало. Всем спасибо. Почему не подключить LL драйвера от ST? Это же не HAL который тяжелый и громоздкий а по сути прямой доступ к регистрам, только в более понятной форме. И как раз таких "недоразумений" как у Вас позволил бы избежать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться