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

Вопросы по OpenOCD

Добрый вечер (ночь/утро/день)!

 

Пытаю отладить чип LPC2468 при помощи GDB+OpenOCD (через Wiggler). Здесь я новичек, поэтому возник ряд

вопросов:

 

1) Насколько я понял, OpenOCD коннектится к отладочной логике чипа через jtag и некакие резиденты в ram контроллера не загружает. Правильно я понял?

 

2) Допустим прога для контроллера имеет следующий вид:

 

Vectors: LDR PC, Reset_Addr

# остальные векторы прерываний

 

Reset_Addr: .word Reset_Handler

# остальные константы прерываний

 

Reset_Handler: LDR R0, Top_Stack

# инициализация стеков

 

# глухой цикл

LOOP: B LOOP

 

Контроллер зависает в последнем цикле. В консоли GDB я пишу monitor halt, затем monitor reg. Дебагер показывает, что теневые регистры содержат 0x00000000, хотя в программе они инициализируются.

Если же глухой цикл поместить перед инициализацией стеков и выйти из него принудительно

(командой monitor step <loop+4>) а потом прошагать код вручную, теневые регистры содержат правильные значения. Че за лажа?

 

3) как reset'нуть МК?

 

 

Заранее благодарен.

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


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

1) Насколько я понял, OpenOCD коннектится к отладочной логике чипа через jtag и некакие резиденты в ram контроллера не загружает. Правильно я понял?

Типа того.

 

2) .....

Подозреваю, что вы напутали что-то или с заливкой прошивки, или с настройками линкера

 

3) как reset'нуть МК?

для сброса есть 2 варианта:

1) monitor reset, monitor halt

2) monitor soft_reset_halt

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


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

За soft_reset_halt огромное спасибо. При запросе справки OpenOCD о ней почему-то умалчивает. На сколько я понял, OpenOCD сам записывает в PC 0x00000000 и переводит проц в режим супервизора.

 

А вот с monitor reset не получается. Файл конфигурации для OpenOCD содержит команду

reset_config trst_and_srst srst_pulls_trst. При вводе monitor reset контроллер улетает черт знает куда и

выдает такое сообщение:

 

requested reset would assert trst

value captured during scan didn't pass the requested check: captured: 0x00

check_vavue 0x01 check_mask: 0x0f

 

Но в файле конфигурации у меня написано: jtag_device 4 0x1 0xf 0xe

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


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

вот тут есть тема

http://electronix.ru/forum/index.php?showtopic=49252

я недавно настраивал отладку через OpenOCD, возможно вы сможете что то подчерпнуть, в том числе из конфигурационных файлов.

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


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

Доброе утро (день/вечер/ночь)!

 

За пэдээфку спасибо. Сейчас для ресета пользуюсь командой soft_reset_halt. Аппаратный ресет (monitor reset) устроить так и не получается.

 

Я сейчас в эклипс пытаюсь сделать такую штуку:

Выбираю внешний инструмент с именем, например, "prog". При этом запускается OpenOCD, выполняется скрипт с командами для прошивки контроллера и OpenOCD вырубается. Скрипт пытаюсь прицепить к событию "post_halt" (т.к. ресет не работает). Подскажите, в чем может быть косяк.

 

Еще такой вопрос: нет ли у кого бинарников OpenOCD для маздая с поддержкой пар.порта по-новее? А то у меня версия r520.

 

 

Заранее благодарен

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


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

Подскажите, а что настроить в связке openocd-gdb, что бы по 'stepi' отладчик заходил или не заходил в обработчик прерывания.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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