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

 
 
> IAR+SAM7X256+MT-link, проблема
Karl
сообщение Dec 6 2006, 09:53
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429



Запускаю иаровский демо-проект. При отладке из ОЗУ вроде работает. При отладке во флэшь в самом конце файла 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. Что не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
Karl
сообщение Dec 14 2006, 07:02
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429



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

2) После прошивки контроллера и выключения/включения программа работает только в том случае, если кабель житага не был отключен. Если кабель отключить - программа запускаться перестает.
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Dec 16 2006, 18:59
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050



Для первой проблем попробуите поставит в mac фаил для дебугрера
Код
execUserReset()
{
    __message "-------------------------------Periferial reset ----------------------------------";
    __writeMemory32(0xA5000004,0xFFFFFD00,"Memory");  
}


Ето делает ресет периферии перед каждой запуске дебагера.
Go to the top of the page
 
+Quote Post
Karl
сообщение Dec 18 2006, 14:58
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429



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


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


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

По второй проблеме: как показали опыты, после прошивки по адресу 0х100000 действительно присутствует код и программа работает. Включение/ выключение питания при подключенном МТлинке ни к чему плохому не приводит - после включения программа начинает работать. Но если отключить житаг и дернуть питание - с адреса 0х100000 появляются одни 0хFF - программа стирается. Почему это может происходить?
И еще - можно ли с помощью житага проверять и устанавливать биты настройки (в частности отвечающий за ремап) и если да, то как?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 18 2006, 20:16
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(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?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Dec 18 2006, 20:21
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050



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

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

Options->Debugger->SetupMacros нада в етот фаил вставит.
Go to the top of the page
 
+Quote Post
miro_atc
сообщение Dec 18 2006, 20:50
Сообщение #7





Группа: Новичок
Сообщений: 1
Регистрация: 18-12-06
Пользователь №: 23 644



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

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

Вставте breakpoint после установки PLL и нажмите GO - так дебугер не будет активен когда CPU clock is too slow ;-)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 18 2006, 21:21
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(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с "прийти в себя"


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 18 2006, 22:56
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Сергей Борщ @ 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 ";
}


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


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


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