Наехал на проблему, которая, как оказалось, здесь в точности описана, поэтому подниму тему,
авось кто из понимающих откликнется на этот раз - автор темы, например, - уж два года прошло..
Итак, в-кратце:
1) Стартовый код LPC2148 (Keil) чего-то желает вывести на консоль
2) Keil uVision требует, чтоб загадочное _ttywrch() присутствовало в собранном коде.
Вопросы:
1) Чего, интересно, - и зачем - Keil желает выводить на консоль, до старта (main), если его никто не просил?
2) Можно ли убрать ненужные библиотечные функции и есть ли для этого способ лучше, чем не использовать main()?
Хорошие вопросы, вестимо, содержат 50% ответа, так вот (нумерация прежняя):
1) Пример Blinky не имеет проблем на старте (и в его map-файле нет никаких следов странных библиотек), стало быть
как-то можно сделать, чтоб их не было. Вопрос - как...
2) Отказаться от main() абсолютно негуманно, поскольку проект должен собираться и другими IDE. Кроме того, тот же Blinky
стартует с main(), однако, вопреки (?) мануалу от Keil никаких _ttywrch() с ним не линкуется.
(чтоб ссылка на мануал не выглядела безадресной приведу здесь отрывок от: )
Код
5.4.2 Bare machine integer C
If you are writing a program in C that does not use the library and is to run without any
environment initialization, you must:
• Implement __rt_raise() yourself, because this error-handling function can be
called from numerous places within the compiled code.
• Not define main() to avoid linking in the library initialization code.
Спасибо.