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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> К1986ВЕ92, SWD, высвобождение остальных ножек JTAG
demiurg_spb
сообщение Jun 3 2014, 04:40
Сообщение #1


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Начинаем осваивать ARM-CM3 от Миландр К1986ВЕ92.
Сразу возник вопрос.
Можно-ли, используя лишь SWD, высвободить остальные ножки JTAG для собственных нужд (так же как это было в STM32)?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
редактор
сообщение Jun 3 2014, 04:51
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Скорее всего можно, только надо библиотеки подправить.
Там библиотека сделана таким образом, что при записи в порт маскирует все ножки JTAG.
Ну при экспериментах будте готовы, что придется стирать МК через UART.
При прямой записи в порт с JTAG интерфейсом есть шанс завесить отладку. Местная грабля.


Сообщение отредактировал редактор - Jun 3 2014, 04:51


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 3 2014, 05:09
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(редактор @ Jun 3 2014, 13:01) *
Скорее всего можно, только надо библиотеки подправить.
Там библиотека сделана таким образом, что при записи в порт маскирует все ножки JTAG.
Да, это я заметил.
И подумал про себя что за....
Цитата
Ну при экспериментах будте готовы, что придется стирать МК через UART.
При прямой записи в порт с JTAG интерфейсом есть шанс завесить отладку. Местная грабля.
Нет слов.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
rus61
сообщение Jun 4 2014, 07:23
Сообщение #4





Группа: Участник
Сообщений: 10
Регистрация: 13-03-10
Пользователь №: 55 929



Цитата(demiurg_spb @ Jun 3 2014, 12:50) *
Начинаем осваивать ARM-CM3 от Миландр К1986ВЕ92.
Сразу возник вопрос.
Можно-ли, используя лишь SWD, высвободить остальные ножки JTAG для собственных нужд (так же как это было в STM32)?

Можно, не каких аппаратных проблем нет. Понадобятся только SWDIO (TMS), SWCLK (TCK) и GND. Если вдруг программой переназначите пины или остановите тактирование МК, то переведите МК в режим роботы с внешней ROM (с полным обесточиванием) и спокойно стирайте контроллер через SWD.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 4 2014, 07:48
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(rus61 @ Jun 4 2014, 15:33) *
Спасибо!


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 23 2014, 11:58
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Выяснился один интересный момент.
Если обращаться к порту (к не SWD пинам) в котором находятся линии SWD через BITBAND, то SWD отваливается, с JTAG аналогично.
Об этом миландр не пишет в своих ератах, а стоило бы...
Поэтому пришлось делать костыль и работать с этим портом лишь через его регистры.

Ну и ещё из того что изумило или озадачило:
1) Нет возможности защитить от чтения Flash (крест на коммерческих применениях).
2) Нет события UART TXC, соответственно с RS485 танцы с бубном.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
rus61
сообщение Jul 23 2014, 15:01
Сообщение #7





Группа: Участник
Сообщений: 10
Регистрация: 13-03-10
Пользователь №: 55 929



Цитата(demiurg_spb @ Jul 23 2014, 15:58) *
Выяснился один интересный момент.
Если обращаться к порту (к не SWD пинам) в котором находятся линии SWD через BITBAND, то SWD отваливается, с JTAG аналогично.
Об этом миландр не пишет в своих ератах, а стоило бы...
Поэтому пришлось делать костыль и работать с этим портом лишь через его регистры.
...


Проблемы возникают при "read modify write" из за того что Вы пишите в JTAG пины "мусор" который вычитали во время стадии "read". Если перед "write" наложить маску на эти биты (обнулить), то проблем не будит. Как пример посмотрите SPL.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 23 2014, 15:06
Сообщение #8


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(rus61 @ Jul 23 2014, 19:01) *

У меня и так нет проблем. Я же говорю, что при использовании BITBAND происходит не очевидный "read modify write" всего порта, хотя обращение идёт к биту напрямую.
А при явной записи в регистры с маскированием ясно дело что всё нормально. Я про этот костыль и говорю - он спасает.
На мой взгляд BITBAND на то и придумывался чтобы избежать подобных проблем.
Но в миландре ИМХО его (BITBAND) кривовато реализовали.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
rus61
сообщение Jul 24 2014, 07:39
Сообщение #9





Группа: Участник
Сообщений: 10
Регистрация: 13-03-10
Пользователь №: 55 929



