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

Запрет остановки / паузы отладки

А зачем он мне, если OpenOCD вполне справляется? Тем более я пользуюсь gcc/gdb, и не уверен, что st-link или j-link беспроблемно стыкуются с gdb.

Все ясно с вами )))

 

Зачем это делать?
А кто будет настраивать порты на некие безопасные значения, чтобы не попалить силу, подключенную снаружи, пока шьется флэш?

Я вот всегда решаю это аппаратно, дабы не зависеть от всяких отладчиков/программаторов.

 

OpenOCD умеет заливать проги в несколько сотен разных процессоров, и не только заливать ;) Но если Вам хочется сделать что-то особенное, то нет проблем добавить несколько команд в скрипт :) Прогу в ОЗУ корректировать не нужно, она сама по себе.

А что там с st-link?

А то же самое - ST-LINK шьет абсолютно все STM8/STM32. В китаях идут по 100р за штучку. Обед в столовке и то дороже :biggrin:

Сам им давно не пользуюсь - медленный слишком.

У конторы, где работую, деньги есть на оригинальные j-link, а уж на его клонов и подавно.

Себе лично прикупиль несколько клонов, домой. Не разорился ни разу ))

Все встроенные в платки discovery st-link перешил на j-link, на сайте сеггера есть прошивка.

 

Вообще-то без тактирования с включенным питанием драйверов любой ТФТ по идее медленно деградирует.

Ну-ну ...

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


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

Все ясно с вами )))

А то же самое - ST-LINK шьет абсолютно все STM8/STM32. В китаях идут по 100р за штучку. Обед в столовке и то дороже :biggrin:

Вы бы хоть узнали, о чём судачите. Openocd - это программа. Она умеет работать и с ST-LINK, и с JLink, и с кучей других адаптеров.

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


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

Вы бы хоть узнали, о чём судачите. Openocd - это программа.

Вона как! А я то все думал, что она по-прежнему лишь с архаичным LPT-программаторами работает или чем-то на базе чипов FTDI USB-JTAG ...

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


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

А кто будет настраивать порты на некие безопасные значения, чтобы не попалить силу, подключенную снаружи, пока шьется флэш?

Я вот всегда решаю это аппаратно, дабы не зависеть от всяких отладчиков/программаторов.

Эх, не читаете Вы то, что я пишу. Я не предлагал критически важные вещи делать зависимыми от программатора. В то же время иметь возможность установить в произвольное состояние любые порты/внутренние регистры/память это однозначно хорошо.

 

На счет кто будет настраивать, я тоже отвечал:

...если Вам хочется сделать что-то особенное, то нет проблем добавить несколько команд в скрипт :) Прогу в ОЗУ корректировать не нужно, она сама по себе.

 

Ну-ну ...

Хоть ну, хоть без ну, но попробуйте включить подсветку, питание драйверов при активном reset'е. У меня идут такие же медленно расплывающиеся цветные полосы, что и без reseta. В этом состоянии есть постоянное напряжение на "ячейках" ТФТ индикатора, которое приводит к его медленной порчи. Возможно в других ТФТ все по-другому, но в двух которые у меня именно так...

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


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

Эх, не читаете Вы то, что я пишу. Я не предлагал критически важные вещи делать зависимыми от программатора.

В то же время иметь возможность установить в произвольное состояние любые порты/внутренние регистры/память это однозначно хорошо.

 

Мы отклоняемся от темы. В данном случае никакое программное решение с этим OpenOCD все равно толком не поможет, а спасет лишь это:

1) железное (аппаратное решение).

2) В случае с Keil можно прямо под отладчиком и работающем камне смотреть любые переменные и строить графики. Это отлично работает под j-link.

3) Использовать RTT (голый или под SystemViewer), это тот же пункт 3, но без Keil

4) UART + простейшая программка-терминал, или любой другой интерфейс с соотв. софтом.

 

 

У меня идут такие же медленно расплывающиеся цветные полосы, что и без reseta. В этом состоянии есть постоянное напряжение на "ячейках" ТФТ индикатора, которое приводит к его медленной порчи.

Т.е. при активном сигнале сброса на TFT-панели она ведет себя таким образом?

Дайте ее название, мне стало даже любопытно ))

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


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

Т.е. при активном сигнале сброса на TFT-панели она ведет себя таким образом?

Дайте ее название, мне стало даже любопытно ))

Да вроде как ничего особенного AT070TN92.2.

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


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

Да вроде как ничего особенного AT070TN92.2.

Когда его вывод RESET притянут к GND "полосы" тоже есть?

 

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


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

В том же OpenOCD можно проинициализировать что угодно, и как надо (я, например, LTDC запускаю, чтобы матрицу не мучать во время программирования - показывает синенький экран :)).

более того можно в скриптах включить PLL и получить приличное ускорение верификации программы.

А как это делается - что-то пишется в память по адресам, где находятся регистры периферии? Можете привести примеры (или дать ссылку, где почитать), как этим пользоваться?

 

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


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

Когда его вывод RESET притянут к GND "полосы" тоже есть?

