#### <font color = "MediumSeaGreen">Карта памяти stm32</font> **Sector 0: 0x0800 0000 - 0x0800 3FFF (16кБт) Sector 1: 0x0800 4000 - 0x0800 7FFF (16кБт) - Основные настройки (SETTINGS) Sector 2: 0x0800 8000 - 0x0800 BFFF (16кБт) - Системные настройки (SETTINGS_SYS) Sector 3: 0x0800 C000 - 0x0800 FFFF (16кБт) Sector 4: 0x0801 8000 - 0x0801 FFFF (64кБт) Sector 5: 0x0802 0000 - 0x0803 FFFF (128кБт) Sector 6: 0x0804 0000 - 0x0805 FFFF (128кБт) ............................................ Sector 11: 0x080E 0000 - 0x080F FFFF (128кБт)** ```c // Адреса структур настроек #define SYS_SECTOR 0x08008000 #define SYS_CRC_ADDRESS 0x0800BF9C ``` --- #### <font color = "MediumSeaGreen">Карта памяти Artery</font> 0x0800 0000 - 0x0801 FFFF (128кБт) - **IAP** 0x0802 0000 - 0x0802 07FF (2кБт) - **Основные настройки (SETTINGS)** 0x0802 0800 - 0x0802 0FFF (2кБт) - **Системные настройки (SETTINGS_SYS)** 0x0802 1000 - 0x080X XXXX (кБт) - **FW** **Итого: 772 кБт - занято** ```c // Адреса структур настроек #define SYS_SECTOR 0x08020800 #define SYS_CRC_ADDRESS 0x08020FFC #define SETTINGS_SECTOR 0x08020000 ``` --- ## <font color = "MediumSeaGreen">Периферия Artery и STM32</font> ##### <font color = "#0x0b3b06">TIM Таймеры artery</font> TIM7 - используется для периодических измерений ADC TIM13 - используется в IAP для внешнего watchdog TIM6 - используется для подсчета uptime и ежесуточного watchdog ##### <font color = "#0x0b3b06">TIM Таймеры stm32</font> - TIM4 - uptime и софтверный watchdog для некоторых тасков - TIM5 - статистика FreeRTOS - TIM13 - сброс внешнего watchdog. В текущем релизе не используется. Сброс происходит в отдельном таске. - TIM14 - дергает ADC --- ## <font color = "MediumSeaGreen">Сборка web-интерфейса (fsdata.c)</font> - Для сборки должен быть установлен node.js (v16.x.x +), nmp, perl. - В корневом каталоге web-интерфейса (metrolog_modem_web_ui) выполнить: ```bash npm install ``` Cборку web'a для основного FW: ```bash npm run build:wui ``` Сборку web'a для IAP, указав версию IAP для отображения в web-интерфейсе: ```bash npm run build:upload -- --iap=1.01 ``` - Собрать fsdata.c для FW (из корня проекта): ```perl perl tools\makefsdata.pl fw\modules\http_server\ metrolog_modem_web_ui\dist\wui\ ``` - Собрать fsdata.c для IAP (из корня проекта): ```perl perl tools\makefsdata.pl iap\modules\ethernet\ metrolog_modem_web_ui\dist\upload\ ``` --- ## <font color = "MediumSeaGreen">MQTT</font> * Для тестов можно запустить mosquitto-брокер в WSL или Linux: ```bash $ sudo /etc/init.d/mosquitto start ``` * Подписка на все топики: ```bash $ sudo mosquitto_sub -t '#' -v ``` ##### <font color = "#1D8571">Логика работы</font> * После подключения к брокеру контроллер подписывается на топик "/metrolog_server/serial number/command". В этот топик могут приходить следующие команды: ```json { "cmd": "UPDATE" } - контроллер отправляет данные в топик /metrolog/[Серийный номер]/sensors { "cmd": "INFO" } - прислать все значения /metrolog/[Серийный номер]/info { "cmd": "SETTINGS" } - прислать все значения /metrolog/[Серийный номер]/settings ``` * Отправка сообщений происходит в функции: ```c void mqtt_publish_topic(void) ``` Топики: /metrolog/serial number/ /metrolog/serial number/status /metrolog_server/serial number/command - топик основных команд модема --- #### <font color = "MediumSeaGreen">Backup регистры</font> <font color=0x0b3b06><b>STM32:</b></font> RTC_BKP_DR1 - loadMode (нужно ли обновляться или нет) RTC_BKP_DR2 - bootTry RTC_BKP_DR3 - факт обновления FW (пока не используется) RTC_BKP_DR19 - флаг синхронизации RTC <font color=0x0b3b06><b>Artery:</b></font> BPR_DATA1 - loadMode (нужно ли обновляться или нет) BPR_DATA2 - bootTry BPR_DATA3 - loadType BPR_DATA4 - флаг синхронизации RTC BPR_DATA5 - трафик gsm_tx_sim_1 BPR_DATA6 - трафик gsm_tx_sim_1 BPR_DATA7 - трафик gsm_rx_sim_1 BPR_DATA8 - трафик gsm_rx_sim_1 BPR_DATA9 - трафик gsm_tx_sim_2 BPR_DATA10 - трафик gsm_tx_sim_2 BPR_DATA12 - трафик gsm_rx_sim_2 BPR_DATA12 - трафик gsm_rx_sim_2 BPR_DATA13 - трафик ethernet_tx BPR_DATA14 - трафик ethernet_tx BPR_DATA15 - трафик ethernet_rx BPR_DATA16 - трафик ethernet_rx BPR_DATA17 - флаг обновления ПО. Выставляется в загрузчике --- #### <font color = "MediumSeaGreen">События в журнале</font> - логин - OK - сохранение раздела настроек - OK - сохраниние раздела "информация" - OK - обновление FW (через FW и через IAP) - OK - попытка обновления FW - OK - обновления FW (timeout) - OK - изменение версии FW - OK - изменение версии IAP - - ошибка обновления FW (CRC) - OK - изменение состояния входа 1 - OK - изменение состояния входа 2 - OK - изменение состояния 220В - OK --- #### <font color = "MediumSeaGreen">Кнопки</font> Кнопка <font color=yellow ><b>Установка - SET:</b></font> - Простое нажатие на статусе T0OK - гасит LED "Состояние" и начинает отправку UDP анонсов. - Удерживание 15 секунд в основном ПО - перезагрузка устройства Кнопка <font color=yellow ><b>Режим - MODE:</b></font> - Нажатие и удержание 30 секунд - установка дефолтных настроек ethernet, сохранение и перезагрузка. - Нажатие и удержание 60 секунд - установка штатного пароля web-интерфейса. - Если кнопка зажата при перезагрузке, то контроллер переходит в Bootloader. --- #### <font color = "MediumSeaGreen">Изменения в AT и STM32</font> - [x] Навести порядок в репо stm32 - [x] Перенести суточный watchdog на аппаратный таймер stm32. - [x] Вывод логотипа на странице логина stm32 - [x] Разобраться с зарядником в main.c. - [x] Новые параметры GSM в web-интерфейс. - [x] Новые параметры GSM в mqtt. - [x] Изменить настройки по умолчанию stm32. - [x] Вывод серийника на странице модема. stm32. - [x] Проверить обновление - [x] Единая логика MQTT stm32 и artery - [x] Фикс сохранения настроек в stm32 --- #### <font color = "MediumSeaGreen">TODO</font> - Параметры трафика. Заменить JSON API. - Установка пароля - Параметры канала ethernet - Определение версии IAP