|
@@ -0,0 +1,152 @@
|
|
|
|
+##### DEBUG UART
|
|
|
|
+ USART1 (PB6 - Tx, PB7 - Rx)
|
|
|
|
+Отладочный порт пересекается с рабочим портом модема. В боевой прошивке нужно отключать вывод DEBUG. Ключ при сборке "DEBUG".
|
|
|
|
+##### UART Port_1 RS485 #2
|
|
|
|
+ USART3 (PD8 - Tx, PD9 - Rx)
|
|
|
|
+##### Карта памяти
|
|
|
|
+ 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кБт)
|
|
|
|
+
|
|
|
|
+#### Настройки
|
|
|
|
+##### Логика установки/загрузки настроек
|
|
|
|
+- После рестарта контроллера стартует бутлоадер. До проверки флагов обновления бутлоадер проверяет CRC общей структуры настроек. Если контрольная сумма не совпадает, то происходит установка дефолтных значений общей структуры настроек.
|
|
|
|
+- После старта основной программы (далее FW) загружаются системные настройки. Предварительно проверяется CRC и контрольное слово. Если CRC или слово не совпадают, то прошиваются дефолтные значения системных настроек.
|
|
|
|
+- Далее загружается основная структура настроек. Проверяется CRC и контрольное слово и если нужно прошиваются дефолтные значения.
|
|
|
|
+##### Общие настройки (FW + IAP)
|
|
|
|
+```sh
|
|
|
|
+// Установить параметры сетевого подключения по умолчанию
|
|
|
|
+void SETTINGS_SetWebParamsDef(void)
|
|
|
|
+{
|
|
|
|
+ strcpy(sSettings.sWebParams.ip, "192.168.0.254");
|
|
|
|
+ strcpy(sSettings.sWebParams.gate, "192.168.0.1");
|
|
|
|
+ strcpy(sSettings.sWebParams.mask, "255.255.255.0");
|
|
|
|
+ strcpy(sSettings.sWebParams.dns1, "8.8.8.8");
|
|
|
|
+ strcpy(sSettings.sWebParams.dns2, "8.8.4.4");
|
|
|
|
+ sSettings.sWebParams.dhcpEnable = 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void SETTINGS_SetInfoDef(void)
|
|
|
|
+{
|
|
|
|
+ strcpy(sSettings.sInfo.productionData, "00.00.00 00:00");
|
|
|
|
+ strcpy(sSettings.sInfo.mac, DEVICE_MAC); // "EC-4C-4D-00-90-01"
|
|
|
|
+ strcpy(sSettings.sInfo.serialNumber, DEVICE_SERIAL); // "7030000"
|
|
|
|
+ sSettings.sInfo.id = 0;
|
|
|
|
+ strcpy(sSettings.sInfo.location, "");
|
|
|
|
+ strcpy(sSettings.sInfo.owner, "");
|
|
|
|
+ strcpy(sSettings.sInfo.comments, "");
|
|
|
|
+ strcpy(sSettings.sInfo.incharge, "");
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void SETTINGS_SetGSMDef(void)
|
|
|
|
+{
|
|
|
|
+ for(uint8_t i = 0; i < NUM_GSM; i++)
|
|
|
|
+ {
|
|
|
|
+ sSettings.sGSM[i].Enabled = true;
|
|
|
|
+ sSettings.sGSM[i].prior = 0;
|
|
|
|
+ sSettings.sGSM[i].type_profile = MEGAFON;
|
|
|
|
+ strcpy(sSettings.sGSM[i].ip_test, "8.8.8.8");
|
|
|
|
+ strcpy(sSettings.sGSM[i].APNaddr, "internet");
|
|
|
|
+ strcpy(sSettings.sGSM[i].APNlogin, "");
|
|
|
|
+ strcpy(sSettings.sGSM[i].APNpass, "");
|
|
|
|
+ strcpy(sSettings.sGSM[i].msisdn, "");
|
|
|
|
+ sSettings.sGSM[i].timeout = 30;
|
|
|
|
+ sSettings.sGSM[i].period_test = 100;
|
|
|
|
+ sSettings.sGSM[i].num_bad_connect = 3;
|
|
|
|
+ sSettings.sGSM[i].modem_mode = AUTOMATIC;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ sSettings.sGSM[0].prior = 3;
|
|
|
|
+ sSettings.sGSM[1].prior = 2;
|
|
|
|
+}
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+##### Системные настройки (только FW)
|
|
|
|
+```sh
|
|
|
|
+typedef struct
|
|
|
|
+{
|
|
|
|
+ char mac[MAC_LEN]; // MAC адрес
|
|
|
|
+ char serial[SER_LEN]; // Серийный номер
|
|
|
|
+ char customer[CUST_LEN]; // Производитель
|
|
|
|
+ char proddate[PROD_LEN]; // Дата производства
|
|
|
|
+ char testState[16]; // Статус тестирования
|
|
|
|
+ uint32_t controlword; // Контрольное слово
|
|
|
|
+ uint32_t crc; // CRC
|
|
|
|
+} SYS_t;
|
|
|
|
+```
|
|
|
|
+##### Основная структура настроек состоит из следующих структур:
|
|
|
|
+```
|
|
|
|
+ FLAGS_t sFlags;
|
|
|
|
+ ETHERNET_t sEthernet; //настройка подключения Ethernet
|
|
|
|
+ SERVER_t sServer;
|
|
|
|
+ PROXY_t sProxy;
|
|
|
|
+ AUTH_t sAuth[MAX_WEB_USERS];
|
|
|
|
+ PORTGW_t sPortGw[NUM_PORTGW]; // Настройки прозрачного порта
|
|
|
|
+ SNTP_t sSNTP;
|
|
|
|
+ PSD_t sPSD;
|
|
|
|
+ uint16_t settVer; // Версия структуры настроек
|
|
|
|
+ uint32_t controlWorld; // Слово для контроля целостности структуры настроек
|
|
|
|
+ uint32_t sCRC;
|
|
|
|
+```
|
|
|
|
+##### Загрузка
|
|
|
|
+###### До старта загрузочной задачи
|
|
|
|
+- Сохранение флагов причин перезагрузки (флаги пока не используются)
|
|
|
|
+- Инициализация GPIO
|
|
|
|
+- USB switch для работы RNDIS
|
|
|
|
+- Инициализация USART
|
|
|
|
+- Запуск Watchdog
|
|
|
|
+- Инициализация jSON hooks
|
|
|
|
+###### Действия в загрузочной задаче
|
|
|
|
+- Звуковой сигнал buzzer
|
|
|
|
+- Генератор случайных чисел
|
|
|
|
+- Таймер для расчета производительности FreeRTOS
|
|
|
|
+- Запуск таймера Uptime
|
|
|
|
+- Инициализация SPI2, мьютекса для SPI2
|
|
|
|
+- Погасить все LED на сдвиговым регистре (LED уровня GSM сигнала)
|
|
|
|
+- Установка мультиплексора в режим отключения ПСД
|
|
|
|
+- Инициализация кнопок и запуск таска
|
|
|
|
+- Анализ нажатия кнопки "MODE". Если кнопка нажата, то переход в Bootloader.
|
|
|
|
+- Загрузка настроек
|
|
|
|
+- Переинициализация всех USART
|
|
|
|
+- Монтирование файловой системы
|
|
|
|
+- Запуск измерений ADC и Power Manager
|
|
|
|
+- Запуск задачи управления LED
|
|
|
|
+- Запуск задачи отправки UDP анонсов
|
|
|
|
+- Запуск задачи Connection Manager
|
|
|
|
+- Запуск задач прозрачных портов
|
|
|
|
+- Запуск Задачи PSD (параллельная диспетчеризация)
|
|
|
|
+- Запуск RTC
|
|
|
|
+- Запуск MQTT
|
|
|
|
+- Запуск Монитора
|
|
|
|
+- Сброс BootTry
|
|
|
|
+##### Индикация
|
|
|
|
+ - Мигает красным диодом "Сервер" до установки сетевых параметорв на эапе тестирования кроме "T2_OK".
|
|
|
|
+##### MODEM UART
|
|
|
|
+ USART2 (PD5 - Tx, PD6 - Rx)
|
|
|
|
+##### Таймеры
|
|
|
|
+ - TIM4 - на 1Гц для счетчика uptime
|
|
|
|
+ - TIM5 - на 10кГц для загрузки FreeRTOS
|
|
|
|
+ - TIM13 - сброс внешнего Watchdog таймера
|
|
|
|
+ - TIM14 - триггер для АЦП
|
|
|
|
+##### Конфигурация проекта
|
|
|
|
+ - #define SOFTWARE_WATCHDOG (common_config.h) - сброс watchdog в отдельном таске
|
|
|
|
+ - MQTT_CLIENT - MQTT клиент
|
|
|
|
+##### Кнопки. Логика работы
|
|
|
|
+ - Кнопка SET "Установка"
|
|
|
|
+ Простое нажатие на статусе T0OK - гасит LED "Состояние" и начинает отправку UDP анонсов.
|
|
|
|
+ Нажатие 15 секунд - перезагрузка
|
|
|
|
+ - Кнопка MODE "Режим"
|
|
|
|
+ Нажатие 30 секунд - установка дефолтных настроек ethernet, сохранение и перезагрузка.
|
|
|
|
+ При перезагрузке и при зажатой кнопке MODE контроллер переходит в резим Bootloader.
|
|
|
|
+##### TODO
|
|
|
|
+ - Макросы в settings_api.c
|
|
|
|
+ - Вернуть дефолтные настройки (settings_api.c)
|
|
|
|
+####
|
|
|
|
+
|
|
|
|
+
|