demiurg_spb 0 3 июня, 2014 Опубликовано 3 июня, 2014 · Жалоба Начинаем осваивать ARM-CM3 от Миландр К1986ВЕ92. Сразу возник вопрос. Можно-ли, используя лишь SWD, высвободить остальные ножки JTAG для собственных нужд (так же как это было в STM32)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 3 июня, 2014 Опубликовано 3 июня, 2014 (изменено) · Жалоба Скорее всего можно, только надо библиотеки подправить. Там библиотека сделана таким образом, что при записи в порт маскирует все ножки JTAG. Ну при экспериментах будте готовы, что придется стирать МК через UART. При прямой записи в порт с JTAG интерфейсом есть шанс завесить отладку. Местная грабля. Изменено 3 июня, 2014 пользователем редактор Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 3 июня, 2014 Опубликовано 3 июня, 2014 · Жалоба Скорее всего можно, только надо библиотеки подправить. Там библиотека сделана таким образом, что при записи в порт маскирует все ножки JTAG. Да, это я заметил. И подумал про себя что за.... Ну при экспериментах будте готовы, что придется стирать МК через UART. При прямой записи в порт с JTAG интерфейсом есть шанс завесить отладку. Местная грабля. Нет слов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rus61 0 4 июня, 2014 Опубликовано 4 июня, 2014 · Жалоба Начинаем осваивать ARM-CM3 от Миландр К1986ВЕ92. Сразу возник вопрос. Можно-ли, используя лишь SWD, высвободить остальные ножки JTAG для собственных нужд (так же как это было в STM32)? Можно, не каких аппаратных проблем нет. Понадобятся только SWDIO (TMS), SWCLK (TCK) и GND. Если вдруг программой переназначите пины или остановите тактирование МК, то переведите МК в режим роботы с внешней ROM (с полным обесточиванием) и спокойно стирайте контроллер через SWD. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 4 июня, 2014 Опубликовано 4 июня, 2014 · Жалоба Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 23 июля, 2014 Опубликовано 23 июля, 2014 · Жалоба Выяснился один интересный момент. Если обращаться к порту (к не SWD пинам) в котором находятся линии SWD через BITBAND, то SWD отваливается, с JTAG аналогично. Об этом миландр не пишет в своих ератах, а стоило бы... Поэтому пришлось делать костыль и работать с этим портом лишь через его регистры. Ну и ещё из того что изумило или озадачило: 1) Нет возможности защитить от чтения Flash (крест на коммерческих применениях). 2) Нет события UART TXC, соответственно с RS485 танцы с бубном. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rus61 0 23 июля, 2014 Опубликовано 23 июля, 2014 · Жалоба Выяснился один интересный момент. Если обращаться к порту (к не SWD пинам) в котором находятся линии SWD через BITBAND, то SWD отваливается, с JTAG аналогично. Об этом миландр не пишет в своих ератах, а стоило бы... Поэтому пришлось делать костыль и работать с этим портом лишь через его регистры. ... Проблемы возникают при "read modify write" из за того что Вы пишите в JTAG пины "мусор" который вычитали во время стадии "read". Если перед "write" наложить маску на эти биты (обнулить), то проблем не будит. Как пример посмотрите SPL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 23 июля, 2014 Опубликовано 23 июля, 2014 · Жалоба У меня и так нет проблем. Я же говорю, что при использовании BITBAND происходит не очевидный "read modify write" всего порта, хотя обращение идёт к биту напрямую. А при явной записи в регистры с маскированием ясно дело что всё нормально. Я про этот костыль и говорю - он спасает. На мой взгляд BITBAND на то и придумывался чтобы избежать подобных проблем. Но в миландре ИМХО его (BITBAND) кривовато реализовали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rus61 0 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба У меня и так нет проблем. Я же говорю, что при использовании BITBAND происходит не очевидный "read modify write" всего порта, хотя обращение идёт к биту напрямую. А при явной записи в регистры с маскированием ясно дело что всё нормально. Я про этот костыль и говорю - он спасает. На мой взгляд BITBAND на то и придумывался чтобы избежать подобных проблем. Но в миландре ИМХО его (BITBAND) кривовато реализовали. Да проглядел, что речь о Bit-band, но смысл от этого не изменился. По факту при записи в Bit-band регион ядро делает последовательность "read modify write", которая является атомарной (S-bus блокируется до окончания записи, но само ядро может продолжать выполнять команды если не требуется доступа к S-bus). Механизм Bit-band реализован не Миландром, а ARM и описан в TRM на Cortex-M3. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryM 0 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба Да проглядел, что речь о 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," Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба Бред. "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. (И я не совсем понимаю, как Миландр мог накосячить в бит-банде, если это функция ядра.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба Значит, bitband представляется программной атомарной операцией, но это не означает аппаратного чтения-модификации-записи только одного бита. Похоже, нигде, кроме JTAG, это не проявится. А для управления битами портов bitband не нужен. Хватает средств и без него. P.S. Можно прийти к выводу, что bitband имеет смысл использовать только для тех битов, которые устанавливаются (сбрасываются) программно - для битовых переменных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryM 0 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба А для управления битами портов 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. Другой вопрос, использовать или нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба Не думаю, иначе зачем ... Другой вопрос, использовать или нет. Да, вы правы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 24 июля, 2014 Опубликовано 24 июля, 2014 · Жалоба я так понимаю основное назначение бит-банда это ускорение операций типа REG |= VAL; REG &= ~VAL; замена чтение, изменения, записи (3 операций) на одну битбандвую... Я не прав? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться