|
Проект для STM32F100 компилируется и линкуется gcc, но не работает на МК |
|
|
|
Sep 13 2015, 11:10
|

Участник

Группа: Участник
Сообщений: 25
Регистрация: 13-09-15
Пользователь №: 88 376

|
Здравствуйте, я использую gcc тулсет (arm-none-eabi- v4.9), текстовый редактор (Sublime Text 3) и утилиту make. Это мой простой тестовый проект с таким набором ПО. По факту: проект компилируется, линкуется и я получаю готовый .hex файл. Затем заливаю hex файл в микроконтроллер STM32F100RBT6B (при помощи ST-Link на STM32F1DISCOVERY) и программы STM32 ST-LINK Utility. Микроконтроллер должен вывести лог. 1 на 8-ю и 9-ю ножки порта C, но этого не происходит. Я грешу на makefile (в свою очередь разобрался с ним, добавил комментарии ко всем операциям и флагам) или скрипт для линковщика. Прошу помощи в определении причины неработоспособности прошивки. Проект лежит тут (в корне проекта лежат также файлы, получаемые при построении проекта) : ссылка на проект на гитхабНиже привожу лог построения проекта: CODE --- building ARM-test0. defines: -DSTM32F10X_MD_VL -DHSE_VALUE=8000000 -DUSE_STDPERIPH_DRIVER make clean make[1]: Entering directory 'D:/4 electronics/soft/Sublime Text projects/ARM-test0' --- cleaning... del /f /q .\*.o del /f /q .\*.d del /f /q .\*.lst del /f /q .\*.lss del /f /q .\*.map del /f /q .\*.elf del /f /q .\*.bin del /f /q .\*.hex make[1]: Leaving directory 'D:/4 electronics/soft/Sublime Text projects/ARM-test0' make .\ARM-test0.elf make[1]: Entering directory 'D:/4 electronics/soft/Sublime Text projects/ARM-test0' --- compiling stm32f10x_gpio.c... arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -DSTM32F10X_MD_VL -DHSE_VALUE=8000000 -DUSE_STDPERIPH_DRIVER -I "." -Wa,-adhlns=./stm32f10x_gpio.lst -MD -O1 -g -gdwarf-2 -ffunction-sections -fdata-sections -Wall -Wextra -Wundef -Wcast-align -Winline -o stm32f10x_gpio.o stm32f10x_gpio.c --- compiling system_stm32f10x.c... arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -DSTM32F10X_MD_VL -DHSE_VALUE=8000000 -DUSE_STDPERIPH_DRIVER -I "." -Wa,-adhlns=./system_stm32f10x.lst -MD -O1 -g -gdwarf-2 -ffunction-sections -fdata-sections -Wall -Wextra -Wundef -Wcast-align -Winline -o system_stm32f10x.o system_stm32f10x.c --- compiling core_cm3.c... arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -DSTM32F10X_MD_VL -DHSE_VALUE=8000000 -DUSE_STDPERIPH_DRIVER -I "." -Wa,-adhlns=./core_cm3.lst -MD -O1 -g -gdwarf-2 -ffunction-sections -fdata-sections -Wall -Wextra -Wundef -Wcast-align -Winline -o core_cm3.o core_cm3.c --- compiling stm32f10x_rcc.c... arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -DSTM32F10X_MD_VL -DHSE_VALUE=8000000 -DUSE_STDPERIPH_DRIVER -I "." -Wa,-adhlns=./stm32f10x_rcc.lst -MD -O1 -g -gdwarf-2 -ffunction-sections -fdata-sections -Wall -Wextra -Wundef -Wcast-align -Winline -o stm32f10x_rcc.o stm32f10x_rcc.c --- compiling main.cpp... arm-none-eabi-g++ -c -mcpu=cortex-m3 -mthumb -DSTM32F10X_MD_VL -DHSE_VALUE=8000000 -DUSE_STDPERIPH_DRIVER -I "." -Wa,-adhlns=./main.lst -MD -O1 -g -gdwarf-2 -ffunction-sections -fdata-sections -Wall -Wextra -Wundef -Wcast-align -Winline -std=gnu++0x -funsigned-bitfields -fshort-enums -o main.o main.cpp --- assembling startup_ARMCM3.s... arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -DSTM32F10X_MD_VL -DHSE_VALUE=8000000 -DUSE_STDPERIPH_DRIVER -I "." -Wa,-adhlns=./startup_ARMCM3.lst -MD -O1 -g -gdwarf-2 -ffunction-sections -fdata-sections -Wall -Wextra -Wundef -Wcast-align -Winline -x assembler-with-cpp -o startup_ARMCM3.o startup_ARMCM3.s --- linking... arm-none-eabi-g++ ././stm32f10x_gpio.o ././system_stm32f10x.o ././core_cm3.o ././stm32f10x_rcc.o ././main.o ././startup_ARMCM3.o -mcpu=cortex-m3 -mthumb -Wl,-Map=".\ARM-test0.map",--cref -Wl,--gc-sections -TSTM32F10X_MD_VL.ld -o .\ARM-test0.elf make[1]: Leaving directory 'D:/4 electronics/soft/Sublime Text projects/ARM-test0' make .\ARM-test0.hex make[1]: Entering directory 'D:/4 electronics/soft/Sublime Text projects/ARM-test0' --- making hex... arm-none-eabi-objcopy -O ihex .\ARM-test0.elf .\ARM-test0.hex make[1]: Leaving directory 'D:/4 electronics/soft/Sublime Text projects/ARM-test0' make .\ARM-test0.lss make[1]: Entering directory 'D:/4 electronics/soft/Sublime Text projects/ARM-test0' --- making disassembly... arm-none-eabi-objdump -dC .\ARM-test0.elf > .\ARM-test0.lss make[1]: Leaving directory 'D:/4 electronics/soft/Sublime Text projects/ARM-test0' arm-none-eabi-size -d .\ARM-test0.elf text data bss dec hex filename 1592 1076 28 2696 a88 .\ARM-test0.elf "Errors: none" [Finished in 1.3s] P.S.: я положил все файлы исходников в корень проекта для того что бы исключить возможное "недобавление" какого-то файла в передачу компилятору или ещё что-то. Как прошивка заработает, то раскидаю по папкам как положено.
Сообщение отредактировал r44083 - Sep 13 2015, 11:13
|
|
|
|
|
 |
