|
10 місяців тому | |
---|---|---|
.. | ||
M3 artery + stm32.md | 11 місяців тому | |
readme.md | 10 місяців тому | |
Текучка Метролог.md | 11 місяців тому |
Компилятор:
/gcc-arm-none-eabi-9-2020-q2-update
arm-none-eabi-gcc (GNU Arm Embedded Toolchain 9-2020-q2-update) 9.3.1 20200408 (release)
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) ####