|
|
  |
debug console over AVR-ISP, Поток отладки направляем на ISP порт |
|
|
|
Feb 21 2010, 10:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(ReAl @ Feb 21 2010, 13:12)  Если можно сделат soft-spi, то можно сделать и soft-uart. Причём если устраивает полста байт в секунду, то ~50*10=~500 -> 480бод или около софт-уарт делается легко при любой загруженности контроллера где-то в дебрях таймер-тикового прерывания. При этом практически не нагружая контроллер не только "в среднем", но и "в пике". soft uart плох по той причине что он асинхронный, медленный, требует доп периферии, таймера как минимум =(. а так тоже применимо. Цитата А хвостик с 74hc14 или max232 у меня есть и есть шлейф "для байт-бластера" с тремя колодками тоже - средняя ставится именно на такой хвостик и работает с выведенными на pin7,8 ногами. Это для тех плат, где SPI занят в системе, пара свободных ног осталась а единственный UART занят (или свободен - тогда выведен он). как минус - лишние приблуды. одного программатора должно быть достаточно. потом всё это дело надо передёргивать... Цитата По SPI - на мой взгляд, если хочется использовать аппаратный SPI как отладочную консоль между обращениями к имеющимся в системе SPI-устройствами, то таки надо своодный выход chip select и имеет смысл подумать о spi-uart-мосте на отдельной платке. Хоть max-каком-то, хоть в программаторе, хоть на специально для этого выделенной mega8/48. на SPI тоже свет колом не сошёлся. Цитата(zltigo @ Feb 21 2010, 13:20)  Если встречное устройство чужое, то тогда софтовые решения конечно не годятся, но аппаратные ввиде одногейтового логического элемента, ( которым, правда, нужно управлять  ) отключающего RX модема на время передачи отладочной информации, будут работать. опять-таки лишние приблуды. всё-таки посмотрите "abd-протокол" - нужно всего 3 сигнальных линии. приактически "никакие" накладные расходы на стороне отлаживаемого контроллера. (не нужны ни таймеры ни прерывания) такой-же минимум на стороне отладчика. нет абсолютно никаких требований на времянки. можно использовать любые свободные GPIO. P.S. немного Offtop: предложенный мной вариант годится не только для AVR но и любого другого котроллера (ARM т пр.) как минимум с тремя GPIO =)
|
|
|
|
|
Feb 21 2010, 11:30
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Petka @ Feb 21 2010, 13:42)  приактически "никакие" накладные расходы на стороне отлаживаемого контроллера. До тех пор, пока нужно делать "практически ничего"  . Как только мне потребуется положить несколько байт зараз, то у железного UART может спасать FIFO, а у ногомахательных интерфейсов появятся накладные расходы, причем уже не "никакие"  . Нет, я не утверждаю, что не надо использовать ногомахание никогда, просто это крайняя мера, а не штатное решение.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 21 2010, 11:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(zltigo @ Feb 21 2010, 14:30)  До тех пор, пока нужно делать "практически ничего"  . Как только мне потребуется положить несколько байт зараз, то у железного UART может спасать FIFO, а у ногомахательных интерфейсов появятся накладные расходы, причем уже не "никакие"  . Нет, я не утверждаю, что не надо использовать ногомахание никогда, просто это крайняя мера, а не штатное решение. FIFO может быть как у железных решений, так и у софтверных, таких как abd-протокол. abd-протокол стоит воспринимать примерно как "uart+аппаратный контроль потока". только полностью синхронный и всего 3 линии.
|
|
|
|
|
Feb 21 2010, 12:48
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Petka @ Feb 21 2010, 14:47)  так и у софтверных, таких как abd-протокол. Могут. Я отрицал этот факт? Я только сказал, повторяю "..а у ногомахательных интерфейсов появятся накладные расходы, причем уже не "никакие" " P.S. А у 'abd' второй клок лишний - раз линия данных одна, то и захват линии клоков можно реализовать. Будет интерфейс 'a/сb/d'
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 21 2010, 21:36
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Petka @ Feb 22 2010, 00:10)  вторая линия осуществляет квитирование. за счёт этого осуществляется flow control. flow control при необходимости обеспечивается тем, что тактировку осуществяет приемная сторона. Или та-же приемная сторона давит управление клоком. Цитата Больше на abd похож I2C. но всё равно это другое. Другое, отличающееся наличием аппаратной избыточности в виде дополнительного провода. При этом кроме I2C есть еще массовые решения на 2x сигнальных проводах - та-же PS/2 клавиатура. Впрочем, можно и об однопроводных поговорить  - тоже массовых прототипов хватает. Если рассматривать интерфейс заточенный под отладочный терминал (допустима ассиметрия в том числе и по скорости и flow control), то софтовая реализация однопроводного не представляется сложной.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 22 2010, 07:50
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 7-05-06
Пользователь №: 16 862

