implement esp_deep_sleep, fix build issues
This commit is contained in:
parent
cf6fc7c741
commit
df6edb50e9
|
@ -46,6 +46,10 @@ build_template_app:
|
||||||
- sed -i.bak -e's/CONFIG_OPTIMIZATION_LEVEL_DEBUG\=y/CONFIG_OPTIMIZATION_LEVEL_RELEASE=y/' sdkconfig
|
- sed -i.bak -e's/CONFIG_OPTIMIZATION_LEVEL_DEBUG\=y/CONFIG_OPTIMIZATION_LEVEL_RELEASE=y/' sdkconfig
|
||||||
- make defconfig
|
- make defconfig
|
||||||
- make all V=1
|
- make all V=1
|
||||||
|
# Check if there are any stray printf/ets_printf references in WiFi libs
|
||||||
|
- cd ../components/esp32/lib
|
||||||
|
- test $(xtensa-esp32-elf-nm *.a | grep -w printf | wc -l) -eq 0
|
||||||
|
- test $(xtensa-esp32-elf-nm *.a | grep -w ets_printf | wc -l) -eq 0
|
||||||
|
|
||||||
|
|
||||||
.build_gitlab: &build_template
|
.build_gitlab: &build_template
|
||||||
|
|
|
@ -115,7 +115,7 @@ static struct osi_funcs_t osi_funcs = {
|
||||||
._mutex_create = mutex_create_wrapper,
|
._mutex_create = mutex_create_wrapper,
|
||||||
._mutex_lock = mutex_lock_wrapper,
|
._mutex_lock = mutex_lock_wrapper,
|
||||||
._mutex_unlock = mutex_unlock_wrapper,
|
._mutex_unlock = mutex_unlock_wrapper,
|
||||||
._read_efuse_mac = system_efuse_read_mac,
|
._read_efuse_mac = esp_efuse_read_mac,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void bt_controller_task(void *pvParam)
|
static void bt_controller_task(void *pvParam)
|
||||||
|
|
|
@ -16,25 +16,8 @@
|
||||||
#include "rom/ets_sys.h"
|
#include "rom/ets_sys.h"
|
||||||
#include "rom/uart.h"
|
#include "rom/uart.h"
|
||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
|
#include "phy.h"
|
||||||
typedef enum{
|
#include "rtc.h"
|
||||||
XTAL_40M = 40,
|
|
||||||
XTAL_26M = 26,
|
|
||||||
XTAL_24M = 24,
|
|
||||||
XTAL_AUTO = 0
|
|
||||||
} xtal_freq_t;
|
|
||||||
|
|
||||||
typedef enum{
|
|
||||||
CPU_80M = 1,
|
|
||||||
CPU_160M = 2,
|
|
||||||
CPU_240M = 3,
|
|
||||||
} cpu_freq_t;
|
|
||||||
|
|
||||||
extern void phy_get_romfunc_addr();
|
|
||||||
|
|
||||||
// TODO: these functions need to be moved from librtc to ESP-IDF
|
|
||||||
extern void rtc_init_lite();
|
|
||||||
extern void rtc_set_cpu_freq(xtal_freq_t xtal_freq, cpu_freq_t cpu_freq);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function is not exposed as an API at this point,
|
* This function is not exposed as an API at this point,
|
||||||
|
@ -52,7 +35,7 @@ void esp_set_cpu_freq(void)
|
||||||
// wait uart tx finish, otherwise some uart output will be lost
|
// wait uart tx finish, otherwise some uart output will be lost
|
||||||
uart_tx_wait_idle(0);
|
uart_tx_wait_idle(0);
|
||||||
|
|
||||||
rtc_init_lite();
|
rtc_init_lite(XTAL_AUTO);
|
||||||
cpu_freq_t freq = CPU_80M;
|
cpu_freq_t freq = CPU_80M;
|
||||||
switch(freq_mhz) {
|
switch(freq_mhz) {
|
||||||
case 240:
|
case 240:
|
||||||
|
@ -73,7 +56,7 @@ void esp_set_cpu_freq(void)
|
||||||
// wait uart tx finish, otherwise some uart output will be lost
|
// wait uart tx finish, otherwise some uart output will be lost
|
||||||
uart_tx_wait_idle(0);
|
uart_tx_wait_idle(0);
|
||||||
|
|
||||||
rtc_set_cpu_freq(XTAL_AUTO, freq);
|
rtc_set_cpu_freq(freq);
|
||||||
ets_update_cpu_frequency(freq_mhz);
|
ets_update_cpu_frequency(freq_mhz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "soc/dport_reg.h"
|
#include "soc/dport_reg.h"
|
||||||
#include "esp_attr.h"
|
#include "esp_attr.h"
|
||||||
#include "esp_deepsleep.h"
|
#include "esp_deepsleep.h"
|
||||||
|
#include "rtc.h"
|
||||||
|
|
||||||
/* Updating RTC_MEMORY_CRC_REG register via set_rtc_memory_crc()
|
/* Updating RTC_MEMORY_CRC_REG register via set_rtc_memory_crc()
|
||||||
is not thread-safe. */
|
is not thread-safe. */
|
||||||
|
@ -46,3 +47,21 @@ void RTC_IRAM_ATTR esp_default_wake_deep_sleep(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void __attribute__((weak, alias("esp_default_wake_deep_sleep"))) esp_wake_deep_sleep(void);
|
void __attribute__((weak, alias("esp_default_wake_deep_sleep"))) esp_wake_deep_sleep(void);
|
||||||
|
|
||||||
|
void esp_deep_sleep(uint64_t time_in_us)
|
||||||
|
{
|
||||||
|
rtc_set_cpu_freq(CPU_XTAL);
|
||||||
|
if (esp_get_deep_sleep_wake_stub() == NULL) {
|
||||||
|
esp_set_deep_sleep_wake_stub(esp_wake_deep_sleep);
|
||||||
|
}
|
||||||
|
uint32_t period = rtc_slowck_cali(CALI_RTC_MUX, 128);
|
||||||
|
uint32_t cycle_l, cycle_h;
|
||||||
|
rtc_usec2rtc(time_in_us >> 32, time_in_us, period, &cycle_h, &cycle_l);
|
||||||
|
rtc_slp_prep_lite(1, 0);
|
||||||
|
rtc_sleep(cycle_h, cycle_l, TIMER_EXPIRE_EN, 0);
|
||||||
|
while (1) {
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void system_deep_sleep(uint64_t) __attribute__((alias("esp_deep_sleep")));
|
||||||
|
|
|
@ -30,25 +30,34 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the chip to deep-sleep mode.
|
* @brief Enter deep-sleep mode
|
||||||
*
|
*
|
||||||
* The device will automatically wake up after the deep-sleep time set
|
* The device will automatically wake up after the deep-sleep time
|
||||||
* by the users. Upon waking up, the device boots up from user_init.
|
* Upon waking up, the device calls deep sleep wake stub, and then proceeds
|
||||||
*
|
* to load application.
|
||||||
* @attention The parameter time_in_us to be "uint64" is for further development.
|
*
|
||||||
* Only the low 32 bits of parameter time_in_us are avalable now.
|
* This function does not return.
|
||||||
*
|
*
|
||||||
* @param uint64 time_in_us : deep-sleep time, only the low 32bits are avalable now. unit: microsecond
|
* @param time_in_us deep-sleep time, unit: microsecond
|
||||||
*
|
*/
|
||||||
* @return null
|
void esp_deep_sleep(uint64_t time_in_us) __attribute__((noreturn));
|
||||||
*/
|
|
||||||
void system_deep_sleep(uint64_t time_in_us);
|
|
||||||
|
/**
|
||||||
|
* @brief Enter deep-sleep mode
|
||||||
|
*
|
||||||
|
* Function has been renamed to esp_deep_sleep.
|
||||||
|
* This name is deprecated and will be removed in a future version.
|
||||||
|
*
|
||||||
|
* @param time_in_us deep-sleep time, unit: microsecond
|
||||||
|
*/
|
||||||
|
void system_deep_sleep(uint64_t time_in_us) __attribute__((noreturn, deprecated));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Default stub to run on wake from deep sleep.
|
* @brief Default stub to run on wake from deep sleep.
|
||||||
*
|
*
|
||||||
* Allows for executing code immediately on wake from sleep, before
|
* Allows for executing code immediately on wake from sleep, before
|
||||||
* the software bootloader or esp-idf app has started up.
|
* the software bootloader or ESP-IDF app has started up.
|
||||||
*
|
*
|
||||||
* This function is weak-linked, so you can implement your own version
|
* This function is weak-linked, so you can implement your own version
|
||||||
* to run code immediately when the chip wakes from
|
* to run code immediately when the chip wakes from
|
||||||
|
|
|
@ -54,7 +54,7 @@ void esp_restart(void) __attribute__ ((noreturn));
|
||||||
* Function has been renamed to esp_restart.
|
* Function has been renamed to esp_restart.
|
||||||
* This name will be removed in a future release.
|
* This name will be removed in a future release.
|
||||||
*/
|
*/
|
||||||
void system_restart(void) __attribute((deprecated, noreturn));
|
void system_restart(void) __attribute__ ((deprecated, noreturn));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get system time, unit: microsecond.
|
* @brief Get system time, unit: microsecond.
|
||||||
|
@ -74,7 +74,6 @@ uint32_t system_get_time(void) __attribute__ ((deprecated));
|
||||||
*/
|
*/
|
||||||
uint32_t esp_get_free_heap_size(void);
|
uint32_t esp_get_free_heap_size(void);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the size of available heap.
|
* @brief Get the size of available heap.
|
||||||
*
|
*
|
||||||
|
@ -103,7 +102,7 @@ uint32_t esp_random(void);
|
||||||
*
|
*
|
||||||
* @return ESP_OK on success
|
* @return ESP_OK on success
|
||||||
*/
|
*/
|
||||||
esp_err_t esp_efuse_read_mac(uint8_t mac[6]);
|
esp_err_t esp_efuse_read_mac(uint8_t* mac);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read hardware MAC address.
|
* @brief Read hardware MAC address.
|
||||||
|
@ -116,6 +115,16 @@ esp_err_t esp_efuse_read_mac(uint8_t mac[6]);
|
||||||
*/
|
*/
|
||||||
esp_err_t system_efuse_read_mac(uint8_t mac[6]) __attribute__ ((deprecated));
|
esp_err_t system_efuse_read_mac(uint8_t mac[6]) __attribute__ ((deprecated));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get SDK version
|
||||||
|
*
|
||||||
|
* This function is deprecated and will be removed in a future release.
|
||||||
|
*
|
||||||
|
* @return constant string "master"
|
||||||
|
*/
|
||||||
|
const char* system_get_sdk_version(void) __attribute__ ((deprecated));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -605,6 +605,14 @@ void intr_matrix_set(int cpu_no, uint32_t model_num, uint32_t intr_num);
|
||||||
|
|
||||||
#define ETS_MEM_BAR() asm volatile ( "" : : : "memory" )
|
#define ETS_MEM_BAR() asm volatile ( "" : : : "memory" )
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
OK = 0,
|
||||||
|
FAIL,
|
||||||
|
PENDING,
|
||||||
|
BUSY,
|
||||||
|
CANCEL,
|
||||||
|
} STATUS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
#include "esp_types.h"
|
#include "esp_types.h"
|
||||||
#include "esp_attr.h"
|
#include "esp_attr.h"
|
||||||
|
#include "ets_sys.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -161,14 +162,6 @@ typedef struct {
|
||||||
int received;
|
int received;
|
||||||
} UartDevice;
|
} UartDevice;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
OK = 0,
|
|
||||||
FAIL,
|
|
||||||
PENDING,
|
|
||||||
BUSY,
|
|
||||||
CANCEL,
|
|
||||||
} STATUS;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Init uart device struct value and reset uart0/uart1 rx.
|
* @brief Init uart device struct value and reset uart0/uart1 rx.
|
||||||
* Please do not call this function in SDK.
|
* Please do not call this function in SDK.
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
* share the name with the existing functions from hal.h.
|
* share the name with the existing functions from hal.h.
|
||||||
* Including this header file will define XTHAL_USE_CACHE_MACROS
|
* Including this header file will define XTHAL_USE_CACHE_MACROS
|
||||||
* which directs hal.h not to use the functions.
|
* which directs hal.h not to use the functions.
|
||||||
*
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Single-cache-line operations in C-callable inline assembly.
|
* Single-cache-line operations in C-callable inline assembly.
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit e2e5781dc27e638c5e63f85bc23590dd21af1619
|
Subproject commit 5182dd9dab9ec37e69711de33bb0c200502c4c03
|
|
@ -179,7 +179,7 @@ static esp_err_t load_cal_data_from_nvs_handle(nvs_handle handle,
|
||||||
return ESP_ERR_INVALID_SIZE;
|
return ESP_ERR_INVALID_SIZE;
|
||||||
}
|
}
|
||||||
uint8_t sta_mac[6];
|
uint8_t sta_mac[6];
|
||||||
system_efuse_read_mac(sta_mac);
|
esp_efuse_read_mac(sta_mac);
|
||||||
if (memcmp(sta_mac, cal_data_mac, sizeof(sta_mac)) != 0) {
|
if (memcmp(sta_mac, cal_data_mac, sizeof(sta_mac)) != 0) {
|
||||||
ESP_LOGE(TAG, "%s: calibration data MAC check failed: expected " \
|
ESP_LOGE(TAG, "%s: calibration data MAC check failed: expected " \
|
||||||
MACSTR ", found " MACSTR,
|
MACSTR ", found " MACSTR,
|
||||||
|
@ -210,7 +210,7 @@ static esp_err_t store_cal_data_to_nvs_handle(nvs_handle handle,
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
uint8_t sta_mac[6];
|
uint8_t sta_mac[6];
|
||||||
system_efuse_read_mac(sta_mac);
|
esp_efuse_read_mac(sta_mac);
|
||||||
err = nvs_set_blob(handle, PHY_CAL_MAC_KEY, sta_mac, sizeof(sta_mac));
|
err = nvs_set_blob(handle, PHY_CAL_MAC_KEY, sta_mac, sizeof(sta_mac));
|
||||||
if (err != ESP_OK) {
|
if (err != ESP_OK) {
|
||||||
return err;
|
return err;
|
||||||
|
|
130
components/esp32/rtc.h
Normal file
130
components/esp32/rtc.h
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include "soc/soc.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
XTAL_40M = 40,
|
||||||
|
XTAL_26M = 26,
|
||||||
|
XTAL_24M = 24,
|
||||||
|
XTAL_AUTO = 0
|
||||||
|
} xtal_freq_t;
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
CPU_XTAL = 0,
|
||||||
|
CPU_80M = 1,
|
||||||
|
CPU_160M = 2,
|
||||||
|
CPU_240M = 3,
|
||||||
|
CPU_2M = 4
|
||||||
|
} cpu_freq_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
CALI_RTC_MUX = 0,
|
||||||
|
CALI_8MD256 = 1,
|
||||||
|
CALI_32K_XTAL = 2
|
||||||
|
} cali_clk_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function must be called to initialize RTC library
|
||||||
|
* @param xtal_freq Frequency of main crystal
|
||||||
|
*/
|
||||||
|
void rtc_init_lite(xtal_freq_t xtal_freq);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Switch CPU frequency
|
||||||
|
* @param cpu_freq new CPU frequency
|
||||||
|
*/
|
||||||
|
void rtc_set_cpu_freq(cpu_freq_t cpu_freq);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Return RTC slow clock's period
|
||||||
|
* @param cali_clk clock to calibrate
|
||||||
|
* @param slow_clk_cycles number of slow clock cycles to average
|
||||||
|
* @param xtal_freq chip's main XTAL freq
|
||||||
|
* @return average slow clock period in microseconds, Q13.19 fixed point format
|
||||||
|
*/
|
||||||
|
uint32_t rtc_slowck_cali(cali_clk_t cali_clk, uint32_t slow_clk_cycles);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Convert from microseconds to slow clock cycles
|
||||||
|
* @param time_in_us_h Time in microseconds, higher 32 bit part
|
||||||
|
* @param time_in_us_l Time in microseconds, lower 32 bit part
|
||||||
|
* @param slow_clk_period Period of slow clock in microseconds, Q13.19 fixed point format (as returned by rtc_slowck_cali).
|
||||||
|
* @param[out] cylces_h output, higher 32 bit part of number of slow clock cycles
|
||||||
|
* @param[out] cycles_l output, lower 32 bit part of number of slow clock cycles
|
||||||
|
*/
|
||||||
|
void rtc_usec2rtc(uint32_t time_in_us_h, uint32_t time_in_us_l, uint32_t slow_clk_period, uint32_t *cylces_h, uint32_t *cycles_l);
|
||||||
|
|
||||||
|
|
||||||
|
#define DEEP_SLEEP_PD_NORMAL BIT(0) /*!< Base deep sleep mode */
|
||||||
|
#define DEEP_SLEEP_PD_RTC_PERIPH BIT(1) /*!< Power down RTC peripherals */
|
||||||
|
#define DEEP_SLEEP_PD_RTC_SLOW_MEM BIT(2) /*!< Power down RTC SLOW memory */
|
||||||
|
#define DEEP_SLEEP_PD_RTC_FAST_MEM BIT(3) /*!< Power down RTC FAST memory */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Prepare for entering sleep mode
|
||||||
|
* @param deep_slp DEEP_SLEEP_PD_ flags combined with OR (DEEP_SLEEP_PD_NORMAL must be included)
|
||||||
|
* @param cpu_lp_mode for deep sleep, should be 0
|
||||||
|
*/
|
||||||
|
void rtc_slp_prep_lite(uint32_t deep_slp, uint32_t cpu_lp_mode);
|
||||||
|
|
||||||
|
|
||||||
|
#define RTC_EXT_EVENT0_TRIG BIT(0)
|
||||||
|
#define RTC_EXT_EVENT1_TRIG BIT(1)
|
||||||
|
#define RTC_GPIO_TRIG BIT(2)
|
||||||
|
#define RTC_TIMER_EXPIRE BIT(3)
|
||||||
|
#define RTC_SDIO_TRIG BIT(4)
|
||||||
|
#define RTC_MAC_TRIG BIT(5)
|
||||||
|
#define RTC_UART0_TRIG BIT(6)
|
||||||
|
#define RTC_UART1_TRIG BIT(7)
|
||||||
|
#define RTC_TOUCH_TRIG BIT(8)
|
||||||
|
#define RTC_SAR_TRIG BIT(9)
|
||||||
|
#define RTC_BT_TRIG BIT(10)
|
||||||
|
|
||||||
|
|
||||||
|
#define RTC_EXT_EVENT0_TRIG_EN RTC_EXT_EVENT0_TRIG
|
||||||
|
#define RTC_EXT_EVENT1_TRIG_EN RTC_EXT_EVENT1_TRIG
|
||||||
|
#define RTC_GPIO_TRIG_EN RTC_GPIO_TRIG
|
||||||
|
#define RTC_TIMER_EXPIRE_EN RTC_TIMER_EXPIRE
|
||||||
|
#define RTC_SDIO_TRIG_EN RTC_SDIO_TRIG
|
||||||
|
#define RTC_MAC_TRIG_EN RTC_MAC_TRIG
|
||||||
|
#define RTC_UART0_TRIG_EN RTC_UART0_TRIG
|
||||||
|
#define RTC_UART1_TRIG_EN RTC_UART1_TRIG
|
||||||
|
#define RTC_TOUCH_TRIG_EN RTC_TOUCH_TRIG
|
||||||
|
#define RTC_SAR_TRIG_EN RTC_SAR_TRIG
|
||||||
|
#define RTC_BT_TRIG_EN RTC_BT_TRIG
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enter sleep mode for given number of cycles
|
||||||
|
* @param cycles_h higher 32 bit part of number of slow clock cycles
|
||||||
|
* @param cycles_l lower 32 bit part of number of slow clock cycles
|
||||||
|
* @param wakeup_opt wake up reason to enable (RTC_xxx_EN flags combined with OR)
|
||||||
|
* @param reject_opt reserved, should be 0
|
||||||
|
* @return TBD
|
||||||
|
*/
|
||||||
|
uint32_t rtc_sleep(uint32_t cycles_h, uint32_t cycles_l, uint32_t wakeup_opt, uint32_t reject_opt);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -32,7 +32,11 @@
|
||||||
|
|
||||||
static const char* TAG = "system_api";
|
static const char* TAG = "system_api";
|
||||||
|
|
||||||
esp_err_t system_efuse_read_mac(uint8_t mac[6])
|
void system_init()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_err_t esp_efuse_read_mac(uint8_t* mac)
|
||||||
{
|
{
|
||||||
uint8_t efuse_crc;
|
uint8_t efuse_crc;
|
||||||
uint8_t calc_crc;
|
uint8_t calc_crc;
|
||||||
|
@ -64,8 +68,10 @@ esp_err_t system_efuse_read_mac(uint8_t mac[6])
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
esp_err_t system_efuse_read_mac(uint8_t mac[6]) __attribute__((alias("esp_efuse_read_mac")));
|
||||||
|
|
||||||
void IRAM_ATTR system_restart(void)
|
|
||||||
|
void IRAM_ATTR esp_restart(void)
|
||||||
{
|
{
|
||||||
esp_wifi_stop();
|
esp_wifi_stop();
|
||||||
|
|
||||||
|
@ -130,66 +136,19 @@ void IRAM_ATTR system_restart(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void system_restart(void) __attribute__((alias("esp_restart")));
|
||||||
|
|
||||||
void system_restore(void)
|
void system_restore(void)
|
||||||
{
|
{
|
||||||
esp_wifi_restore();
|
esp_wifi_restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
uint32_t esp_get_free_heap_size(void)
|
||||||
void system_deep_sleep_instant(uint64_t time_in_us)
|
|
||||||
{
|
|
||||||
u32 period, cycle_h, cycle_l;
|
|
||||||
|
|
||||||
{
|
|
||||||
struct rst_info debug_data;
|
|
||||||
memset(&debug_data, 0, sizeof(struct rst_info));
|
|
||||||
|
|
||||||
WRITE_PERI_REG(RTC_STORE0, DEEP_SLEEP_AWAKE_FLAG);
|
|
||||||
debug_data.flag = DEEP_SLEEP_AWAKE_FLAG;
|
|
||||||
|
|
||||||
system_write_rtc_mem(0, &debug_data, sizeof(struct rst_info));
|
|
||||||
}
|
|
||||||
|
|
||||||
rtc_set_cpu_freq(XTAL_AUTO, CPU_XTAL);
|
|
||||||
esp_set_deep_sleep_wake_stub(esp_wake_deep_sleep);
|
|
||||||
|
|
||||||
period = rtc_slowck_cali(CALI_RTC_MUX, 128, XTAL_AUTO);
|
|
||||||
rtc_usec2rtc(time_in_us >> 32, time_in_us, period, &cycle_h, &cycle_l);
|
|
||||||
|
|
||||||
rtc_slp_prep_lite(1, 0);
|
|
||||||
rtc_sleep(cycle_h, cycle_l, TIMER_EXPIRE_EN, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint64_t deep_sleep_time;
|
|
||||||
|
|
||||||
static void system_deep_sleep_step2(void)
|
|
||||||
{
|
|
||||||
system_deep_sleep_instant(deep_sleep_time);
|
|
||||||
}
|
|
||||||
|
|
||||||
void system_deep_sleep(uint64 time_in_us)
|
|
||||||
{
|
|
||||||
wifi_set_sleep_flag(1);
|
|
||||||
|
|
||||||
deep_sleep_time = time_in_us;
|
|
||||||
|
|
||||||
os_timer_disarm(&sta_con_timer);
|
|
||||||
os_timer_setfn(&sta_con_timer, (os_timer_func_t *)system_deep_sleep_step2, NULL);
|
|
||||||
os_timer_arm(&sta_con_timer, 100, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
uint32_t system_get_free_heap_size(void)
|
|
||||||
{
|
{
|
||||||
return xPortGetFreeHeapSize();
|
return xPortGetFreeHeapSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t system_get_free_heap_size(void) __attribute__((alias("esp_get_free_heap_size")));
|
||||||
struct rst_info *system_get_rst_info(void)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* system_get_sdk_version(void)
|
const char* system_get_sdk_version(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -21,7 +21,7 @@ void hello_task(void *pvParameter)
|
||||||
}
|
}
|
||||||
printf("Restarting now.\n");
|
printf("Restarting now.\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
system_restart();
|
esp_restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
void app_main()
|
void app_main()
|
||||||
|
|
|
@ -88,7 +88,7 @@ void app_main()
|
||||||
|
|
||||||
const int deep_sleep_sec = 10;
|
const int deep_sleep_sec = 10;
|
||||||
ESP_LOGI(TAG, "Entering deep sleep for %d seconds", deep_sleep_sec);
|
ESP_LOGI(TAG, "Entering deep sleep for %d seconds", deep_sleep_sec);
|
||||||
system_deep_sleep(1000000LL * deep_sleep_sec);
|
esp_deep_sleep(1000000LL * deep_sleep_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void obtain_time(void)
|
static void obtain_time(void)
|
||||||
|
|
|
@ -76,5 +76,5 @@ void app_main()
|
||||||
}
|
}
|
||||||
printf("Restarting now.\n");
|
printf("Restarting now.\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
system_restart();
|
esp_restart();
|
||||||
}
|
}
|
||||||
|
|
|
@ -170,7 +170,7 @@ void app_main()
|
||||||
if (err != ESP_OK) printf("Error (%d) saving run time blob to NVS!\n", err);
|
if (err != ESP_OK) printf("Error (%d) saving run time blob to NVS!\n", err);
|
||||||
printf("Restarting...\n");
|
printf("Restarting...\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
system_restart();
|
esp_restart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
vTaskDelay(200 / portTICK_RATE_MS);
|
vTaskDelay(200 / portTICK_RATE_MS);
|
||||||
|
|
Loading…
Reference in a new issue