Цитата(demiurg_spb @ Jul 23 2014, 19:06) *
У меня и так нет проблем. Я же говорю, что при использовании BITBAND происходит не очевидный "read modify write" всего порта, хотя обращение идёт к биту напрямую.
А при явной записи в регистры с маскированием ясно дело что всё нормально. Я про этот костыль и говорю - он спасает.
На мой взгляд BITBAND на то и придумывался чтобы избежать подобных проблем.
Но в миландре ИМХО его (BITBAND) кривовато реализовали.

Да проглядел, что речь о Bit-band, но смысл от этого не изменился. По факту при записи в Bit-band регион ядро делает последовательность "read modify write", которая является атомарной (S-bus блокируется до окончания записи, но само ядро может продолжать выполнять команды если не требуется доступа к S-bus). Механизм Bit-band реализован не Миландром, а ARM и описан в TRM на Cortex-M3.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Jul 24 2014, 09:43
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(rus61 @ Jul 24 2014, 11:39) *
Да проглядел, что речь о Bit-band, но смысл от этого не изменился. По факту при записи в Bit-band регион ядро делает последовательность "read modify write", которая является атомарной (S-bus блокируется до окончания записи, но само ядро может продолжать выполнять команды если не требуется доступа к S-bus). Механизм Bit-band реализован не Миландром, а ARM и описан в TRM на Cortex-M3.


Бред. "Bit-banding provides atomic operations to bit data,"
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 24 2014, 11:17
Сообщение #11


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(DmitryM @ Jul 24 2014, 15:43) *
Бред. "Bit-banding provides atomic operations to bit data,"

Не бред, всё так и есть:
Цитата
The System bus interface contains logic that controls bit-band accesses as follows:
  • It remaps bit-band alias addresses to the bit-band region.
  • For reads, it extracts the requested bit from the read byte, and returns this in the Least Significant Bit (LSB) of the read data returned to the core.
  • For writes, it converts the write to an atomic read-modify-write operation.
  • The processor does not stall during bit-band operations unless it attempts to access the System bus while the bit-band operation is being carried out.
(И я не совсем понимаю, как Миландр мог накосячить в бит-банде, если это функция ядра.)


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 24 2014, 13:17
Сообщение #12


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Значит, bitband представляется программной атомарной операцией, но это не означает аппаратного чтения-модификации-записи только одного бита.
Похоже, нигде, кроме JTAG, это не проявится.
А для управления битами портов bitband не нужен. Хватает средств и без него.

P.S. Можно прийти к выводу, что bitband имеет смысл использовать только для тех битов, которые устанавливаются (сбрасываются) программно - для битовых переменных.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Jul 24 2014, 13:45
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(ViKo @ Jul 24 2014, 17:17) *
А для управления битами портов bitband не нужен. Хватает средств и без него.

P.S. Можно прийти к выводу, что bitband имеет смысл использовать только для тех битов, которые устанавливаются (сбрасываются) программно - для битовых переменных.


Не думаю, иначе зачем
Цитата
The memory map has two 32-MB alias regions that map to two 1-MB bit-band regions:

  • Accesses to the 32-MB SRAM alias region map to the 1-MB SRAM bit-band region.
  • Accesses to the 32-MB peripheral alias region map to the 1-MB peripheral bit-band region.

Другой вопрос, использовать или нет.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 24 2014, 13:54
Сообщение #14


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(DmitryM @ Jul 24 2014, 16:45) *
Не думаю, иначе зачем
...
Другой вопрос, использовать или нет.

Да, вы правы.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 24 2014, 18:52
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



я так понимаю основное назначение бит-банда это ускорение операций типа

REG |= VAL;
REG &= ~VAL;

замена чтение, изменения, записи (3 операций) на одну битбандвую... Я не прав?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 24 2014, 18:59
Сообщение #16


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Golikov A. @ Jul 24 2014, 21:52) *
я так понимаю основное назначение бит-банда это ускорение операций типа

REG |= VAL;
REG &= ~VAL;

замена чтение, изменения, записи (3 операций) на одну битбандвую... Я не прав?

Да. И, как выясняется, та же последовательность делается аппаратно, только программа этого не "видит".
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 24 2014, 21:16
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



вопрос за сколько тактов... судя по описанию за 1. И даже если не за один, то гарантированно прерывание не влезет в процесс, операция атомарна. Но что-то мне говорит что за 1 такт это делается...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 24 2014, 22:00
Сообщение #18


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



LOAD и STORE выполняются за 2 такта. За сколько выполняется bitband запись, не сказано. Видимо, за столько же.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 25 2014, 06:18
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



