|  | il y a 2 ans | |
|---|---|---|
| .. | ||
| IRQ + FreeRTOS.md | il y a 2 ans | |
| M3 artery.md | il y a 2 ans | |
| readme.md | il y a 3 ans | |
| Текучка Метролог.md | il y a 2 ans | |
USART1 (PB6 - Tx, PB7 - Rx)
Отладочный порт пересекается с рабочим портом модема. В боевой прошивке нужно отключать вывод DEBUG. Ключ при сборке "DEBUG".
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 и контрольное слово и если нужно прошиваются дефолтные значения.
// Установить параметры сетевого подключения по умолчанию
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;
}
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;
Инициализация 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".
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.
Макросы в settings_api.c
Вернуть дефолтные настройки (settings_api.c) ####