Что делалось:
Написал программу, уарт в ней не используется, операционная система тоже, никаких дополнительных библиотек типа "stdio.h , stdlib.h" не подключал. Скомпилировал, зашил, смотрю - не работает. Вижу, что не доходит до main(), смотрю дальше R14 link register и вижу в окне дизассемблера, что программа "виснет" в функции "_ttywrch". В "_ttywrch" запускается SWI и так как у меня supervisor mode никак не обрабатывается, то она бесконечно работает в SWI_HANDLER.
Смотрю хелп и вижу что _ttywrch отвечает за вывод символа в консоль. Псомотрел retarget.c файлы в хелпе. Добавил "#include <stdio.h> " и написал функцию "int fputc(int ch, FILE *f) { return (sendchar(ch));}". Скомпилировал, зашил - ура, все работает как надо.
Вопрос:
1) Почему появляется _ttywrch если у меня нигде оно не нужно в программе и нигде про него слова нет (т.е. если я не подключаю никаких библиотек) ? Должно ли так и быть или у меня где-то логическая ошибка ?

2) Есть ли способ узнать максимальную глубину той части стека программы, которая используется ?
Есть вариант заполнить выделенный стек одинаковыми числами и посмотреть насколько вглубь он поменяется при различных вызовах всяких разных функций.
При компиляции программы создается файл "Название проекта.htm", в котором описаны функции, стек который они используют, какие функции вызывают и кем вызываются. Т.е. получается, нужно брать бумажку и прикидывать кто-кого вызывает и сколько памяти съедает .... так ?