что делать тогда с атомарностью процедуры?
где то я читал что ногами шевелили через бит банд, потому что быстрее чем в порт писать, но может я что-то не верно помню...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 25 2014, 06:30
Сообщение #20


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



С атомарностью ничего не делать, пользоваться.
Битбэнд быстрее, если обращаться к порту через ODR, но есть еще BSRR, безо всякого чтения-модификации-записи.
Go to the top of the page
 
+Quote Post
rus61
сообщение Jul 25 2014, 07:59
Сообщение #21





Группа: Участник
Сообщений: 10
Регистрация: 13-03-10
Пользователь №: 55 929



Цитата(Golikov A. @ Jul 25 2014, 01:16) *
вопрос за сколько тактов... судя по описанию за 1. И даже если не за один, то гарантированно прерывание не влезет в процесс, операция атомарна. Но что-то мне говорит что за 1 такт это делается...


Минимум три такта системной частоты на read-modify-write плюс такты работы с памятью/периферией (выставление адреса, ожидание выставления данных и т.д.), на это время системная шина будит заблокирована, но выполнение команд продолжится(если не требуется доступ к шине иначе ядро будит ждать). Для программы операция на 100% атомрная и вероятно выполняется за один такт (т.к. не нужно ждать доступа к памяти/периферии).

Цитата(ViKo @ Jul 25 2014, 10:30) *
С атомарностью ничего не делать, пользоваться.
Битбэнд быстрее, если обращаться к порту через ODR, но есть еще BSRR, безо всякого чтения-модификации-записи.


BSRR в К1986ВЕ92 к сожалению нет.

Сообщение отредактировал rus61 - Jul 25 2014, 08:01
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 25 2014, 08:03
Сообщение #22


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(rus61 @ Jul 25 2014, 10:59) *
BSRR в К1986ВЕ92 к сожалению нет.

Это печально. Объясняет...
Выходит, Миландр купили ядро Cotrex, а периферию "слепили из того, что было". crying.gif
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 25 2014, 08:59
Сообщение #23


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(ViKo @ Jul 25 2014, 11:03) *
Это печально. Объясняет...
Выходит, Миландр купили ядро Cotrex, а периферию "слепили из того, что было". crying.gif

Сорри за оффтоп, но вот интересно, эти контроллеры для каких хоть целей используют? До "нормальных" мк ст или лпс они еще недотягивают по функционалу, а уж по цене - тут вообще без вариантов. Что у них есть такого "сильного", чтоб их выбирать?
ЗЫ Ну кроме указаний свыше - "использовать отечественную эл. базу" biggrin.gif
Go to the top of the page
 
+Quote Post
rus61
сообщение Jul 25 2014, 09:28
Сообщение #24





Группа: Участник
Сообщений: 10
Регистрация: 13-03-10
Пользователь №: 55 929



Цитата(mantech @ Jul 25 2014, 12:59) *
Сорри за оффтоп, но вот интересно, эти контроллеры для каких хоть целей используют? До "нормальных" мк ст или лпс они еще недотягивают по функционалу, а уж по цене - тут вообще без вариантов. Что у них есть такого "сильного", чтоб их выбирать?
ЗЫ Ну кроме указаний свыше - "использовать отечественную эл. базу" biggrin.gif


Для тех же целей что и STM и LPC но в военных приборах. Если Вы думаете, что импортные МК милитари класса дешевле, то я Вас разочарую, они стоят также, а то и дороже. Посмотрите на стоимость микросхем от TI, к примеру http://www.ti.com/product/SMJ320C25/samplebuy - 388$ и это за древний 16-разрядный DSP при прямой поставке от 100 шт.
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 25 2014, 15:49
Сообщение #25


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(rus61 @ Jul 25 2014, 12:28) *
Для тех же целей что и STM и LPC но в военных приборах.

Все понятно, вопросов больше нет, ибо в оборонной технике должны стоять отечественные элементы. Просто почему спросил, вроде всегда казалось, что оборонные разработчики так же засекречены, как и разработки и общаются на "своих" форумах laughing.gif
Go to the top of the page
 
+Quote Post
AVR
сообщение Aug 19 2014, 08:38
Сообщение #26


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(редактор @ Jun 3 2014, 08:51) *
Ну при экспериментах будте готовы, что придется стирать МК через UART.

А как это понимать? Микроконтроллеры от Миландр можно прошивать и стирать через UART?
т.е. я могу зашить свою программу не покупая программатор? На каких официальных отладочных платах это работает?


--------------------
Go to the top of the page
 
+Quote Post
LightElf
сообщение Aug 19 2014, 10:37
Сообщение #27


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

Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205



