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

Добрый день.

 

Возник вопрос по BSL в MSP430F1612. Точнее по схемотехнике подключения.

Есть контроллер, разъем JTAG и FT232RL. Хочется иметь возможность прошивать как по JTAG так и по BSL, причем так, чтоб не использовать отдельный разъем для BSL (да и место не очень позволяет). Поэтому хочется для BSL использовать тот же разъем, что и для обычного USART, то есть USB разъем+FT232RL. Выглядеть это будет примерно так: контакты JTAG подсоединяются к MSP как обычно; сигналы RXD и TXD от FT232RL идут на UART и на ноги 13 и 22; программно ноги 13 и 22 никак не используются; сигналы DTR RTS от FT232RL идут на соответствующие выводы JTAG MSP.

Волнует следующий момент. Я не совсем понимаю что происходит с сигналами DTR и RTS при использовании обычного UART, то есть при нормальной работе контроллера (не программировании). Не получится ли так, что при передаче данных через UART эти сигналы как то будут меняться и введут MSP в режим BSL, или вообще reset произойдет, ведь DTR на reset идет?? Достаточно ли поставить джампера на линии DTR<->RSR/NMI и RTS<->TCK и перемыкать их во время программирования. А можно только один какой то джампер или 2 обязательно? Какие еще варианты решения проблеммы?

 

Спасибо.

 

ЗЫ Я вот тут еще в один момент не врубаюсь: отлаживаться то через BSL можно? А в ИАРЕ?

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


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

Добрый день.

 

Возник вопрос по BSL в MSP430F1612. Точнее по схемотехнике подключения.

Есть контроллер, разъем JTAG и FT232RL. Хочется иметь возможность прошивать как по JTAG так и по BSL, причем так, чтоб не использовать отдельный разъем для BSL (да и место не очень позволяет). Поэтому хочется для BSL использовать тот же разъем, что и для обычного USART, то есть USB разъем+FT232RL. Выглядеть это будет примерно так: контакты JTAG подсоединяются к MSP как обычно; сигналы RXD и TXD от FT232RL идут на UART и на ноги 13 и 22; программно ноги 13 и 22 никак не используются; сигналы DTR RTS от FT232RL идут на соответствующие выводы JTAG MSP.

Волнует следующий момент. Я не совсем понимаю что происходит с сигналами DTR и RTS при использовании обычного UART, то есть при нормальной работе контроллера (не программировании). Не получится ли так, что при передаче данных через UART эти сигналы как то будут меняться и введут MSP в режим BSL, или вообще reset произойдет, ведь DTR на reset идет?? Достаточно ли поставить джампера на линии DTR<->RSR/NMI и RTS<->TCK и перемыкать их во время программирования. А можно только один какой то джампер или 2 обязательно? Какие еще варианты решения проблеммы?

Спасибо.

ЗЫ Я вот тут еще в один момент не врубаюсь: отлаживаться то через BSL можно? А в ИАРЕ?

 

Так "обычный UART" или USB-UART ? Это все ж разные вещи. Если "обычный", то DTR типично активен, и его логично заводить на "сброс". При закрытии порта он будет деактивироваться, и устройство будет жестко сброшено. RTS - как закажешь. Не будет аппаратного хендшейка - будет активным. Иначе будет дергать, но это не страшно, поскольку сброс не дергается. В случае же FT232R - вообще как установишь конфигурацию через mprog, так и будет. Можно даже не назначать линии как DTR и RTS. А отлаживаться - как ? BSL это всего лишь программа. Ну да, сбросив, можно поглядеть, где там что в памяти осталось. Больше, IMHO, ничего...

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


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

BSL это программа, находящаяся в ROM микроконтроллера. Она вызывается вместо перехода по вектору сброса при определенной комбинации сигналов RST и TCK. См. Figure 3, документа slaa089. При вызове этой программы выводы P1.1 и P2.2 используются как сигналы программного UARTа. Отлаживаться через BSL не получится. Использовать BSL в готовом устройстве имеет смысл лишь в том случае, если предполагается делать upgrade firmware в серийном устройстве у которого будет пережжен fuse JTAG, а в программе не предусмотрено своего собственного загрузчика firmware. В других случаях (особенно при наличии в системе UART) использовать BSL по-моему нецелесообразно. Тем более не стоит совмещать выводы, используемые BSL, со штатным UART. Никогда заранее не известно как будет использоваться этот UART пользователем и будет включена или выключена аппаратная поддержка контроля потока. Так что, если вам очень хочется совместить UART и BSL, то обязательно поставьте джампера, которыми сигналы RST и TCK будут отключаться от UART.

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


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

Спасибо, я получил ответ на вопрос. По поводу использования BSL. У меня не предполагается в конечном варианте наличия JTAG разъема, для него просто места нет. Поэтому будет upgrade firmware через загрузчик. Но мне кажется надо предусмотреть еще гарантированный вариант загрузки, я имею ввиду, что загрузчик тоже слететь может (было такое) и что тогда?? Поэтому BSL будет просто на всякий случай и разъем для него ставить не хочу (тогда уж лучше JTAG оставить). Спасибо, поставлю 2 джампера.

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


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

Если не ставить JTAG, то как пережигать fuse?

А если есть место под JTAG, можно использовать совмещенный JTAG+BSL. Например такой, как на рисунке.

post-21999-1171806821_thumb.jpg

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


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

А мне и не надо fuse пережигать, я не борюсь за секретность ))

 

