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

 
 
 
Reply to this topicStart new topic
> Кто работал с LPC23XX RealMonitor ?
GetSmart
сообщение Nov 12 2009, 11:18
Сообщение #1


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Собственно вопрос кто работал и зачем это нужно? (Chapter 33 in User Manual LPC236x)

Сообщение отредактировал GetSmart - Nov 12 2009, 11:31


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
KRS
сообщение Nov 12 2009, 11:42
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(GetSmart @ Nov 12 2009, 14:18) *
Собственно вопрос кто работал и зачем это нужно? (Chapter 33 in User Manual LPC236x)

Это debug agent, по принципу похож на GDB server. Данные через DCC передает.
IMHO для ARM7 не актуально. Еще и софт специальный нужен и отладчик все равно.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 12 2009, 11:46
Сообщение #3


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(KRS @ Nov 12 2009, 17:42) *
Данные через DCC передает.

DCC работает через пины JTAG ?

Меня особенно интересует кто использовал эту фичу в процах LPC2xxx и используется ли при этом прерывания Embedded ICE, DbgCommRx и Embedded ICE, DbgCommTX и как они программно отрабатываются?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
KRS
сообщение Nov 12 2009, 12:27
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(GetSmart @ Nov 12 2009, 14:46) *
DCC работает через пины JTAG ?

Меня особенно интересует кто использовал эту фичу в процах LPC2xxx и используется ли при этом прерывания Embedded ICE, DbgCommRx и Embedded ICE, DbgCommTX и как они программно отрабатываются?

Да через JTAG, со стороны проца через сопроцессор 15. Real Monitor использует прерывания эти!
Да и вообще все прерывания через себя пропускает.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 12 2009, 12:31
Сообщение #5


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(KRS @ Nov 12 2009, 18:27) *
Да через JTAG, со стороны проца через сопроцессор 15.

А где обо всём этом подробно написано?
Цитата(KRS @ Nov 12 2009, 18:27) *
Real Monitor использует прерывания эти!
Да и вообще все прерывания через себя пропускает.

А как это. Ремап делает? Как тогда будет FIQ отрабатываться?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
KRS
сообщение Nov 12 2009, 12:47
Сообщение #6


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(GetSmart @ Nov 12 2009, 15:31) *
А где обо всём этом подробно написано?

А как это. Ремап делает? Как тогда будет FIQ отрабатываться?

Нет, Вы сами должные ему отдать smile.gif, а он потом вызовет хендлер, который в регистрах VIC прописан.
Да в user manual на LPC и описано с примерами.
А вообще нужен ARM_Firmware_Suite, тут на ftp был
Но IMHO не стоит парить себе мозги.
Сам по себе RealMonitor не включится, его навдо включать, или прилинковывать к своей проге.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Nov 12 2009, 13:58
Сообщение #7


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(GetSmart @ Nov 12 2009, 13:46) *
DCC работает через пины JTAG ?

Меня особенно интересует кто использовал эту фичу в процах LPC2xxx и используется ли при этом прерывания Embedded ICE, DbgCommRx и Embedded ICE, DbgCommTX и как они программно отрабатываются?

Ну, например, так:
Код
RAM             BYTE    DbgRBuf[HAL_DEBUG_RBUF_SIZE];   // приемный отладочный буфер
RAM             BYTE    DbgTBuf[HAL_DEBUG_TBUF_SIZE];   // передающий отладочный буфер
RAM volatile    DWORD   DbgRBeg;  
RAM             DWORD   DbgREnd;
RAM             DWORD   DbgTBeg;
RAM volatile    DWORD   DbgTEnd;
RAM             BYTE    DbgInit;

//________________________________________________________________
//
// Отладочные прерывания от DCC - обмен по JTAG, следует отметить что
// это не полноценные обработчики а всего лишь callbacks из виртуального
// контроллера прерываний
//
void hal_dcc_rx_handler(void)
{

    if(hal_status_dcc() & 0x01)
    {
        DWORD Tmp = DbgRBeg;
        //
        // Принимаем байт (не слово) из DCC
        //
        DbgRBuf[Tmp] = (BYTE)hal_read_dcc();
        Tmp++;
        if (Tmp >= HAL_DEBUG_RBUF_SIZE)
        {
            Tmp = 0;
        }
        DbgRBeg = Tmp;
    }
    //
    // Больше нет байтов в DCC
    //
    VIC_VECTOR = 0;
}

void hal_dcc_tx_handler(void)
{
    if ((hal_status_dcc() & 0x02) == 0)
    {
        DWORD Tmp, Mask;
        //
        // Передаем 32-битное слово, дополненное нулями
        // если нет достаточного числа символов в буфере
        //
        Tmp = DbgTEnd;
        if (DbgTBeg != Tmp)
        {
            DWORD i, d;
            //
            // В буфере есть какие-то данные, выбираем и посылаем
            //
            Mask = 0;
            for(i=0; (i<sizeof(DWORD) && (DbgTBeg != Tmp)); i++)
            {
                d = DbgTBuf[Tmp];
                Mask |= d<<(i*8);
                Tmp++;
                if (Tmp >= HAL_DEBUG_TBUF_SIZE)
                {
                    Tmp = 0;
                }
            }
            DbgTEnd = Tmp;
            hal_write_dcc(Mask);
        }
        else
        {
            //
            // Данных в буфере больше нет, запретим прерывание
            //
            VIC_IDCR = (1<<IRQ_DCC_TX);
        }
    }
    VIC_VECTOR = 0;
}


DCC работает через JTAG. Мы эту фичу активно пользуем - в программе на DCC завязана процедура типа debug_putch(), а на компе запущена утилита, которая через ByteBlaster шуршит через JTAG и выводит это все в консоль, аналогично сделан и консольный ввод.Оно все прекрасно много лет работает с Samsung 44/24xx, Intel IXPxxx, Атмеловскими AT91SAM7/9, очень удобно - не занимается UART для отладки. Но, блин с LPC23 оказалось неудобно - JTAG при активации энергосбережения отпадает, да и сам JTAG в LPC сбоит периодически при опросе DCC (я думаю проходит помеха и где-то в недокументированном регистре что-то не то происходит - у меня отваливались памяти MAC/USB) в конце-концов, замучались с этой проблемой и именно для LPC23 перешли на UART - благо их достаточно.
Сейчас вот в LPC17 они вообще не сделали "человеческий" DCC. Не, все сделано стандартно, через новейшую навороченную фирменную отладку Cortex-а, но очень уж сложно - я еще не разобрался. Atmel, кстати, в SAM3 повернулся лицом - там сохранили простой DCC.
Go to the top of the page
 
+Quote Post

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

 


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


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