MCUXpresso IDE

Логинимся на сайте nxp.com и качаем установщик среды (на данный момент MCUXpressoIDE_11.2.1_4149.exe).

MCUXpresso IDE v11.2.1 [Build 4149] [2020-10-07]
(c) Copyright 2006-2020 NXP

Установка проходит просто. Далее похоже надо установить еще SDK - Download and Install SDKs . Но это только для типовых бордов. А у нас просто есть старая плата от кассового аппарата Атол 55Ф с LPC1768 и JTAG/SWD разъемом для подключения например Jlink программатора.

Удивляемся , что в списке бордов нет вариантов LPC17 вообще... LPC только с 5ххх присутствуют...

Но тут же почти сразу натыкаемся на упоминание , что поддержка LPc17xx где-то есть :

MCUXpresso IDE also comes with Preinstalled part support for many older LPC devices, including the following families: 
• LPC11xx, LPC12xx, LPC13xx, LPC15xx, LPC17xx, LPC18xx, LPC40xx and LPC43xx

SDK Builder он же MCUXpresso SDK вроде нам не поможет с LPC17XX . Но вот есть для нашего старого контроллера LPC17XX на сайте LPCOpen какие-то примеры (смотрите LPC1700 Series в разделе сайта LPCOpen Libraries and Examples).

Качаем примеры с сайта nxp.com lpcopen_2_10_lpcxpresso_nxp_lpcxpresso_1769.zip , распаковываем и далее в MCUXpresso IDE просто открываем нужный проект (к примеру periph_i2c).

фотка 1

Кстати поддержка lpc17xx вроде появилась каким-то образом в результате Import Projects from File system нашего проекта.

фотка 2

Похоже проекты для LPC 17xx делались для среды LPCXpresso , которая платная и похоже уже не поддерживается. Далее по-видимому кто-то опять кого-то перекупил и появилась бесплатная среда MCUExpresso , а поддержка старых контроллеров типа LPC17xx оставили в виде LPC Open (набор проектов ) для MCUExpresso.

Далее пробуем собрать проект periph_i2c ... Убираем ругань . Добавляем пути к board.h и chip.h , они общие для всех примеров и поэтому находятся в одном месте выше нашего проекта по дереву каталогов.

Далее разбираемся с :

cannot find -llpc_board_nxp_lpcxpresso_1769

И тут приходит осознание ,что все гораздо проще - надо добавлять в проект не один из проектов, а все проекты из каталога lpcopen_2_10_lpcxpresso_nxp_lpcxpresso_1769, так как это как-бы дерево проектов со зависимостями внутри дерева. И тогда тот же проект например periph_i2c собирается без ошибок!

Теперь надо как-то прошить через JLink программатор , начать отладку , трассировку SWO и т.д.
Для это создаем в Run/Debug configurations/ раздел GDB Server Interface Debugging новый объект , в котором выбираем USB , SWD и т.д.

фотка 3

Далее запускаем отладку , наша плата прошивается и сразу прекрасно влетает в отладку:

фотка 4

Теперь надо как-то разобраться с трассировкой SWO.

Для начала через утилиту JLink SWOViewer определяем частоты , на которых идут данные по линии SWO. Эта утилита уже не раз выручала.

фотка 5

Далее запускаем прошивку/отладку правой кнопкой по проекту и выбираем Segger J-Link probes:

фотка 6

Далее используем эти частоты (CPU Clock 96MHz и SWO Clock 6000 KHz ). Запускаем SWO и наблюдаем интересную картину:

фотка 7

Такое ощущение , что чего-то не настроили до конца правильно, а так swo данные посыпались бы в окно.

Потом в поисках решения проблемы натыкаемся на сайте nxp на такое вот печальное сообщение :


Guide SWO for MCUXpresso IDE
NOTE: MCUX support SWO for LPC-Link2 debug probe only.

То есть получается , что SWO под MCUXpresso работает только через LPC-Link 2 программатор?!...

Логика такова : по SWO линии идут данные от изучаемого контроллера LPC1768.Почему MCUXpresso IDE не хочет выводить в консоль SWO. А Keil может. MCUXpresso IDE не может (или не хочет?)... Надо разобраться...

Кстати - вспоминаем некоторые полезные настройки компиляции , устанавливаем уровень компиляции с поддержкой отладки:

фотка 8

Уровень отладки максимальный 3 :

фотка 9

Но к счастью оказывается , что на практике трассировка SWO прекрасно идет и через JLink программатор .

фотка 10

LPC-Link 2

Поскольку на сайте nxp сказано , что только LPC-Link 2 поддерживает трассировку SWO под MCUxpesso (а LPC-Link 2 у нас случайно давно валяется), то подключаем к нашему LPC1768 LPC-Link 2. Пришлось сделать переходник 0 .8мм на 2.54 JTAG.

В результате прошивка и отладка пошла, и трассировка тоже идет нормально.

А это наш макет , плата из старого хлама от кассовых аппаратов FPrint-55K:

фотка 11

Замечание : питание все таки надо подавать на контроллер штатно отдельно от JLink.

Выводы :

Чтобы программировать контроллеры LPC понадобится среда MCUXpresso IDE (похоже реально бесплатная) , JLink программатор (800р.) и все ... , только ваше время * желание.

Респект конторе NXP ! Странно, очень странно, но популярность LPC контроллеров в интернет сообществах , социальных сетях и т.д. намного меньше (ИМХО) по сравнению с например STM32.

Как доказательство : поисковик Яндекс выдает наш сайт на первых местах по запросам LPC1768, lpc программирование и т.д. И это при том, что вся РФ завалена железками на LPC контроллерах...