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

 
 
> LPC2368, VIC и полтергейст, вешаюсь
Kitsok
сообщение Mar 3 2010, 20:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Добрый день!

Наверное, глаз уже замылился.
Пытаюсь оживить порт FreeRTOS + IAR + LPC2368.
Всякое было, но наткнулся, и не помню, было со мной такое на SAM7, или нет.
Суть вот в чем: настроен Timer0, на нем разрешено прерывание, VIC настроен на вызов некой функции. Кроме этого разрешено SWI, с ним все хорошо.
Ставлю брейкпоинт на вектор вызова IRQ, там у меня:
ldr pc, [PC, #-0xFF0] ;; IRQ
Одновременно стоит watch на адрес 0xffffff00, по этому вызову (после останова по брейку) - правильный адрес.
Жму F11 (step) - и улетаю на reset (0x00000000).

IAR - 5.41, отлаживаю через MT-Link, отладка в RAM, командный файл отладчика:
Код
execUserReset()
{
    __writeMemory32(0x00000002, 0xE01FC040, "Memory"); // MEMMAP = 2;
}

execUserPreload()
{
    __writeMemory32(0x00000002, 0xE01FC040, "Memory"); // MEMMAP = 2;
}


Ниже - скриншоты до F11 и после.

Ткните пожалуйста носом, что я упускаю?
Заранее спасибо!
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Mar 3 2010, 21:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Kitsok @ Mar 4 2010, 00:04) *
Где облом?

-0xFF0 и -0x240

Если инструкция расположена по адресу 0x18, то для чтения 0xFFFFFF00 должно быть LDR PC, [PC, #-0x120].

Но ставить watch на VICADDRESS в любом случае не комильфо, т.к.:
Цитата
Reading or writing to this register at other times can cause incorrect operation.
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Mar 3 2010, 21:18
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Цитата(aaarrr @ Mar 4 2010, 00:09) *
-0xFF0 и -0x240

Я жертва копипаста, а не отладчика wink.gif

Помогите пожалуйста посчитать, я не догоняю...
PC=18, 18-240 = FFFFFDD8.
Впрочем,
18-ff0=fffff028....

Update: Все, догнал.
В какой-то момент я результирующий адрес проверял, но, видимо, заметался, и не обратил внимания.

Спасибо, что посмотрели свежим взглядом wink.gif

P.S. А документацию я читал, и продолжаю читать, так что не надо меня уж прямо так мордой-то в грязь.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 3 2010, 21:21
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Kitsok @ Mar 4 2010, 00:18) *
Помогите пожалуйста посчитать, я не догоняю...
PC=18, 18-240 = FFFFFDD8.
Впрочем,
18-ff0=fffff028....

PC в контексте команды равен не текущему адресу, а текущему адресу + 8. Правильное число уже огласили - это -0x120.
0x18 + 0x08 - 0x120 = 0xffffff00
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:53
Рейтинг@Mail.ru


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