Ответов
|
Sep 13 2015, 19:23
|

Участник

Группа: Участник
Сообщений: 25
Регистрация: 13-09-15
Пользователь №: 88 376

|
Проект, сделанный в Keil, отлично работает и светодиоды святятся, поэтому я думаю что железо в порядке. Использую плату STM32VLDISCOVERY. Цитата(AHTOXA @ Sep 13 2015, 19:49)  При чём туту sublime text вообще? Вам надо настроить сборку проекта при помощи make. А откуда вы вызываете make - дело десятое. Поэтому советую - возьмите какой-нибудь тестовый проект целиком, запустите его, а уже потом изменяйте под себя. Например, вот этот. (Ваш makefile, похоже, базируется на makefile из этого проекта, так что должно быть несложно). Боюсь что ваш проект не соберется, так как я же указал что использую Windows. Надо будет переделать команды вызова системных утилит ну и много где ещё. В makefile у вас указан скрипт для линковщика, а в папке проекта его нет. К тому же флаг "LD_FLAGS += -nostartfiles" предпалогает некий свой стартап файл, а его в папке проекта тоже нет, и по всей видимости он наверное у вас нестандартный, а какой-то свой (я имею ввиду не такой как в CMSIS). CMSIS вы, как я понял, тоже не используете? А по поводу Sublime Text - так я же выше (в первом посте) написал, что использую make в связке с Sublime Text как текстовым редактором. Очень помогло, если бы я действительно нашел такой проект, который собрался бы и заработал, что бы я его изучил. Кстати, Антоха, я брал ваш makefile (в заголовке была подпись АНТОХА), для этого теста, и потом изменял его под винду, добавил для себя комментарии  . Но всё равно никак не заведется прошивка. Я всё таки грешу на makefile. (Начал читать как прикрутить отладчик, что бы посмотреть, что на самом деле делает микроконтроллер)
Сообщение отредактировал r44083 - Sep 13 2015, 19:16
|
|
|
|
|
Sep 13 2015, 19:52
|

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

|
Цитата(r44083 @ Sep 14 2015, 00:23)  Боюсь что ваш проект не соберется, так как я же указал что использую Windows. Тот проект собирается и под Windows тоже (с msys). Скрипт линковщика лежит рядом, в первом проекте. Стартап - тоже лежит рядом. Этот стартап не из CMSIS, стартап из CMSIS на момент написания примера не был пригоден для c++ (не вызывал конструкторы). Кстати, вы убрали "LD_FLAGS += -nostartfiles", поэтому у вас линкуется не ваш CMSIS-овский стартап (startup_ARMCM3.s), а тот, что предлагает компилятор. Так что не ждите вызова SystemInit(). Возможно, эти два стартапа конфликтуют, и от этого ваш проект не работает. Цитата(r44083 @ Sep 14 2015, 00:23)  Кстати, Антоха, я брал ваш makefile (в заголовке была подпись АНТОХА), для этого теста, и потом изменял его под винду, добавил для себя комментарии  . Я узнал makefile, потому и написал: Цитата(AHTOXA @ Sep 13 2015, 21:49)  (Ваш makefile, похоже, базируется на makefile из этого проекта, так что должно быть несложно).
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
r44083 Проект для STM32F100 компилируется и линкуется gcc, но не работает на МК Sep 13 2015, 11:10 r44083 Кстати, забыл сказать, что использую ОС Windows.
С... Sep 13 2015, 15:27 AHTOXA При чём туту sublime text вообще? Вам надо настрои... Sep 13 2015, 16:49 adnega Цитата(r44083 @ Sep 13 2015, 14:10) Затем... Sep 13 2015, 17:35  r44083 Цитата(AHTOXA @ Sep 13 2015, 22:52) Тот п... Sep 13 2015, 20:28   AHTOXA Попробуйте заменить в startup_ARMCM3.s _start на m... Sep 14 2015, 04:44    r44083 Цитата(AHTOXA @ Sep 14 2015, 07:44) Попро... Sep 14 2015, 17:38     AHTOXA Ну и славно.
_estack - это начальное значение для ... Sep 14 2015, 19:24 r44083 И последний вопрос: нужно ли делать "Full chi... Sep 14 2015, 22:20 AHTOXA Если прошивается без этого, то не надо. Sep 15 2015, 04:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|