Перейти к содержанию
    

IAR+SAM7X256+MT-link

Запускаю иаровский демо-проект. При отладке из ОЗУ вроде работает. При отладке во флэшь в самом конце файла 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. Что не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопросов стало больше:

1) часто при запуске отладки все вроде прошивается, но по нулевому адресу стоит неверный код (видно в окне дизассемблера). В результате получается то, что описано выше. Лечится перезапуском отладчика, иногда приходится дергать питание. В чем проблема?

 

2) После прошивки контроллера и выключения/включения программа работает только в том случае, если кабель житага не был отключен. Если кабель отключить - программа запускаться перестает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для первой проблем попробуите поставит в mac фаил для дебугрера

execUserReset()
{
    __message "-------------------------------Periferial reset ----------------------------------";
    __writeMemory32(0xA5000004,0xFFFFFD00,"Memory");   
}

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для первой проблем попробуите поставит в mac фаил для дебугрера

execUserReset()
{
    __message "-------------------------------Periferial reset ----------------------------------";
    __writeMemory32(0xA5000004,0xFFFFFD00,"Memory");   
}

 

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

 

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

 

По второй проблеме: как показали опыты, после прошивки по адресу 0х100000 действительно присутствует код и программа работает. Включение/ выключение питания при подключенном МТлинке ни к чему плохому не приводит - после включения программа начинает работать. Но если отключить житаг и дернуть питание - с адреса 0х100000 появляются одни 0хFF - программа стирается. Почему это может происходить?

И еще - можно ли с помощью житага проверять и устанавливать биты настройки (в частности отвечающий за ремап) и если да, то как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для первой проблем попробуите поставит в mac фаил для дебугрера

execUserReset()
{
    __message "-------------------------------Periferial reset ----------------------------------";
    __writeMemory32(0xA5000004,0xFFFFFD00,"Memory");   
}

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ето не зависит из типа дебугера ни от версии. Я давано ползуюс етого.

 

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

 

Options->Debugger->SetupMacros нада в етот фаил вставит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О может бит нет проблема?

 

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

 

Вставте breakpoint после установки PLL и нажмите GO - так дебугер не будет активен когда CPU clock is too slow ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ето не зависит из типа дебугера ни от версии. Я давано ползуюс етого.
Да, виноват. Работает. Поставил JTAG speed Fixed 32 KHz все работает. Но медленно :-(

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

Вставте breakpoint после установки PLL и нажмите GO - так дебугер не будет активен когда CPU clock is too slow ;-)

Это не красиво. Мне скажем вообще не надо run to main. Надо подумать как заставить его из .maс "прийти в себя"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не красиво. Мне скажем вообще не надо 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 ";
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...