View on GitHub

my-pic-idloc

My IdLoc for pic programs

Моя структура IdLoc для микроконтроллеров Microchip Pic(r)

Является частью инфраструктуры [проектов] и [печатных плат].

Предпосылка

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

Поскольку каждый байт в микроконтроллерах среднего семейства реализован только в нижней половине, то диапазон значений для них составляет 0-15 (или 0-F). И таких байт четыре: 3-0.

Механизм назначения IdLoc

  1. Для новых программ
  2. При изменении любой части номера версии (согласно https://semver.org/, с обязательным назначением тега вида vX.Y.Z в репозитарии)
  3. Для вариантов сборок (например, общие катоды и аноды или варианты для разных марок микроконтроллеров)

Можно было бы разделить четыре байта на части: код программы, мажорный номер, минорный номер, номер патча, но большая часть из них никогда не будет израсходована, а количество программ тогда будет ограничено 16 штуками. Уже сейчас этого недостаточно.

Полное количество бит позволяет хранить 2 полных байта, что составляет 65536 значений.

Номера назначаются по порядку. Это похоже на серийные номера.

Установка IdLoc

Установка IdLoc выполняется с помощью директив #pragma (например, в моем шаблоне):

#pragma config IDLOC3 = 0x0
#pragma config IDLOC2 = 0x0
#pragma config IDLOC1 = 0x0
#pragma config IDLOC0 = 0x0

Чтение IdLoc

Описание полей файла _data/idlocs.yaml

Шаблон для нового релиза

- idloc30: 0-0-0-0
  state: ""
  date: 2000-01-01
  program: Example
  repo: http://example.com
  ver: 0.1.0
  tag: http://example.com/v0.1.0
  chip: PIC16F628A
  build:
  notes:

Поля шаблона:

Перечень IdLoc

В перечне IdLoc для каждого заданы якоря в том же виде, в каком они представлены в поле IdLoc30.

IdLoc 0 0 0 0 зарезервирован в качестве шаблона в файле _data/idlocs.yaml и используется для начальной инициализации IdLoc.

Последний зарегистрированный IdLoc 0-0-0-9

Зеленым в таблице выделены последние версии.

IdLoc30 Статус Дата Программа Версия Контроллер Сборка Примечания
0-0-0-1 2014-09-26 motometer 1.0.0 PIC16F628A
0-0-0-2 0-0-0-4 2014-09-26 clock_8x8 1.0.0 PIC16F886
0-0-0-3 2014-09-26 winding_machine 1.0.0 PIC16F877
0-0-0-4 0-0-0-5 2014-10-29 clock_8x8 1.1.0 PIC16F886
0-0-0-5 0-0-0-8 2014-11-02 clock_8x8 1.2.0 PIC16F886
0-0-0-6 2015-01-17 freq_counter 1.0.1 PIC16F628A
0-0-0-7 0-0-0-8 2015-05-11 temp_sensor_3 1.0.1 PIC16F628A
0-0-0-8 2015-12-20 clock_8x8 1.4.0 PIC16F886 ANODES_MASK=0x0f
0-0-0-9 2020-04-29 capacity-level-meter 0.1.0 PIC16F886