add reboot 0x33
This commit is contained in:
parent
bba88d9ee5
commit
9c0c645ab0
11 changed files with 6628 additions and 6622 deletions
|
|
@ -94,7 +94,7 @@ DEFINES += -DOTA_TYPE=OTA_TYPE_BOOT
|
|||
BIN_OTA =
|
||||
else
|
||||
LDSCRIPT ?= $(SDK_PATH)/misc/phy6222.ld
|
||||
DEFINES += -DOTA_TYPE=OTA_TYPE_APP
|
||||
DEFINES += -DOTA_TYPE=OTA_TYPE_NONE
|
||||
BIN_OTA = $(OBJ_DIR)/$(PROJECT_NAME).bin
|
||||
endif
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -56,17 +56,9 @@ const cfg_t def_cfg = {
|
|||
.averaging_measurements = 180 // 180*10 = 1800 sec, 30 min
|
||||
};
|
||||
|
||||
/*
|
||||
uint32_t get_delta_time_rtc(uint32_t start_time_rtc) {
|
||||
uint32_t new_time_rtc = clock_time_rtc();
|
||||
if(new_time_rtc < start_time_rtc)
|
||||
new_time_rtc += 0x1000000; // + 512 sec
|
||||
return new_time_rtc - start_time_rtc;
|
||||
}
|
||||
*/
|
||||
void restore_utc_time_sec(void) {
|
||||
if(clkt.utc_set_time_sec == 0) {
|
||||
clkt.utc_time_add = AP_AON->SLEEP_R[2] + 10;
|
||||
clkt.utc_time_add = (AP_AON->SLEEP_R[2] &((1<<15) - 1)) + 10;
|
||||
clkt.utc_time_sec = AP_AON->SLEEP_R[3];
|
||||
//if(clkt.utc_time_sec < 1704067200ul) clkt.utc_time_sec = 1704067200ul;
|
||||
}
|
||||
|
|
@ -74,8 +66,8 @@ void restore_utc_time_sec(void) {
|
|||
}
|
||||
|
||||
uint32_t get_utc_time_sec(void) {
|
||||
// HAL_ENTER_CRITICAL_SECTION();
|
||||
uint32_t new_time_tik;
|
||||
HAL_ENTER_CRITICAL_SECTION();
|
||||
do {
|
||||
new_time_tik = AP_AON->RTCCNT;
|
||||
} while(new_time_tik != AP_AON->RTCCNT);
|
||||
|
|
@ -88,7 +80,7 @@ uint32_t get_utc_time_sec(void) {
|
|||
clkt.utc_time_add &= (1<<15) - 1;
|
||||
AP_AON->SLEEP_R[2] = clkt.utc_time_add; // сохранить для восстановления часов после перезагрузки
|
||||
AP_AON->SLEEP_R[3] = clkt.utc_time_sec; // сохранить для восстановления часов после перезагрузки
|
||||
// HAL_EXIT_CRITICAL_SECTION();
|
||||
HAL_EXIT_CRITICAL_SECTION();
|
||||
#if (DEV_SERVICES & SERVICE_TIME_ADJUST)
|
||||
// TODO
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@
|
|||
|
||||
// supported services by the device (bits)
|
||||
#define SERVICE_OTA 0x00000001 // есть функция OTA
|
||||
#define SERVICE_OTA_EXT 0x00000002 // есть расширенная функция OTA
|
||||
#define SERVICE_OTA_EXT 0x00000002 // пока нет: есть расширенная функция OTA
|
||||
#define SERVICE_PINCODE 0x00000004 // пока нет: есть установка pin-code
|
||||
#define SERVICE_BINDKEY 0x00000008 // пока нет: есть шифрование
|
||||
#define SERVICE_HISTORY 0x00000010 // есть запись истории
|
||||
|
|
@ -61,13 +61,17 @@
|
|||
|
||||
#define OTA_TYPE_NONE 0 // нет OTA, только переключение из APP на boot прошивку
|
||||
#define OTA_TYPE_BOOT SERVICE_OTA // вариант для прошивки boot + OTA
|
||||
#define OTA_TYPE_APP SERVICE_OTA_EXT // пока не реализовано
|
||||
#define OTA_TYPE_APP OTA_TYPE_NONE
|
||||
|
||||
#ifndef OTA_TYPE
|
||||
#define OTA_TYPE OTA_TYPE_NONE
|
||||
#define OTA_TYPE OTA_TYPE_BOOT
|
||||
#endif
|
||||
|
||||
#if OTA_TYPE == OTA_TYPE_BOOT
|
||||
#define DEF_SOFTWARE_REVISION {'B', '0'+ (APP_VERSION >> 4), '.' , '0'+ (APP_VERSION & 0x0F), 0}
|
||||
#else
|
||||
#define DEF_SOFTWARE_REVISION {'V', '0'+ (APP_VERSION >> 4), '.' , '0'+ (APP_VERSION & 0x0F), 0}
|
||||
#endif
|
||||
|
||||
#if DEVICE == DEVICE_THB2
|
||||
/* Model: THB2 */
|
||||
|
|
@ -214,7 +218,8 @@ extern adv_work_t adv_wrk;
|
|||
|
||||
#define OTA_MODE_SELECT_REG 0x4000f034
|
||||
//#define OTA_MODE_SELECT_REG (AP_AON->RTCCC2) // [0x4000f034] == 0x55 -> OTA
|
||||
#define BOOT_FLG_OTA 0x55
|
||||
#define BOOT_FLG_OTA 0x55 // перезагрузка в FW Boot для OTA (ожидание соединения 80 сек)
|
||||
#define BOOT_FLG_FW0 0x33 // перезагрузка в FW Boot
|
||||
|
||||
typedef struct _work_parm_t {
|
||||
#if (DEV_SERVICES & SERVICE_SCREEN)
|
||||
|
|
|
|||
|
|
@ -59,10 +59,12 @@ uint8_t display_out_buff[LCD_BUF_SIZE+1];
|
|||
|
||||
const uint8_t lcd_init_cmd[] = {
|
||||
// LCD controller initialize:
|
||||
//0xC8, // Mode Set (MODE SET): Display enable, 1/3 Bias
|
||||
0xD8, // Mode Set (MODE SET): Display enable, 1/3 Bias, power saving
|
||||
0xea, // Set IC Operation(ICSET): Software Reset, Internal oscillator circuit
|
||||
0xC8, // Mode Set (MODE SET): Display enable, 1/3 Bias, power saving
|
||||
0xbc, // Display control (DISCTL): Power save mode 3, FRAME flip, Power save mode 1
|
||||
0x80, // load data pointer
|
||||
0xF0, // blink control 0xf2
|
||||
0xf0, // blink control 0xf2
|
||||
0xfc, // All pixel control (APCTL): Normal
|
||||
0x60,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
|
||||
};
|
||||
|
|
|
|||
|
|
@ -319,17 +319,21 @@ int main(void) {
|
|||
#endif
|
||||
wrk.boot_flg = (uint8_t)read_reg(OTA_MODE_SELECT_REG);
|
||||
#if defined(OTA_TYPE) && OTA_TYPE == OTA_TYPE_BOOT
|
||||
if (wrk.boot_flg != BOOT_FLG_OTA
|
||||
#if (DEV_SERVICES & SERVICE_KEY)
|
||||
&& hal_gpio_read(GPIO_KEY)
|
||||
if (hal_gpio_read(GPIO_KEY) == 0
|
||||
|| wrk.boot_flg == BOOT_FLG_OTA
|
||||
|| wrk.boot_flg == BOOT_FLG_FW0) {
|
||||
#else
|
||||
if (wrk.boot_flg == BOOT_FLG_OTA
|
||||
|| wrk.boot_flg == BOOT_FLG_FW0) {
|
||||
#endif
|
||||
) {
|
||||
write_reg(OTA_MODE_SELECT_REG,0);
|
||||
} else { // boot FW OTA
|
||||
spif_config(SYS_CLK_DLL_64M, 1, XFRD_FCMD_READ_DUAL, 0, 0);
|
||||
AP_PCR->CACHE_BYPASS = 1; // just bypass cache
|
||||
startup_app();
|
||||
} else
|
||||
write_reg(OTA_MODE_SELECT_REG,0);
|
||||
#endif
|
||||
}
|
||||
#endif // OTA_TYPE == OTA_TYPE_BOOT
|
||||
|
||||
watchdog_config(WDG_2S);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue