Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите разобраться с ошибкой в Keil.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Oleg_IT
Строю свою программу из готовых модулей. После добавления очередного файла программа входит в функцию (из ранее введенного файла Retarget.c):
void _sys_exit (int return_code) {
/* Endless loop. */
while (1);
}
Несколько раз перестраивал проект, не помогает. Удаляю последний введённый файл, после которого появилась ошибка, ошибка остаётся.
Не пойму, что происходит.
Кто сталкивался с такой проблемой, помогите победить её.

aaarrr
Вывод из _ttywrch() в retarget.c сделан? Ничего там не говорит?
Oleg_IT
Цитата(aaarrr @ Jan 31 2011, 17:24) *
Вывод из _ttywrch() в retarget.c сделан? Ничего там не говорит?

Да куда там, программа до mian() не доходит, из стартапа
IMPORT __main
LDR R0, =__main
BX R0
сразу в _sys_exit(). R0 = 0x00000000. Почему?

Я ещё что заметил, некоторые программы в дебагере останавливаются в стартапе (сейчас эту точку не воспроизведу), после запуска на продолжение нормально работают, а некоторые сразу останавливаются в начале mian() функции (в Options/Debug всегда стоит флаг Run to main())
aaarrr
Цитата(Oleg_IT @ Jan 31 2011, 22:13) *
Да куда там, программа до mian() не доходит, из стартапа

Еще раз: _ttywrch() определен? Есть у меня такое подозрение, что туда ваша программа пишет "Out of heap memory" и таки да, до main'а не доходит.
Oleg_IT
Цитата(aaarrr @ Jan 31 2011, 22:32) *
Еще раз: _ttywrch() определен? Есть у меня такое подозрение, что туда ваша программа пишет "Out of heap memory" и таки да, до main'а не доходит.

Функция определена в том же файле (STDIO в опциях файла отределён)
void _ttywrch (int ch) {
#ifdef STDIO
sendchar(ch);
#endif
}
В эту функцию программа заходит, ch = 0x0000000A
В окне Command при этом появляется надпись
*** error 65: access violation at 0xA0033000 : no 'read' permission

Да, вы правы. пишет "SIGRTMEM: Out of heap memory"
Что делать то?
aaarrr
Цитата(Oleg_IT @ Feb 1 2011, 10:21) *
Что делать то?

Сконфигурировать heap - в вашей программе его кто-то использует.
Oleg_IT
Спасибо.
При создании проекта Heap Size (in Bytes) 0x0000 0000. Поставил как в примерах Heap Size (in Bytes) 0x0000 0800 и всё заработало. Только не понятно из каких соображения берётся это число?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.