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

 
 
> подлинковываются вызовы _sys_xxxx в KEIL, как от этого избавиться?
zuy
сообщение Dec 1 2009, 23:08
Сообщение #1


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

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Есть проект с использованием FreeRTOS на LPC2388.
При добавлении очередного функционального блока, который открывает соединение через сокеты LwIP, в симуляторе KEIL перестал доходить до main.
Обнаружил, что все валится на этапе инициализации процедур _sys_read/ _sys_write и т.д.
Там вызывается SWI а на нем сидит переключение контекста FreeRTOS.

Я нигде явно не работаю с файлами, не использую этих _sys_xxx вызовов. Почему линкер их мне подсовывает и как от этого избавиться?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Dec 2 2009, 07:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(zuy @ Dec 2 2009, 02:08) *
Есть проект с использованием FreeRTOS на LPC2388.
При добавлении очередного функционального блока, который открывает соединение через сокеты LwIP, в симуляторе KEIL перестал доходить до main.
Обнаружил, что все валится на этапе инициализации процедур _sys_read/ _sys_write и т.д.
Там вызывается SWI а на нем сидит переключение контекста FreeRTOS.

Я нигде явно не работаю с файлами, не использую этих _sys_xxx вызовов. Почему линкер их мне подсовывает и как от этого избавиться?

Кажется, MAP-файл должен говорить, какая функция что тянет из библиотеки. Возможно, в lwip включен отладочный вывод с использованием функций из <stdio.h>.
Go to the top of the page
 
+Quote Post
zuy
сообщение Dec 2 2009, 09:45
Сообщение #3


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

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Цитата(scifi @ Dec 2 2009, 11:48) *
Кажется, MAP-файл должен говорить, какая функция что тянет из библиотеки. Возможно, в lwip включен отладочный вывод с использованием функций из <stdio.h>.


В MAP файле нашел только что эти функции линкуются, адреса куда и из какого обьектного модуля. Но кем они вызываются, или хотя бы каким моим модулем пользуются нигде не вижу.
Я много где использую stdio.h, только в нем не определены _sys_xxxx(...)
Я понимаю, что их используют какие-то процедуры из stdio.h, но какие именно?
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 2 2009, 10:10
Сообщение #4


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

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



а под отладчиком пустить и посмотреть стек вызова? откуда тянется.
Go to the top of the page
 
+Quote Post
zuy
сообщение Dec 2 2009, 11:46
Сообщение #5


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

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Цитата(klen @ Dec 2 2009, 14:10) *
а под отладчиком пустить и посмотреть стек вызова? откуда тянется.


У меня до main не доходит, по-этому смотрю по шагам в окне дизассемблера.
После инициализации стеков, идет переход на инициализацию стандартной бибилиотеки.
Среди них заходим в процедуру __rt_lib_init_stdio_2:
Внутри нее процедура _initio, там доходим до freopen, а внутри уже стоит _sys_open который и вызывает SWI.

Получается эти вызовы используются при инициализации стандартной библиотеки. Но что из моего модуля заставляет их использовать? Как это можно отловить?
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 2 2009, 12:25
Сообщение #6


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

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



CRT код сами писали или чужой объектник прилюбанивается?
напишите свой.
Go to the top of the page
 
+Quote Post



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

 


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


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