|
Цитата(demiurg_spb @ Feb 20 2010, 21:34)  Хочется решить раз и навсегда проблему отладочной консоли для семейства AVR. Есть подозрения, что "раз и навсегда" проблему программирования и отладки по одним и тем же проводам похоже решил решить  сам Атмел. В новых Хмегах ведь PDI (Program and debug interface). Правда есть большие сомнения, что с его помощью получится сделать консоль. Я сейчас отлаживаюсь по такому принципу: Цитата(zltigo @ Feb 21 2010, 00:22)  - заливаете один раз загрузчик и дальше работаете через UART/RS232 и для заливки, и для отладки. Но глобально это проблему "абсолютной минимизации ног" не решает. Ноги PDI с другими интерфейсами не совмещены, а бутлоадер ведь надо как-то сначала залить...
Сообщение отредактировал MDD - Feb 22 2010, 07:57
|
|
|
|
|
Feb 22 2010, 09:08
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(zltigo @ Feb 22 2010, 00:36)  flow control при необходимости обеспечивается тем, что тактировку осуществяет приемная сторона. Или та-же приемная сторона давит управление клоком. abd - двунаправленный. приёмных сторон две! Цитата Другое, отличающееся наличием аппаратной избыточности в виде дополнительного провода. При этом кроме I2C есть еще массовые решения на 2x сигнальных проводах - та-же PS/2 клавиатура. i2c - имет существенный минус для програмных реализаций - слэйв должен успевать за синхросигналом. т.е. передача не может быть приостановлена "посередине" транзакции. аналогично и с PS/2. Цитата Впрочем, можно и об однопроводных поговорить  - тоже массовых прототипов хватает. однопроводные априори имеют треования к времянкам. т.е. нужен таймер или калиброваные циклы. если выскочило прерывание - прощай времянки... Цитата Если рассматривать интерфейс заточенный под отладочный терминал (допустима ассиметрия в том числе и по скорости и flow control), то софтовая реализация однопроводного не представляется сложной. вот только зачем? какой профит от этого? один провод меньше трёх. Но тема топика "over ISP" т.е. 3 провода уже есть. Я преложил и реализовал своё видение этого протокола на 3х линиях. причём эта реализация бесплатна при использовании программатора "by Petka" и прочих микроконтроллерных COM программаторов. + программаторы на "bitbang". т.е. теоретически все поддерживаемые avreal.
|
|
|
|
|
Feb 22 2010, 16:50
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(Petka @ Feb 22 2010, 12:08)  abd - двунаправленный. приёмных сторон две! I2C тоже две. Цитата(Petka @ Feb 22 2010, 12:08)  i2c - имет существенный минус для програмных реализаций - слэйв должен успевать за синхросигналом. т.е. передача не может быть приостановлена "посередине" транзакции. Вы ошибаетесь. Приостановить слейв может - достаточно "придержать" SCL.
|
|
|
|
|
Feb 22 2010, 17:08
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(MDD @ Feb 22 2010, 10:50)  бутлоадер ведь надо как-то сначала залить... Залить, как обычно, потом эти пины использовать для других целей. Цитата(Petka @ Feb 22 2010, 12:08)  abd - двунаправленный. приёмных сторон две! Я тоже про двунаправленный говорю. Цитата однопроводные априори имеют треования к времянкам. т.е. нужен таймер или калиброваные циклы. если выскочило прерывание - прощай времянки... Отнюдь. Простейший пример для затравки - '0' это импульс минимальной длительности соответствующий атомарной записи 0->1 - вещь вполне стабильная и конфигурируемая в терминале. '1' это импульс любой длительности, но гарантированно длиннее 'нулевого'. Цитата вот только зачем? какой профит от этого? один провод меньше трёх. Но тема топика "over ISP" т.е. 3 провода уже есть. А какого черта их резервировать под отладчик??? Я их почти всегда после программирования использую для других нужд. Цитата причём эта реализация бесплатна при использовании программатора "by Petka" и прочих микроконтроллерных COM программаторов. + программаторы на "bitbang". т.е. теоретически все поддерживаемые avreal. Повторяю, плата это эти три ноги НАВСЕГДА отданные программатору "by Petka" и прочим.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 22 2010, 18:41
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 7-05-06
Пользователь №: 16 862