Да без разницы. Такое впечатление, что с resetом это вообще не связано (может они его внутри подключить забыли :laughing: ).

 

А как это делается - что-то пишется в память по адресам, где находятся регистры периферии? Можете привести примеры (или дать ссылку, где почитать), как этим пользоваться?

Да, пишется в память. Например, вот так:

$_TARGETNAME configure -event reset-init {
# Configure PLL to boost clock to HSI x 4 (64 MHz)
mww 0x40023804 0x08012008   ;# RCC_PLLCFGR 16 Mhz /8 (M) * 128 (N) /4(P)
mww 0x40023C00 0x00000102   ;# FLASH_ACR = PRFTBE | 2(Latency)
mmw 0x40023800 0x01000000 0 ;# RCC_CR |= PLLON
sleep 10                    ;# Wait for PLL to lock
mmw 0x40023808 0x00001000 0 ;# RCC_CFGR |= RCC_CFGR_PPRE1_DIV2
mmw 0x40023808 0x00000002 0 ;# RCC_CFGR |= RCC_CFGR_SW_PLL

# Boost JTAG frequency
adapter_khz 8000

#Confgure PLL SAI to clock LTDC (to prevend TFT degradation during flash loading)
mww 0x40023888 0x69011800   ;# RCC_PLLSAICFGR LTDC clock = 16 Mhz /8 (M) * 96 (N) / 6®
mmw 0x40023800 0x10000000 0 ;# RCC_CR |= PLLSAION
sleep 10                    ;# Wait for PLL to lock
mmw 0x40023830 0x000001E3 0 ;# AHB1ENR Enable GPIO A,B,F,G,H,I
# Configure GPIO A
mww 0x40020000 0xA8000080  ;# MODER
mww 0x40020008 0xFC0000C0  ;# OSPEED
mww 0x40020020 0x00E00000  ;# AFRL
# Configure GPIO B
mww 0x40020400 0x000A0280  ;# MODER
mww 0x40020408 0x000F00C0  ;# OSPEED
mww 0x40020424 0x000000EE  ;# AFRH
# Configure GPIO F
mww 0x40021400 0x00100000  ;# MODER  DE=OUTPUT
mww 0x40021408 0x00000000  ;# OSPEED
# Configure GPIO G
mww 0x40021800 0x0280A000  ;# MODER
mww 0x40021808 0x03C0F000  ;# OSPEED
mww 0x40021820 0xEE000000  ;# AFRL
mww 0x40021824 0x0009E000  ;# AFRH
# Configure GPIO H
mww 0x40021C00 0xAAA80000  ;# MODER
mww 0x40021C08 0xFFFC0000  ;# OSPEED
mww 0x40021C24 0xEEEEEEE0  ;# AFRH
# Configure GPIO I
mww 0x40022000 0x0028002A  ;# MODER
mww 0x40022008 0x003C003F  ;# OSPEED
mww 0x40022020 0x00000EEE  ;# AFRL
mww 0x40022024 0x00000EE0  ;# AFRH

mmw 0x40023844 0x04000000 0 ;# APB2ENR |= LTDC

#Configure LTDC
mww 0x40016808 0x00270013 ;# SSCR
mww 0x4001680C 0x002D0016 ;# BPCR
mww 0x40016810 0x034D01F6 ;# AWCR
mww 0x40016814 0x041F020C ;# TWCR
mww 0x4001682C 0x000000FF ;# BCCR
mmw 0x40016818 0x00002220 0 ;# GCR
mmw 0x40016818 0x00000001 0 ;# GCR	
}

 

Команда

mww addr word

записывает слово word в память по адресу addr,

команда

mmw addr set clear

модифицирует слово по адресу addr в соответствии с битовыми масками set и clear

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


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

Да без разницы. Такое впечатление, что с resetом это вообще не связано (может они его внутри подключить забыли :laughing: ).
Вот уж засада :(

Я бы в таком случае сделал бы коммутируемым питание панели от пина проца, т. е. в дефолте на голом проце питание на панель не идет.

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


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

Отлаживаю дивайс на STM32 с помощью JLink. Иногда требуется "запаузить" отладку, посмотреть состояние переменных и т.п. Если момент паузы приходится когда на силовую часть подано напряжение (с ЦАПа), резисторы начинают гореть. Есть ли возможность запретить остановку прогаммы JLink-ом на каком то интервале программного кода?

Да не проблема.

В Cortex-M on-chip breakpoints можно поставить только в области 0x00000000 - 0x1fffffff.

Перенесите код который нельзя прерывать в RAM и не сможете там поставить on-chip breakpoints.

Софтварные брикпойнты, конечно, при этом надо в J-Link запретить.

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


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

А как это делается - что-то пишется в память по адресам, где находятся регистры периферии? Можете привести примеры (или дать ссылку, где почитать), как этим пользоваться?

 

Сорри, arhiv6, Вы автор статьи на изи об OpenOCD и SEGGER RTT? Хочется вопросов пару задать. Но - завтра.

Изменено пользователем nanorobot

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


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

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

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

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

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

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

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

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

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

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