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

 
 
> arm7, flash vs ram , проц сам резетится
buletz
сообщение Mar 19 2007, 14:58
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 52
Регистрация: 4-07-06
Из: Moscow
Пользователь №: 18 554



Отлаживаю проц через IAR workbench 4.30, проц LPC2138
короче беда в том, что когдf прошиваю проц в RAM - все работает ОК. Как только прошиваю проц во FLASh, то проц периодически сам резетится.
Шью одну и ту же компиляцию проги.
В чем может быть проблема ?

Сообщение отредактировал asdjkasdjkalsdjkl - Mar 19 2007, 14:59
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
buletz
сообщение Mar 23 2007, 18:31
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 52
Регистрация: 4-07-06
Из: Moscow
Пользователь №: 18 554



оптимизация : None (best debug support)
т.е. оптимизации нет

2Andy Mozzhevilov: как я понял, у вас была обратная проблема. Т.е. во flash все работало нормально, а при отладке из RAM были глюки из-за того что переферия конфигурилась неправильно.
У меня получается наоборот, в RAM все ок, а во FLASH спонтанные резеты.

Может возникает какой-нибудь exception?
Типа Undefined instruction, Prefetch abort, Data abort...
не дадите исходник как обрабатывать произвольный exception, а не IRQ ?

У меня стоит следующая процедурка для обработки прерываний
//---------------------------------------------------------------------------------------
#pragma vector=0x18
__irq __arm void IRQ_ISR_Handler (void)
{
void (*interrupt_function)();
unsigned int vector;

vector = VICVectAddr; // Get interrupt vector.
interrupt_function = (void(*)())vector;
(*interrupt_function)(); // Call vectored interrupt function.
}

Сообщение отредактировал asdjkasdjkalsdjkl - Mar 23 2007, 18:31
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Mar 26 2007, 05:47
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(asdjkasdjkalsdjkl @ Mar 23 2007, 20:31) *
оптимизация : None (best debug support)
т.е. оптимизации нет

2Andy Mozzhevilov: как я понял, у вас была обратная проблема. Т.е. во flash все работало нормально, а при отладке из RAM были глюки из-за того что переферия конфигурилась неправильно.
У меня получается наоборот, в RAM все ок, а во FLASH спонтанные резеты.

Может возникает какой-нибудь exception?
Типа Undefined instruction, Prefetch abort, Data abort...


Так проверьте.
На все вектора как минимум затычки типа:
Код
#pragma vector = 0x04
__irq __arm void undef_instr_isr(void)
{
    while(1)
    {
    }
}

#pragma vector = 0x08
__irq __arm void swi_isr(void)
{
    while(1)
    {
    }
}

#pragma vector = 0x0c
__irq __arm void prefetch_abort_isr(void)
{
    while(1)
    {
    }
}

#pragma vector = 0x10
__irq __arm void data_abort_isr(void)
{
    while(1)
    {
    }
}


Вот мой обработчик irq:
Код
typedef void (*PFNCT)(void);

void irq_isr (void)
{
    PFNCT    pfnct;

    pfnct = (PFNCT)VICVectAddr;                      /* Read the interrupt vector from the VIC         */
    while (pfnct != (PFNCT)0)                        /* Handle ALL interrupting devices                */
    {
        (*pfnct)();                                  /* Call ISR for interrupting device               */
        VICVectAddr = 0;                             /* update priority hardware                       */

        pfnct = (PFNCT)VICVectAddr;                  /* Read the interrupt vector from the VIC         */
    }
}


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 10:27
Рейтинг@Mail.ru


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