|
Цитата(zltigo @ Feb 22 2010, 19:08)  Залить, как обычно, потом эти пины использовать для других целей. Я не зря оговорился, что речь идет о Хмега и PDI. У ножек PDI нет альтернативных функций (если не считать RESET). При этом есть подозрения, что Атмел приготовил этот интерфейс на смену старому ISP. Наверняка новые АВРы будут именно с ним. Из названия ясно, что PDI позволяет отлаживаться. Как я понимаю по тому же принципу, что и JTAG. Так что здесь задача стоит наоборот - пристроить к "пропащим" ножкам консоль. Я в JTAGах не силен. Можно ли с его помощью организовать что-то типа такого: контроллер складывает информацию в некий буфер, а РС через JTAG ее "прозрачно" забирает? Чтобы без остановки процессора?
|
|
|
|
|
Feb 22 2010, 19:02
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(MDD @ Feb 22 2010, 21:41)  Я не зря оговорился, что речь идет о Хмега и PDI. А здесь речь как раз НЕ идет об этом. Цитата Я в JTAGах не силен. Можно ли с его помощью организовать что-то типа такого: контроллер складывает информацию в некий буфер, а РС через JTAG ее "прозрачно" забирает? Чтобы без остановки процессора? Да как угодно делается и так и, просто, задействуется брейкпойнт на выводе байта, нем смахивается информация и на автомате продолжается. И отдельные каналы встречаются. Посему если речь идет ОБ ОТЛАДОЧНЫХ интерфейсах и ОТЛАДЧИКАХ, то с эмуляция консоли вполне обыденное дело.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 22 2010, 21:54
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(Qwertty @ Feb 22 2010, 19:50)  Вы ошибаетесь. Приостановить слейв может - достаточно "придержать" SCL. Отнюдь! Слэйв может просто не успеть "придержать" SCL. именно по этой причине есть ограничения на скорость передачи в I2C. (10, 100, 400, 3400кбит/с). По этой-же причине софт-реализация Слэйва I2C сложнее Мастера. Цитата(zltigo @ Feb 22 2010, 20:08)  Я тоже про двунаправленный говорю. видимо мы говорим о разном. я говорил про полный двунаправленный flow control. как я писал выше при софтовой реализации слэйв i2c если не успеет (а как раз тогда и имеет слысл), то не сможет приостановить передачу в удобном для него месте. Цитата Отнюдь. Простейший пример для затравки - '0' это импульс минимальной длительности соответствующий атомарной записи 0->1 - вещь вполне стабильная и конфигурируемая в терминале. '1' это импульс любой длительности, но гарантированно длиннее 'нулевого'. передать импульс легко, согласен. а вот его софтово поймать - сложнее. разжевать почему? Цитата Повторяю, плата это эти три ноги НАВСЕГДА отданные программатору "by Petka" и прочим. В общем случае ДА. Многие вообще через JTAG отлаживаются и ничего, живут как-то =) Альтернатив вообще нет. Разве что через RESET отлаживаться, но это тоже отнюдь не всегда можно.
|
|
|
|
|
Feb 23 2010, 00:07
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(Petka @ Feb 23 2010, 00:54)  Отнюдь! Слэйв может просто не успеть "придержать" SCL. именно по этой причине есть ограничения на скорость передачи в I2C. (10, 100, 400, 3400кбит/с). По этой-же причине софт-реализация Слэйва I2C сложнее Мастера. Успеет. Он просто не сможет опоздать  - достаточно держать SCL в 0 все время, когда слейв занят чем то другим, а не мониторингом шины. Скорость конечно может получиться очень низкой, это зависит от загруженности слейва, но Ваш вариант с возвратом такта имеет точно такой же недостаток.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|