Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по отладчику Keil
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Kail
Компилирую проект под 2106 в Keil.
Вот кусок кода:
int i, error=0, ch='M';
short x[N], fx[N];
for (i=0; i<N; i++){
x[i] = AMPLITUDE*cos(i*FREQUENCY*(2*3.1415926535)/N);
if (i & 0x01)
fx[(N+i)>>1] = x[i];
else
fx[i>>1] = x[i];
}

Просто забиваю массив числами.
Отладчик выкидывает вот такие сообщения при прокрутке массивва:
MISSING DEVICE (R003: SECURITY KEY NOT FOUND)
Running in Eval Mode
Load "C:\\Projects\\my9\\obj\\Project.ELF"

*** Restricted Version with 16384 Byte Code Size Limit
*** Currently used: 8006 Bytes (48%)

BS \main_my\44
BS \main_my\33
BS \main_my\26
*** error 65: access violation at 0x3FFFFFF8 : no 'write' permission
*** error 65: access violation at 0x3FFFFFF8 : no 'read' permission
*** error 65: access violation at 0x3FFFFFFC : no 'read' permission
*** error 65: access violation at 0x3FFFFFF8 : no 'write' permission
*** error 65: access violation at 0x3FFFFFF8 : no 'read' permission
*** error 65: access violation at 0x3FFFFFFC : no 'read' permission - что это значит?
Точнее, что значит понятно, из-за чего такое происходит? Специально привел полный список сообщений отладчика.
Еще аопрос, что значят сообщения BS \main_my\44?
AlexandrY
На обращение к памяти ругается потому, что отладчику явно не указано что это память и он также не может увидеть это из опций проекта.
Тогда в ini файле отладчика надо явно задать MAP командой адреса областей памяти и их виды.
Kail
Действительно при уменьшении размера массива ошибки исчезают. Однако непонятно вот что, у меня программа занимает 12 кб во флэше. Есть 2 массива из 128 элементов типа short, т.е. 256 байт. То есть места и во флэше и в оперативной памяти полно, из-за чего могут такие ошибки появляться?
И вообще работа линкера - темный лес для меня. Если с Flash еще понятно, если ее мало, то программа просто не влезет. А вот с RAM непонятки. Как например смоделировать ситуацию, чтобы нехватило RAM, и что при этом произодет? Как вообще отследить работу RAM? И вот еще вопрос, malloc возвращает указатель на область памяти во флэш или RAM? Если о флэш (о чем я сильно подозреваю), то из какой секции? Люди знающие, подскажите плиз или посоветуйте книжку толковую общетеоретическую по работе линкера. А то про языки программирования и копмиляторы - куча литература, а линкер все забывают.
AlexandrY
Про линкер надо читать в хелпе линкера.
В хелпах самая актуальная информация, никакие книжки не поспевают за изменениями в свойствах компиляторов и линкеров.
malloc может возвращать указатель только на RAM иначе в нем нет смысла и это полная чушь.
Чтобы динамическое выделение памяти работало, надо в опциях проекта явно задать размер HEAP-а. Если это не сделано, то heap компилятором выделяется от верхушки области стека и понятно что стек наезжает на heap и через пару вызовов его портит. Более того, если стек недостаточен, то он растет вниз дальше и портит все рабочие переменные. Это, конечно, с установками по умолчанию для линкера в RVDK

Цитата(Kail @ Nov 11 2006, 17:21) *
Действительно при уменьшении размера массива ошибки исчезают. Однако непонятно вот что, у меня программа занимает 12 кб во флэше. Есть 2 массива из 128 элементов типа short, т.е. 256 байт. То есть места и во флэше и в оперативной памяти полно, из-за чего могут такие ошибки появляться?
И вообще работа линкера - темный лес для меня. Если с Flash еще понятно, если ее мало, то программа просто не влезет. А вот с RAM непонятки. Как например смоделировать ситуацию, чтобы нехватило RAM, и что при этом произодет? Как вообще отследить работу RAM? И вот еще вопрос, malloc возвращает указатель на область памяти во флэш или RAM? Если о флэш (о чем я сильно подозреваю), то из какой секции? Люди знающие, подскажите плиз или посоветуйте книжку толковую общетеоретическую по работе линкера. А то про языки программирования и копмиляторы - куча литература, а линкер все забывают.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.