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

 
 
> отладка at91R40008, простенькая программа
Серокой
сообщение Nov 25 2004, 21:16
Сообщение #1


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

Группа: Свой
Сообщений: 126
Регистрация: 25-11-04
Из: Подольск
Пользователь №: 1 224



Добрый день. Совсем замучился я, что-то я не догоняю. Прошу помощи.
Задача стоит совсем простая: на не прошедшем remap AT91R40008 запустить программу. Отладка идёт с помощью собранных под ARM gnotools, сама платка подключена через Wiggler к insight.
Текст программы такой:
Код
int main(void)
{
int a, b, c;
a = 8;
b = 7;

c=a+b;

while (1)
    {
    c=c+1;
    }
return (c);
}


Компилируется без оптимизации, в итоге листинг выглядит так:
Код
00300000 <main>:
 300000:    e1a0c00d  mov    ip, sp
 300004:    e92dd800  stmdb    sp!, {fp, ip, lr, pc}
 300008:    e24cb004  sub    fp, ip, #4; 0x4
 30000c:    e24dd00c  sub    sp, sp, #12; 0xc
 300010:    e3a03008  mov    r3, #8; 0x8
 300014:    e50b3010  str    r3, [fp, -#16]
 300018:    e3a03007  mov    r3, #7; 0x7
 30001c:    e50b3014  str    r3, [fp, -#20]
 300020:    e51b2010  ldr    r2, [fp, -#16]
 300024:    e51b3014  ldr    r3, [fp, -#20]
 300028:    e0823003  add    r3, r2, r3
 30002c:    e50b3018  str    r3, [fp, -#24]
 300030:    e51b3018  ldr    r3, [fp, -#24]
 300034:    e2833001  add    r3, r3, #1; 0x1
 300038:    e50b3018  str    r3, [fp, -#24]
 30003c:    eafffffb  b    300030 <main+0x30>

Проверяю работу пошагово по GDB. Первая инструкция выполняется без нареканий, видно, как SP переместился в 12 регистр. После попытки выполения второй инструкции всё рухает со страшным грохотом. Wiggler кричит, что его заставляют читать с какого-то адреса, и по этой причине у него случается Bus Error. Адрес этот содержится в 11 регистре, он же fp в списке блочного сохранения. Мне непонятно, кто его заставляет читать оттуда, ведь происходит просто "засовывание" данных в стек? И, кстати, стек-поинтер тоже не проинициализирован - в регистрах этих, которые программа сторит, мусор по включению питания...
Просьба такая: подскажите, как с этим бороться и каким образом инициализируется стек?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Серокой
сообщение Feb 12 2005, 18:31
Сообщение #2


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

Группа: Свой
Сообщений: 126
Регистрация: 25-11-04
Из: Подольск
Пользователь №: 1 224



Ну вот, отлаживаю я по выходным, когда время есть, поэтому вопросы медленно скапливаются...
Собираю файл я "дёрнутым" из кейловского примера "Hello" скриптом линковки для RAM, и там указано следующее:
Код
MEMORY
{
 CODE (rx) : ORIGIN = 0x00010000, LENGTH = 0x00020000
 DATA (rw) : ORIGIN = 0x00030000, LENGTH = 0x00010000
}


Но когда я загружаю получившуюся прогрмамму insight'ом, получается, что он её кладёт непонятно куда, но только не в память, посколько процессор-то ещё не ремэпленный. :-/
Что делать, как отлаживать программу, стартующую на "голом" процессоре? sad.gif
Если я правлю ld-шник, то получается ещё хуже, но уже после ремепа...
Или можно insigh'ту указать, куда класть программу и с какого адреса стартовать?
Go to the top of the page
 
+Quote Post
v_shamaev
сообщение Feb 12 2005, 20:46
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 304
Регистрация: 5-07-04
Из: г. Москва
Пользователь №: 259



Цитата(Серокой @ Feb 12 2005, 21:31)
Но когда я загружаю получившуюся прогрмамму insight'ом, получается, что он её кладёт непонятно куда, но только не в память, посколько процессор-то ещё не ремэпленный. :-/
Что делать, как отлаживать программу, стартующую на "голом" процессоре? sad.gif
Если я правлю ld-шник, то получается ещё хуже, но уже после ремепа...
Или можно insigh'ту указать, куда класть программу и с какого адреса стартовать?
*


Обычно старт программы в ARM-е происходит след. путем: назначаются вектора прерываний, загружаются регистры EBI, и сразу remap. Insight сам по себе делать
это не умеет, а занимается этим обычно интерфейсная программа, связывающая GDB
с процессором - если это резидентный монитор (RedBoot, например) - то он. А в случае
с вигглером - та утилита, которая работает с вигглером. Есть команды записи в регистры,
обычно включаются в стартовый скрипт - вы видимо макрегоровским OCDLibRemote пользуетесь - там есть пример стартового скрипта для Insight-а.


--------------------
Водку пьянствовать и безобразия нарушать!!!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Серокой   отладка at91R40008   Nov 25 2004, 21:16
- - jojo   В комплекте с Кейлом ARM есть примерчики для 40008...   Nov 26 2004, 12:19
- - Серокой   Спасибо. А у вас нет этого примера? На почту высла...   Nov 26 2004, 12:27
- - Серокой   jojo, спасибо за подсказку, я нашёл пример стартап...   Nov 26 2004, 14:06
- - jojo   Это хорошо. Поскольку вашей почты у меня нет При...   Nov 26 2004, 16:27
- - Серокой   Это да, мыло недоступно так просто на таком движке...   Nov 26 2004, 18:43
- - Серокой   Кстати, вообще, возможна отладка по JTAG программы...   Feb 7 2005, 09:03
- - jojo   Для отладки программа и данные должны быть в памят...   Feb 7 2005, 10:42
- - Серокой   То есть надо иметь два скрипта линковки - для отла...   Feb 7 2005, 11:38
- - jojo   >То есть надо иметь два скрипта линковки - для ...   Feb 7 2005, 13:37
- - Серокой   Спасибо! Я использую в качестве оболочки eclip...   Feb 7 2005, 16:10
- - Серокой   Благодарю вас! У меня инициализация векторов, ...   Feb 12 2005, 21:34
|- - v_shamaev   Цитата(Серокой @ Feb 13 2005, 00:34)У меня ин...   Feb 12 2005, 21:46
- - Серокой   Оп-па! А какой командой gdb-скрипта можно проп...   Feb 15 2005, 16:35
|- - v_shamaev   Цитата(Серокой @ Feb 15 2005, 19:35)Оп-па...   Feb 15 2005, 18:03
- - Серокой   Ура! Спасибо! Оба способра работают ({long...   Feb 15 2005, 21:49
|- - v_shamaev   Цитата(Серокой @ Feb 16 2005, 00:49)Кстати, в...   Feb 16 2005, 11:03
- - Серокой   Мне как раз eCos хвалили как простую настраиваемую...   Feb 19 2005, 19:04
- - v_shamaev   Цитата(Серокой @ Feb 19 2005, 22:04)Мне как р...   Feb 19 2005, 21:51


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

 


RSS Текстовая версия Сейчас: 14th August 2025 - 02:47
Рейтинг@Mail.ru


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