реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Startup.S для stm32, разборка в ассемблерном коде
van_de_luxe
сообщение Nov 8 2011, 13:46
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 1-04-10
Пользователь №: 56 348



Компилю на Eclipse проект для платы STM32L-Discovery (взятый и адаптированный из TrueStudio)
все бы ничего, да только выдает ошибку:
Код
ite/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-init.o): In function `__libc_init_array':
init.c:(.text+0x38): undefined reference to `_init'
collect2: ld returned 1 exit status
cs-make: *** [STM32L_Test_debug2.elf] Error 1[Libraries/CMSIS/CM3/DeviceSupport/ST/STM32L1xx/startup/TrueSTUDIO/startup_stm32l1xx_md.o] Error 1


у меня был еще 1 проект для другой платы, я сравнил sturtup файлы этих проектов и в том, который работает не было строчки
Код
...
/* Call static constructors */
   bl __libc_init_array
...

т.е. файл выглядел так
Код
...

LoopFillZerobss:
  ldr   r3, = _ebss
  cmp   r2, r3
  bcc   FillZerobss
/* Call the clock system intitialization function.*/
  bl  SystemInit  
/* Call the application's entry point.*/
  bl    main
  bx    lr    
.size  Reset_Handler, .-Reset_Handler
...


я убрал эту строчку и все отлично скомпилировалось, но программа работает не так как нужно

В общем, вопрос такой что это за конструктор и что он делает в startup файле?
может мне нужно его как то задействовать?

Сообщение отредактировал IgorKossak - Nov 8 2011, 18:41
Go to the top of the page
 
+Quote Post
klen
сообщение Nov 8 2011, 15:25
Сообщение #2


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



я про все это писал во тут http://electronix.ru/forum/index.php?showt..._array&st=0
Go to the top of the page
 
+Quote Post
aT-DeviLru
сообщение Nov 8 2011, 15:32
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 11-11-10
Из: Санкт-Петербург
Пользователь №: 60 826



Для стандартного компилятора GCC необходимо использовать стартовый код из папки Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\gcc_ride7, а не от среды разработки TrueSTUDIO, хотя они отличаются только одной строчкой, которую вы и удалили: "bl __libc_init_array", возможно ошибка где-то в программе?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 8 2011, 15:47
Сообщение #4


фанат дивана
******

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



Цитата(klen @ Nov 8 2011, 21:25) *
я про все это писал во тут http://electronix.ru/forum/index.php?showt..._array&st=0

bb-offtopic.gif И как там книга? Скоро?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 06:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016