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

 
 
> 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, 20:50
Сообщение #2


Гуру
******

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



Цитата(Kitsok @ Mar 3 2010, 23:47) *
Одновременно стоит watch на адрес 0xffffff00, по этому вызову (после останова по брейку) - правильный адрес.
Жму F11 (step) - и улетаю на reset (0x00000000).

Естественно - VIC считает, что вектор уже прочитан. И ему все равно, сделало это ядро, или кто другой.
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Mar 3 2010, 20:53
Сообщение #3


Местный
***

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



Цитата(aaarrr @ Mar 3 2010, 23:50) *
Естественно - VIC считает, что вектор уже прочитан. И ему все равно, сделало это ядро, или кто другой.


Минуточку, а разве по этому "адресу" это "значение" не висит, пока мы не сделаем фиктивную запись?

Выдержка из мануала:
Contains the address of the ISR for the currently active interrupt. This
register must be written (with any value) at the end of an ISR, to
update the VIC priority hardware. Writing to the register at any other
time can cause incorrect operation.

Ничего не сказано про то, что читать можно только один раз. Это (если правильно помню) в SAMовском AICе есть режим Debug, который позволяет два раза прочитать регистр как раз на случай отладки.
В любом случае, сейчас попробую брейк поставить на обработчик.
Go to the top of the page
 
+Quote Post



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

 


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


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