Прикупили CooCoxEx, отпилили довесок c LPC11U14, чтобы поиметь только сам JTAG-адаптер, прикутили к KEIL, загрузили нашу программу в STM32F103RC, запустили отладку, обрадовались и... тут же обломались.
Суть в том, что если есть прерывания реального времени, то при пошаговой отладке все время попадаем в ISR, и отлаживать основной код невозможно. В частности, у нас тикает RTC и делает прерывание каждую секунду. Так вот, попадаем в ее ISR, шагаем по ней, сбрасываем флаг прерывания, видим, что он упал, делаем шаг, еще не выйдя из ISR, и уже видим, что флаг взвелся, и так по кругу. Кроме того, невозможно установить точку останова на лету. Наши ULINK-ME и JLINK работают в этом смысле совершенно беспроблемно.
Кстати, о JLINK от SEGGER. У нас не он сам как отдельный адаптер, который стоит сотни евро, а встроенная реализация на плате DK EFM32 от EnergyMicro, которая стоит около двух сотен евро. Этот встроенный адаптер можно переключить на отладку внешней схемы через 20-и выводной стандартный JTAG разъем на DK. Как известно, JLINK весьма быстр при отладке, что и я подтверждаю (в сравнении с ULINK-ME, по крайней мере). Таким образом, прикупив указаный DK можно поиметь полноценный JLINK за треть/четверть цены...
|