mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'bugfix/ndebug_build' into 'master'
soc,sdmmc: fix build failures when NDEBUG is used See merge request idf/esp-idf!3352
This commit is contained in:
commit
bd11965f6c
@ -537,3 +537,14 @@ void __assert_func(const char *file, int line, const char *func, const char *exp
|
|||||||
ESP_LOGE(TAG, "Assert failed in %s, %s:%d (%s)", func, file, line, expr);
|
ESP_LOGE(TAG, "Assert failed in %s, %s:%d (%s)", func, file, line, expr);
|
||||||
while(1) {}
|
while(1) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void abort()
|
||||||
|
{
|
||||||
|
#if !CONFIG_ESP32_PANIC_SILENT_REBOOT
|
||||||
|
ets_printf("abort() was called at PC 0x%08x\r\n", (intptr_t)__builtin_return_address(0) - 3);
|
||||||
|
#endif
|
||||||
|
if (esp_cpu_in_ocd_debug_mode()) {
|
||||||
|
__asm__ ("break 0,0");
|
||||||
|
}
|
||||||
|
while(1) {}
|
||||||
|
}
|
||||||
|
@ -113,7 +113,7 @@ esp_err_t sdmmc_init_cid(sdmmc_card_t* card)
|
|||||||
|
|
||||||
esp_err_t sdmmc_init_csd(sdmmc_card_t* card)
|
esp_err_t sdmmc_init_csd(sdmmc_card_t* card)
|
||||||
{
|
{
|
||||||
assert(card->is_mem);
|
assert(card->is_mem == 1);
|
||||||
/* Get and decode the contents of CSD register. Determine card capacity. */
|
/* Get and decode the contents of CSD register. Determine card capacity. */
|
||||||
esp_err_t err = sdmmc_send_cmd_send_csd(card, &card->csd);
|
esp_err_t err = sdmmc_send_cmd_send_csd(card, &card->csd);
|
||||||
if (err != ESP_OK) {
|
if (err != ESP_OK) {
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <assert.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "rom/ets_sys.h"
|
#include "rom/ets_sys.h"
|
||||||
#include "rom/rtc.h"
|
#include "rom/rtc.h"
|
||||||
@ -102,6 +101,8 @@ static bool rtc_clk_cpu_freq_from_mhz_internal(int mhz, rtc_cpu_freq_t* out_val)
|
|||||||
// Current PLL frequency, in MHZ (320 or 480). Zero if PLL is not enabled.
|
// Current PLL frequency, in MHZ (320 or 480). Zero if PLL is not enabled.
|
||||||
static int s_cur_pll_freq;
|
static int s_cur_pll_freq;
|
||||||
|
|
||||||
|
static const char* TAG = "rtc_clk";
|
||||||
|
|
||||||
static void rtc_clk_32k_enable_common(int dac, int dres, int dbias)
|
static void rtc_clk_32k_enable_common(int dac, int dres, int dbias)
|
||||||
{
|
{
|
||||||
SET_PERI_REG_MASK(RTC_IO_XTAL_32K_PAD_REG, RTC_IO_X32N_MUX_SEL | RTC_IO_X32P_MUX_SEL);
|
SET_PERI_REG_MASK(RTC_IO_XTAL_32K_PAD_REG, RTC_IO_X32N_MUX_SEL | RTC_IO_X32P_MUX_SEL);
|
||||||
@ -447,7 +448,8 @@ static void rtc_clk_cpu_freq_to_pll_mhz(int cpu_freq_mhz)
|
|||||||
dbias = DIG_DBIAS_240M;
|
dbias = DIG_DBIAS_240M;
|
||||||
per_conf = 2;
|
per_conf = 2;
|
||||||
} else {
|
} else {
|
||||||
assert(false && "invalid frequency");
|
SOC_LOGE(TAG, "invalid frequency");
|
||||||
|
abort();
|
||||||
}
|
}
|
||||||
DPORT_REG_WRITE(DPORT_CPU_PER_CONF_REG, per_conf);
|
DPORT_REG_WRITE(DPORT_CPU_PER_CONF_REG, per_conf);
|
||||||
REG_SET_FIELD(RTC_CNTL_REG, RTC_CNTL_DIG_DBIAS_WAK, dbias);
|
REG_SET_FIELD(RTC_CNTL_REG, RTC_CNTL_DIG_DBIAS_WAK, dbias);
|
||||||
@ -504,7 +506,7 @@ uint32_t rtc_clk_cpu_freq_value(rtc_cpu_freq_t cpu_freq)
|
|||||||
case RTC_CPU_FREQ_240M:
|
case RTC_CPU_FREQ_240M:
|
||||||
return 240 * MHZ;
|
return 240 * MHZ;
|
||||||
default:
|
default:
|
||||||
assert(false && "invalid rtc_cpu_freq_t value");
|
SOC_LOGE(TAG, "invalid rtc_cpu_freq_t value");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -571,7 +573,7 @@ void rtc_clk_cpu_freq_to_config(rtc_cpu_freq_t cpu_freq, rtc_cpu_freq_config_t*
|
|||||||
freq_mhz = 240;
|
freq_mhz = 240;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(false && "invalid rtc_cpu_freq_t value");
|
SOC_LOGE(TAG, "invalid rtc_cpu_freq_t value");
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -685,7 +687,8 @@ void rtc_clk_cpu_freq_get_config(rtc_cpu_freq_config_t* out_config)
|
|||||||
div = 2;
|
div = 2;
|
||||||
freq_mhz = 240;
|
freq_mhz = 240;
|
||||||
} else {
|
} else {
|
||||||
assert(false && "unsupported frequency configuration");
|
SOC_LOGE(TAG, "unsupported frequency configuration");
|
||||||
|
abort();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -697,7 +700,8 @@ void rtc_clk_cpu_freq_get_config(rtc_cpu_freq_config_t* out_config)
|
|||||||
break;
|
break;
|
||||||
case RTC_CNTL_SOC_CLK_SEL_APLL:
|
case RTC_CNTL_SOC_CLK_SEL_APLL:
|
||||||
default:
|
default:
|
||||||
assert(false && "unsupported frequency configuration");
|
SOC_LOGE(TAG, "unsupported frequency configuration");
|
||||||
|
abort();
|
||||||
}
|
}
|
||||||
*out_config = (rtc_cpu_freq_config_t) {
|
*out_config = (rtc_cpu_freq_config_t) {
|
||||||
.source = source,
|
.source = source,
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <assert.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "rom/ets_sys.h"
|
#include "rom/ets_sys.h"
|
||||||
#include "rom/rtc.h"
|
#include "rom/rtc.h"
|
||||||
@ -118,7 +117,10 @@ void rtc_clk_init(rtc_clk_config_t cfg)
|
|||||||
uint32_t freq_before = old_config.freq_mhz;
|
uint32_t freq_before = old_config.freq_mhz;
|
||||||
|
|
||||||
bool res = rtc_clk_cpu_freq_mhz_to_config(cfg.cpu_freq_mhz, &new_config);
|
bool res = rtc_clk_cpu_freq_mhz_to_config(cfg.cpu_freq_mhz, &new_config);
|
||||||
assert(res && "invalid CPU frequency value");
|
if (!res) {
|
||||||
|
SOC_LOGE(TAG, "invalid CPU frequency value");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
rtc_clk_cpu_freq_set_config(&new_config);
|
rtc_clk_cpu_freq_set_config(&new_config);
|
||||||
|
|
||||||
/* Configure REF_TICK */
|
/* Configure REF_TICK */
|
||||||
|
@ -17,10 +17,12 @@
|
|||||||
#include "soc/rtc.h"
|
#include "soc/rtc.h"
|
||||||
#include "soc/rtc_cntl_reg.h"
|
#include "soc/rtc_cntl_reg.h"
|
||||||
#include "soc/timer_group_reg.h"
|
#include "soc/timer_group_reg.h"
|
||||||
#include "assert.h"
|
#include "soc_log.h"
|
||||||
|
|
||||||
#define MHZ (1000000)
|
#define MHZ (1000000)
|
||||||
|
|
||||||
|
static const char* TAG = "rtc_time";
|
||||||
|
|
||||||
/* Calibration of RTC_SLOW_CLK is performed using a special feature of TIMG0.
|
/* Calibration of RTC_SLOW_CLK is performed using a special feature of TIMG0.
|
||||||
* This feature counts the number of XTAL clock cycles within a given number of
|
* This feature counts the number of XTAL clock cycles within a given number of
|
||||||
* RTC_SLOW_CLK cycles.
|
* RTC_SLOW_CLK cycles.
|
||||||
@ -58,21 +60,27 @@ static uint32_t rtc_clk_cal_internal(rtc_cal_sel_t cal_clk, uint32_t slowclk_cyc
|
|||||||
/* Figure out how long to wait for calibration to finish */
|
/* Figure out how long to wait for calibration to finish */
|
||||||
uint32_t expected_freq;
|
uint32_t expected_freq;
|
||||||
rtc_slow_freq_t slow_freq = REG_GET_FIELD(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_ANA_CLK_RTC_SEL);
|
rtc_slow_freq_t slow_freq = REG_GET_FIELD(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_ANA_CLK_RTC_SEL);
|
||||||
uint32_t us_timer_max = 0xFFFFFFFF;
|
|
||||||
if (cal_clk == RTC_CAL_32K_XTAL ||
|
if (cal_clk == RTC_CAL_32K_XTAL ||
|
||||||
(cal_clk == RTC_CAL_RTC_MUX && slow_freq == RTC_SLOW_FREQ_32K_XTAL)) {
|
(cal_clk == RTC_CAL_RTC_MUX && slow_freq == RTC_SLOW_FREQ_32K_XTAL)) {
|
||||||
expected_freq = 32768; /* standard 32k XTAL */
|
expected_freq = 32768; /* standard 32k XTAL */
|
||||||
us_timer_max = (uint32_t) (TIMG_RTC_CALI_VALUE / rtc_clk_xtal_freq_get());
|
|
||||||
} else if (cal_clk == RTC_CAL_8MD256 ||
|
} else if (cal_clk == RTC_CAL_8MD256 ||
|
||||||
(cal_clk == RTC_CAL_RTC_MUX && slow_freq == RTC_SLOW_FREQ_8MD256)) {
|
(cal_clk == RTC_CAL_RTC_MUX && slow_freq == RTC_SLOW_FREQ_8MD256)) {
|
||||||
expected_freq = RTC_FAST_CLK_FREQ_APPROX / 256;
|
expected_freq = RTC_FAST_CLK_FREQ_APPROX / 256;
|
||||||
} else {
|
} else {
|
||||||
expected_freq = 150000; /* 150k internal oscillator */
|
expected_freq = 150000; /* 150k internal oscillator */
|
||||||
us_timer_max = (uint32_t) (TIMG_RTC_CALI_VALUE / rtc_clk_xtal_freq_get());
|
|
||||||
}
|
}
|
||||||
uint32_t us_time_estimate = (uint32_t) (((uint64_t) slowclk_cycles) * MHZ / expected_freq);
|
uint32_t us_time_estimate = (uint32_t) (((uint64_t) slowclk_cycles) * MHZ / expected_freq);
|
||||||
// The required amount of slowclk_cycles can produce in a counter TIMG a overflow error. Decrease the slowclk_cycles for fix it.
|
/* Check if the required number of slowclk_cycles may result in an overflow of TIMG_RTC_CALI_VALUE */
|
||||||
assert(us_time_estimate < us_timer_max);
|
rtc_xtal_freq_t xtal_freq = rtc_clk_xtal_freq_get();
|
||||||
|
if (xtal_freq == RTC_XTAL_FREQ_AUTO) {
|
||||||
|
/* XTAL frequency is not known yet; assume worst case (40 MHz) */
|
||||||
|
xtal_freq = RTC_XTAL_FREQ_40M;
|
||||||
|
}
|
||||||
|
const uint32_t us_timer_max = TIMG_RTC_CALI_VALUE / (uint32_t) xtal_freq;
|
||||||
|
if (us_time_estimate >= us_timer_max) {
|
||||||
|
SOC_LOGE(TAG, "slowclk_cycles value too large, possible overflow");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
/* Start calibration */
|
/* Start calibration */
|
||||||
CLEAR_PERI_REG_MASK(TIMG_RTCCALICFG_REG(0), TIMG_RTC_CALI_START);
|
CLEAR_PERI_REG_MASK(TIMG_RTCCALICFG_REG(0), TIMG_RTC_CALI_START);
|
||||||
SET_PERI_REG_MASK(TIMG_RTCCALICFG_REG(0), TIMG_RTC_CALI_START);
|
SET_PERI_REG_MASK(TIMG_RTCCALICFG_REG(0), TIMG_RTC_CALI_START);
|
||||||
|
@ -24,11 +24,11 @@
|
|||||||
|
|
||||||
#ifdef ESP_PLATFORM
|
#ifdef ESP_PLATFORM
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#define SOC_LOGE(tag, fmt, ...) ESP_LOGE(tag, fmt, ##__VA_ARGS__)
|
#define SOC_LOGE(tag, fmt, ...) ESP_EARLY_LOGE(tag, fmt, ##__VA_ARGS__)
|
||||||
#define SOC_LOGW(tag, fmt, ...) ESP_LOGW(tag, fmt, ##__VA_ARGS__)
|
#define SOC_LOGW(tag, fmt, ...) ESP_EARLY_LOGW(tag, fmt, ##__VA_ARGS__)
|
||||||
#define SOC_LOGI(tag, fmt, ...) ESP_LOGI(tag, fmt, ##__VA_ARGS__)
|
#define SOC_LOGI(tag, fmt, ...) ESP_EARLY_LOGI(tag, fmt, ##__VA_ARGS__)
|
||||||
#define SOC_LOGD(tag, fmt, ...) ESP_LOGD(tag, fmt, ##__VA_ARGS__)
|
#define SOC_LOGD(tag, fmt, ...) ESP_EARLY_LOGD(tag, fmt, ##__VA_ARGS__)
|
||||||
#define SOC_LOGV(tag, fmt, ...) ESP_LOGV(tag, fmt, ##__VA_ARGS__)
|
#define SOC_LOGV(tag, fmt, ...) ESP_EARLY_LOGV(tag, fmt, ##__VA_ARGS__)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#include "rom/ets_sys.h"
|
#include "rom/ets_sys.h"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user