QUOTE (AVR @ Aug 19 2014, 12:38) *
А как это понимать? Микроконтроллеры от Миландр можно прошивать и стирать через UART?

Какбы да. Я даже уже и не припомню мелкий ARM без такой фичи.
QUOTE (AVR @ Aug 19 2014, 12:38) *
т.е. я могу зашить свою программу не покупая программатор?

Именно. Но возможности удобной отладки потеряете.
QUOTE (AVR @ Aug 19 2014, 12:38) *
На каких официальных отладочных платах это работает?

Да вроде на всех должно. Там надо ножки правильно выставить. Если разработчик платы не накосячил.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 19 2014, 11:01
Сообщение #28


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(AVR @ Aug 19 2014, 12:38) *
А как это понимать? Микроконтроллеры от Миландр можно прошивать и стирать через UART?
т.е. я могу зашить свою программу не покупая программатор? На каких официальных отладочных платах это работает?
Проверено на LDM-K1986BE92QI.
А на отладочном комплекте от самого миландра "отладочный комплект для K1986BE92QI" проверить не удалось, он оказался нерабочим из коробки.
Как такое может быть вообще не понимаю.

Кстати про уарт забыли как только поняли причину отваливания JTAG (писал об этом выше).

Ещё коллегой был пофикшен openocd в связке ST-LINK + K1986 (тип контроллера не принципиален) :
http://openocd.zylin.com/#/c/2217/

Теперь SWO-консоль не отваливаетсяsm.gif


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
RuSTA
сообщение Aug 19 2014, 19:40
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 25-10-10
Из: Россия
Пользователь №: 60 410



Проблему с отваливающимся JTAG А и Б решал с помощью переключения на внешнию флеш. Стирается и записывается без проблем.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 20 2014, 11:30
Сообщение #30


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(RuSTA @ Aug 19 2014, 23:40) *

Судя по доке этот приём должен проходить лишь для JTAG Б.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
mik109
сообщение Aug 20 2014, 13:49
Сообщение #31





Группа: Участник
Сообщений: 14
Регистрация: 18-01-07
Пользователь №: 24 559



Цитата(RuSTA @ Aug 19 2014, 23:40) *
Проблему с отваливающимся JTAG А и Б решал с помощью переключения на внешнию флеш. Стирается и записывается без проблем.

Если на плате не выведены другие интерфейсы и нет возможности менять вариант загрузки применяю на стадии отладки перед инициализацией портов пустой
цикл секунды на две. Когда по недосмотру в программе валим JTAG, можно будет успеть стереть чип.
Go to the top of the page
 
+Quote Post
AVR
сообщение Sep 4 2014, 12:15
Сообщение #32


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(demiurg_spb @ Aug 19 2014, 15:01) *
Проверено на LDM-K1986BE92QI.

Спасибо за подсказку. Купил эту плату, действительно шьется по UART sm.gif


--------------------
Go to the top of the page
 
+Quote Post
AVR
сообщение Sep 7 2014, 19:04
Сообщение #33


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(demiurg_spb @ Aug 19 2014, 15:01) *
Проверено на LDM-K1986BE92QI.
Кстати про уарт забыли как только поняли причину отваливания JTAG (писал об этом выше).

У меня появился вопрос... их программа 1986WSD.exe действительно прошивает, однако требуется там нажать Run чтобы программа начала работать. А при сбросе питания - пусто, программы нет, не работает. Не представляю - куда же оно там зашилось, или надо что-то сделать чтобы оно начало работать при включении питания при таком способе прошивки? Подозреваю переключатели M0/M1/M2 на плате за это отвечают.


--------------------
Go to the top of the page
 
+Quote Post
rus61
сообщение Sep 8 2014, 10:46
Сообщение #34





Группа: Участник
Сообщений: 10
Регистрация: 13-03-10
Пользователь №: 55 929



Цитата(AVR @ Sep 7 2014, 23:04) *
У меня появился вопрос... их программа 1986WSD.exe действительно прошивает, однако требуется там нажать Run чтобы программа начала работать. А при сбросе питания - пусто, программы нет, не работает. Не представляю - куда же оно там зашилось, или надо что-то сделать чтобы оно начало работать при включении питания при таком способе прошивки? Подозреваю переключатели M0/M1/M2 на плате за это отвечают.


По видимому Вы после прошивки по UART не перевели МК в режим работы с Flesh (M0/M1/M2 = 0/0/0).
Go to the top of the page
 
+Quote Post

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

 


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


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