Меня больше интересовало совмещение BSL и UART, а не BSL + JTAG.

 

Спасибо.

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


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

Спасибо, я получил ответ на вопрос. По поводу использования BSL. У меня не предполагается в конечном варианте наличия JTAG разъема, для него просто места нет. Поэтому будет upgrade firmware через загрузчик. Но мне кажется надо предусмотреть еще гарантированный вариант загрузки, я имею ввиду, что загрузчик тоже слететь может (было такое) и что тогда?? Поэтому BSL будет просто на всякий случай и разъем для него ставить не хочу (тогда уж лучше JTAG оставить). Спасибо, поставлю 2 джампера.

Кстати, когда есть место, именно _ставить_ разъем вообще не обязательно (если есть противопоказания в виде стоимости и/или технологичности). Мы уже давно практикуем использование ножевых печатных разъемов, с простым лужением. Если их при производстве не зальют лаком - очень удобно...

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


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

Уже много раз писал, что для достаточно сложного устройства BSL удобнее JTAG.

В своих устройствах на MSP430 (млм SAM7) я развожу и JTAG и BSL (SAM-BA). Реально JTAG используется на первом этапе работы, когда отлаживается библиотека работы с периферией. Когда дело доходит до алгоритма, в дело вступает UART на пинах BSL (DBGU). Использовать printf для отладки СЛОЖНОГО алгоритма более удобно, чем JTAG. Может быть и существуют продвинутые отладчики, которые имеют нужную функциональность для отладки сложных алгоритмов, но мне они не попадались.

Вдобавок мне в устройстве нужно шить не только сам микроконтроллер, но и внешнюю флеш. При использовании BSL это можно делать через него. А как прошить внешнюю флеш через JTAG?

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


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

Когда дело доходит до алгоритма, в дело вступает UART на пинах BSL (DBGU).

То есть вы совмешаете UART и BSL на одном разъеме???

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


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

Вдобавок мне в устройстве нужно шить не только сам микроконтроллер, но и внешнюю флеш. При использовании BSL это можно делать через него. А как прошить внешнюю флеш через JTAG?

Точно также как и через любой другой коммуникационный интерфейс. Загружаете в RAM программу-прошивальщик и запускаете ее на выполнение. Там же в ОЗУ выделяете буфер и переменную с семафорами. "Прошивальщик" крутится в непрерывном цикле, опрашивая семафоры готовности буфера. Подгружаете в буфер новые данные и модифицируете семафоры через тот же JTAG.

Примерно так же как я описал организована загрузка Flash через JTAG в Филипсовых ARM серии LPC2000.

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


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

То есть вы совмешаете UART и BSL на одном разъеме???

Для MSP430 - да; имхо для LPC2xxx используется UART0+JTAG; имхо для ARM от Atmel используется JTAG+USB (есть загрузчик прямо с USB).

К тем, кто использует для ARM7 совмещенный разъем BSL+JTAG, хочу обратиться с просьбой предложить свой вариант пинаута.

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


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

То есть вы совмешаете UART и BSL на одном разъеме???

Для MSP430 - да;

так а вы ставите джампера на линии DTR<->RSR/NMI и RTS<->TCK??? Или как решаете потенциальную проблемму описанную мной в первом посте?

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


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

Точно также как и через любой другой коммуникационный интерфейс. Загружаете в RAM программу-прошивальщик и запускаете ее на выполнение. Там же в ОЗУ выделяете буфер и переменную с семафорами. "Прошивальщик" крутится в непрерывном цикле, опрашивая семафоры готовности буфера. Подгружаете в буфер новые данные и модифицируете семафоры через тот же JTAG.

Ну наверное так тоже можно. Как и перректальное удаление гланд. И оклейка комнаты обоями через замочную скважину. Однако если есть более простые и эффективные методы, то лучше использовать их.

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


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

так а вы ставите джампера на линии DTR<->RSR/NMI и RTS<->TCK??? Или как решаете потенциальную проблемму описанную мной в первом посте?

Извините, тут я напутал. UART+BSL не совмещаю.

 

Я ставлю разъем JTAG+BSL, я его приводил в одном из постов. Уарт с ним не объединяю, ибо раз есть совмещенный - удобно программировать через него; все равно нужно последовательность RST/TCK давать, и тут много ног общих у JTAG и BSL (В отличие от тех же LPC2xxx). В таком случае и джампера ни к чему.

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


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

так а вы ставите джампера на линии DTR<->RSR/NMI и RTS<->TCK??? Или как решаете потенциальную проблемму описанную мной в первом посте?

Извините, тут я напутал. UART+BSL не совмещаю.

 

Я ставлю разъем JTAG+BSL, я его приводил в одном из постов. Уарт с ним не объединяю, ибо раз есть совмещенный - удобно программировать через него; все равно нужно последовательность RST/TCK давать, и тут много ног общих у JTAG и BSL (В отличие от тех же LPC2xxx). В таком случае и джампера ни к чему.

Но ведь тогда надо свой кабель делать ComPort<->(JTAG+BSL)??? ТО есть на одном конце разъем для RS232 а на другом под разъем который вы привели выше (ну то есть обычный JTAG разъем). Или я подтормаживаю?

На самом деле мне такой вариант не подходит. Ведь у меня цель была - избавиться от разъема JTAG, а для программирования пользоваться разъемом UART (ну + микросхемой USB<->UART). используя механизм BSL.

 

ОК Я все понял. Всем большое спасибо.

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


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

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

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

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

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

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

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

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

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

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