Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR+SAM7X256+MT-link
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Karl
Запускаю иаровский демо-проект. При отладке из ОЗУ вроде работает. При отладке во флэшь в самом конце файла Cstartup.s выскакивает ошибка: J-Link RDI Error Read memory error @ addres 0x00000000, word acces: Memory access timeout. При выходе из режима отладки выдает следующую ошибку: Fatal error WinRdi Clear Break Failed [Rdi Error 145] Tried to clear a non existing a breacpoint/watchpoint. Что не так?
Karl
Вопросов стало больше:
1) часто при запуске отладки все вроде прошивается, но по нулевому адресу стоит неверный код (видно в окне дизассемблера). В результате получается то, что описано выше. Лечится перезапуском отладчика, иногда приходится дергать питание. В чем проблема?

2) После прошивки контроллера и выключения/включения программа работает только в том случае, если кабель житага не был отключен. Если кабель отключить - программа запускаться перестает.
Nikola Kirov
Для первой проблем попробуите поставит в mac фаил для дебугрера
Код
execUserReset()
{
    __message "-------------------------------Periferial reset ----------------------------------";
    __writeMemory32(0xA5000004,0xFFFFFD00,"Memory");  
}


Ето делает ресет периферии перед каждой запуске дебагера.
Karl
Цитата(Nikola Kirov @ Dec 16 2006, 20:59) *
Для первой проблем попробуите поставит в mac фаил для дебугрера
Код
execUserReset()
{
    __message "-------------------------------Periferial reset ----------------------------------";
    __writeMemory32(0xA5000004,0xFFFFFD00,"Memory");  
}


Ето делает ресет периферии перед каждой запуске дебагера.


Спасибо, попробую.

По второй проблеме: как показали опыты, после прошивки по адресу 0х100000 действительно присутствует код и программа работает. Включение/ выключение питания при подключенном МТлинке ни к чему плохому не приводит - после включения программа начинает работать. Но если отключить житаг и дернуть питание - с адреса 0х100000 появляются одни 0хFF - программа стирается. Почему это может происходить?
И еще - можно ли с помощью житага проверять и устанавливать биты настройки (в частности отвечающий за ремап) и если да, то как?
Сергей Борщ
Цитата(Nikola Kirov @ Dec 16 2006, 17:59) *
Для первой проблем попробуите поставит в mac фаил для дебугрера
Код
execUserReset()
{
    __message "-------------------------------Periferial reset ----------------------------------";
    __writeMemory32(0xA5000004,0xFFFFFD00,"Memory");  
}

Ето делает ресет периферии перед каждой запуске дебагера.
Не работает. Во всяком случае с IAR4.30A - "Memory access timed out @ 0x00000010 -> JTAG speed too high?" Правда пользую MT-Link без RDI. Какая у вас версия IAR?
Nikola Kirov
Ето не зависит из типа дебугера ни от версии. Я давано ползуюс етого.

Куда вставили?

Options->Debugger->SetupMacros нада в етот фаил вставит.
miro_atc
О может бит нет проблема?

Если JTAG clock болше чем CPU клок - дебугер соидет с ума

Вставте breakpoint после установки PLL и нажмите GO - так дебугер не будет активен когда CPU clock is too slow ;-)
Сергей Борщ
Цитата(Nikola Kirov @ Dec 18 2006, 19:21) *
Ето не зависит из типа дебугера ни от версии. Я давано ползуюс етого.
Да, виноват. Работает. Поставил JTAG speed Fixed 32 KHz все работает. Но медленно :-(
Цитата(miro_atc @ Dec 18 2006, 19:50) *
Если JTAG clock болше чем CPU клок - дебугер соидет с ума
Вставте breakpoint после установки PLL и нажмите GO - так дебугер не будет активен когда CPU clock is too slow ;-)
Это не красиво. Мне скажем вообще не надо run to main. Надо подумать как заставить его из .maс "прийти в себя"
Сергей Борщ
Цитата(Сергей Борщ @ Dec 18 2006, 20:21) *
Это не красиво. Мне скажем вообще не надо run to main. Надо подумать как заставить его из .maс "прийти в себя"
Придумал.
Код
Reset()
{
    __writeMemory32(0xA5000004, 0xFFFFFD00, "Memory");              // reset the peripherals
    if( __driverType("jlink") )
    {
        __sleep(1000000);                                           // wait
        __emulatorSpeed(32000);                                     // set JTAG speed ~ slow clock
    }
    __writeMemory32(0x00000001, 0xFFFFFC20,"Memory");               // OSC enable, no timeout

    while (! (__readMemory32(0xFFFFFC68, "Memory") & (1 << 0)) );   // wait until MOSCS

    __writeMemory32(0x00190605, 0xFFFFFC2C,"Memory");               // *26/5 set LOCK after 6 SCLK

    __writeMemory32(0x00000004, 0xFFFFFC30,"Memory");               // PRES = 2
    while (! (__readMemory32(0xFFFFFC68, "Memory") & (1 << 3)) );   // wait untli MCKRDY

    __writeMemory32(0x00000007, 0xFFFFFC30,"Memory");               // MCK = PLLCK / 2
    while (! (__readMemory32(0xFFFFFC68, "Memory") & (1 << 3)) );   // wait untli MCKRDY

    if( __driverType("jlink") )
    {
        __emulatorSpeed(0);                                         // auto-detect new JTAG speed
        __sleep(1000000);                                           // wait
    }
    __message " MCK ready ";
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.