Миграция с PICX на PICY посредством MplabX.

Оглавление

Условия миграции.

Шаг 1. Подготовка исходного проекта.

Шаг 2. Создание нового проекта.

Шаг 3. Приведение инициализации/настроек узлов нового проекта к исходному.

Шаг 4. Замена регистров.

Возможный алгоритм замены регистров.

Дополнение.

Два проекта открытые в одной среде.


Условия миграции.

Шпаргалка создавалась в следующих обстоятельствах:

Полагаю 90% инфы актуальна и в других типах миграций.


Цели.

Многим покажется что в скрипте есть лишние шаги. Их смысл в достижении следующих задач.


Общие для всех шагов принципы.

На любом шаге вызывающем сомнения уместно проверить как компилируется проект в исходом и целевом — не поломались ли связи между объектами.

Шаг 1. Подготовка исходного проекта.

Подготовка состоит в выделении и переносе пользовательских исходников из папки проекта где они обычно размещаются вместе с папками/файлами генерируемыми средой разработки (описание можно глянуть тут руководство: MPLAB X IDE User’s Guide – глава: Saving Project Files), в отдельную папку, находящуюся на одном уровне с проектом.

#ifdef OLD_MCU

[код обращающийся к регистрам. например: userBuf = U1RXB;]

#endif

#ifdef NEW_MCU

..пока пусто..

#endif

#ifdef OLD_MCU

[код ссылающийся на заголовочные файлы SDK исходного MCU. например: #include "mcc_generated_files/file1.h"]

#endif

#ifdef NEW_MCU

..пока пусто..

#endif

Шаг 2. Создание нового проекта.

Таким образом в одной общей папке должны содержаться три:

Шаг 3. Приведение инициализации/настроек узлов нового проекта к исходному.

В случае настройки модулей «вручную» инициализирующие процедуры прописываются обычным порядком в файлах ядра. В этом случае переносим их подглядывая в процедуры инициализации — по сути это та же работа что описанная в следующем шаге, толь ко применяющаяся к процедурам инициализации узлов.

Шаг 4. Замена регистров.

Подбор регистра аналога.


Типы несовпадений регистров.

Возможный алгоритм замены регистров.

Общая последовательность: найти не поддерживаемый регистр (бит) и проработать все биты в регистре. Так уменьшаются затраты мозга на переключение контекста, понижается вероятность забыть что либо, пропустить объекты выпадающие из основного фокуса поиска.

Дополнение.

Два проекта открытые в одной среде.

Изначально я выполнял эту работу в одном экземпляре IDE открыв два проекта. Но пришлось перейти на модель: два проекта — два экземпляра среды, чтобы избежать глюков при смене активного проекта, да и сама эта смена — небольшая, но, трата времени. Также стоит заметить что идентификаторы типа OLD_MCU / NEW_MCU лучше именовать не настолько однообразно, а разбивать на группы: дефайны для GPIO, дефайны для UART, дефайны для включения заголовков, но это можно отложить на второй третий проход, чтобы не запутаться.


v2.