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

 
 
> STM32VLDISCOVERY + Keil
ohmjke
сообщение Mar 29 2012, 09:47
Сообщение #1


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

Группа: Участник
Сообщений: 116
Регистрация: 27-01-10
Из: СПб
Пользователь №: 55 094



Здравствуйте, недавно начал изучать МК с этим ядром. Пока что в основном все понятно, попробовал написать простую прогу на ассемблере по примерам с сайта http://stm32asm.ru. Все работает, но т.к. писать весь код на ассемблере для кортексов - не вариант, решил по-тихоньку переходить на СИ. Появились кое-какие вопросы. К примеру, написал код, аналогичный коду на ассемблере, скомпилировал, запустил отладку. И вижу, что выполнение программы начинается с каких-то "левых" функций/процедур(см. вложение). Что это такое, для чего нужно? Можно ли как-то сделать, чтобы компилятор СИ не добавлял их в программу?
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
RabidRabbit
сообщение Mar 29 2012, 11:48
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Настройки таргета, закладка Linker, поставить галочку Don't Search Standard Libraries (хотя это верхушка айсберга sm.gif )
Go to the top of the page
 
+Quote Post
ohmjke
сообщение Mar 29 2012, 14:14
Сообщение #3


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

Группа: Участник
Сообщений: 116
Регистрация: 27-01-10
Из: СПб
Пользователь №: 55 094



Цитата(RabidRabbit @ Mar 29 2012, 15:48) *
Настройки таргета, закладка Linker, поставить галочку Don't Search Standard Libraries (хотя это верхушка айсберга sm.gif )

Спасибо, думаю, сработало, ибо вылезла ошибка:
Код
discovery_C2.axf: Error: L6218E: Undefined symbol __main (referred from startup_stm32f10x_ld_vl.o).

Как мне теперь передать управление мэйну из стартап-файла? Сейчас там такая бадяга:
Код
IMPORT  __main
LDR R0, =__main
BX R0


Сообщение отредактировал ohmjke - Mar 29 2012, 14:14
Go to the top of the page
 
+Quote Post
RabidRabbit
сообщение Mar 30 2012, 10:06
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Проще всего переименовать свой main() в __main() sm.gif
Go to the top of the page
 
+Quote Post
ohmjke
сообщение Mar 30 2012, 13:41
Сообщение #5


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

Группа: Участник
Сообщений: 116
Регистрация: 27-01-10
Из: СПб
Пользователь №: 55 094



Цитата(RabidRabbit @ Mar 30 2012, 14:06) *
Проще всего переименовать свой main() в __main() sm.gif

Большое спасибо, работает! Правда, вылез один warning:
Код
discovery_C2.sct(8): warning: L6314W: No section matches pattern *(InRoot$$Sections).

Но, насколько я понял, на работоспособность моей программы это не влияет. В железе все норм. В отладчике видно, что код во flash размещается с адреса 0x08000000, как и должно быть.
А не подскажете, где можно почитать про все эти взаимодействия между СИ и asm файлами проекта?
Go to the top of the page
 
+Quote Post



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

 


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


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