Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: И снова BSL
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
jorikdima
Добрый день.

Возник вопрос по 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 можно? А в ИАРЕ?
rx3apf
Цитата(jorikdima @ Feb 17 2007, 23:42) *
Добрый день.

Возник вопрос по 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, ничего...
rezident
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.
jorikdima
Спасибо, я получил ответ на вопрос. По поводу использования BSL. У меня не предполагается в конечном варианте наличия JTAG разъема, для него просто места нет. Поэтому будет upgrade firmware через загрузчик. Но мне кажется надо предусмотреть еще гарантированный вариант загрузки, я имею ввиду, что загрузчик тоже слететь может (было такое) и что тогда?? Поэтому BSL будет просто на всякий случай и разъем для него ставить не хочу (тогда уж лучше JTAG оставить). Спасибо, поставлю 2 джампера.
HARMHARM
Если не ставить JTAG, то как пережигать fuse?
А если есть место под JTAG, можно использовать совмещенный JTAG+BSL. Например такой, как на рисунке.
jorikdima
А мне и не надо fuse пережигать, я не борюсь за секретность ))

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

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

Кстати, когда есть место, именно _ставить_ разъем вообще не обязательно (если есть противопоказания в виде стоимости и/или технологичности). Мы уже давно практикуем использование ножевых печатных разъемов, с простым лужением. Если их при производстве не зальют лаком - очень удобно...
vmp
Уже много раз писал, что для достаточно сложного устройства BSL удобнее JTAG.
В своих устройствах на MSP430 (млм SAM7) я развожу и JTAG и BSL (SAM-BA). Реально JTAG используется на первом этапе работы, когда отлаживается библиотека работы с периферией. Когда дело доходит до алгоритма, в дело вступает UART на пинах BSL (DBGU). Использовать printf для отладки СЛОЖНОГО алгоритма более удобно, чем JTAG. Может быть и существуют продвинутые отладчики, которые имеют нужную функциональность для отладки сложных алгоритмов, но мне они не попадались.
Вдобавок мне в устройстве нужно шить не только сам микроконтроллер, но и внешнюю флеш. При использовании BSL это можно делать через него. А как прошить внешнюю флеш через JTAG?
jorikdima
Цитата(vmp @ Feb 19 2007, 11:09) *
Когда дело доходит до алгоритма, в дело вступает UART на пинах BSL (DBGU).

То есть вы совмешаете UART и BSL на одном разъеме???
rezident
Цитата(vmp @ Feb 19 2007, 13:09) *
Вдобавок мне в устройстве нужно шить не только сам микроконтроллер, но и внешнюю флеш. При использовании BSL это можно делать через него. А как прошить внешнюю флеш через JTAG?

Точно также как и через любой другой коммуникационный интерфейс. Загружаете в RAM программу-прошивальщик и запускаете ее на выполнение. Там же в ОЗУ выделяете буфер и переменную с семафорами. "Прошивальщик" крутится в непрерывном цикле, опрашивая семафоры готовности буфера. Подгружаете в буфер новые данные и модифицируете семафоры через тот же JTAG.
Примерно так же как я описал организована загрузка Flash через JTAG в Филипсовых ARM серии LPC2000.
HARMHARM
Цитата(jorikdima @ Feb 19 2007, 10:18) *
То есть вы совмешаете UART и BSL на одном разъеме???

Для MSP430 - да; имхо для LPC2xxx используется UART0+JTAG; имхо для ARM от Atmel используется JTAG+USB (есть загрузчик прямо с USB).
К тем, кто использует для ARM7 совмещенный разъем BSL+JTAG, хочу обратиться с просьбой предложить свой вариант пинаута.
jorikdima
Цитата(HARMHARM @ Feb 19 2007, 12:22) *
Цитата(jorikdima @ Feb 19 2007, 10:18) *

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

Для MSP430 - да;

так а вы ставите джампера на линии DTR<->RSR/NMI и RTS<->TCK??? Или как решаете потенциальную проблемму описанную мной в первом посте?
vmp
Цитата(rezident @ Feb 19 2007, 12:06) *
Точно также как и через любой другой коммуникационный интерфейс. Загружаете в RAM программу-прошивальщик и запускаете ее на выполнение. Там же в ОЗУ выделяете буфер и переменную с семафорами. "Прошивальщик" крутится в непрерывном цикле, опрашивая семафоры готовности буфера. Подгружаете в буфер новые данные и модифицируете семафоры через тот же JTAG.

Ну наверное так тоже можно. Как и перректальное удаление гланд. И оклейка комнаты обоями через замочную скважину. Однако если есть более простые и эффективные методы, то лучше использовать их.
HARMHARM
Цитата(jorikdima @ Feb 19 2007, 11:52) *
так а вы ставите джампера на линии DTR<->RSR/NMI и RTS<->TCK??? Или как решаете потенциальную проблемму описанную мной в первом посте?

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

Я ставлю разъем JTAG+BSL, я его приводил в одном из постов. Уарт с ним не объединяю, ибо раз есть совмещенный - удобно программировать через него; все равно нужно последовательность RST/TCK давать, и тут много ног общих у JTAG и BSL (В отличие от тех же LPC2xxx). В таком случае и джампера ни к чему.
jorikdima
Цитата(HARMHARM @ Feb 19 2007, 14:31) *
Цитата(jorikdima @ Feb 19 2007, 11:52) *

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

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

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

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

ОК Я все понял. Всем большое спасибо.
HARMHARM
Цитата(jorikdima @ Feb 19 2007, 14:15) *
Но ведь тогда надо свой кабель делать ComPort<->(JTAG+BSL)??? ТО есть на одном конце разъем для RS232 а на другом под разъем который вы привели выше (ну то есть обычный JTAG разъем). Или я подтормаживаю?
На самом деле мне такой вариант не подходит. Ведь у меня цель была - избавиться от разъема JTAG, а для программирования пользоваться разъемом UART (ну + микросхемой USB<->UART). используя механизм BSL.

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

Действительно, есть маленькая платка с 74HC14 и дюжиной дискретов. На каждой плате это все ставить лень и дорого.
А на микросхеме USB<->UART есть какие-нибудь управляющие выводы кроме стандартных цепей RS232? Или можно поставить джампер на RST и хватит, наверное...
akostin
Цитата(jorikdima @ Feb 18 2007, 02:42) *
Какие еще варианты решения проблеммы?

Есть одна идея, но пока не проверял.
FT232R подключается и BSL, при этом TEST (TCK) подключается без джамперов к соответствующему выходу FT232R, а RESET - через инвертирующий транзистор. Последнее исключает сброс MSP при отключении питания FT232R, которая, по идее, питается от порта.
Для прошивки через BSL использется прога Курта или любая другая, в которой есть возможность поставить инверсию сигнала RESET.
Для работы UART-USB в пользовательском режиме пишется своя прога на PC, где жестко задаются уровни RTS и DTR.

ЗЫ
Может что-то где-то напутал, но идея, думаю, понятна.

Покритикуйте идейку.
Может у кого-то есть возможность в ближайшее время собрать такую схемку и проверить...

От модератора.
Из сообщения удалено излишнее цитирование.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.