|
|
@@ -21,6 +21,7 @@
|
|
|
#include "soc/rtc_cntl_reg.h"
|
|
|
#include "soc/sens_reg.h"
|
|
|
#include "soc/rtc_io_reg.h"
|
|
|
+#include "hal/misc.h"
|
|
|
#include "driver/rtc_io.h"
|
|
|
|
|
|
#include "sdkconfig.h"
|
|
|
@@ -50,12 +51,7 @@ static void hexdump(const uint32_t* src, size_t count) {
|
|
|
|
|
|
TEST_CASE("ULP FSM addition test", "[ulp]")
|
|
|
{
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
- /* Clear the RTC_SLOW_MEM region for the ULP co-processor binary to be loaded */
|
|
|
- memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
|
|
|
/* ULP co-processor program to add data in 2 memory locations using ULP macros */
|
|
|
const ulp_insn_t program[] = {
|
|
|
@@ -88,12 +84,8 @@ TEST_CASE("ULP FSM subtraction and branch test", "[ulp]")
|
|
|
{
|
|
|
assert(CONFIG_ULP_COPROC_RESERVE_MEM >= 260 && "this test needs ULP_COPROC_RESERVE_MEM option set in menuconfig");
|
|
|
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
/* Clear the RTC_SLOW_MEM region for the ULP co-processor binary to be loaded */
|
|
|
- memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
|
|
|
/* ULP co-processor program to perform subtractions and branch to a label */
|
|
|
const ulp_insn_t program[] = {
|
|
|
@@ -163,12 +155,8 @@ TEST_CASE("ULP FSM light-sleep wakeup test", "[ulp]")
|
|
|
{
|
|
|
assert(CONFIG_ULP_COPROC_RESERVE_MEM >= 260 && "this test needs ULP_COPROC_RESERVE_MEM option set in menuconfig");
|
|
|
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
/* Clear the RTC_SLOW_MEM region for the ULP co-processor binary to be loaded */
|
|
|
- memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
|
|
|
/* ULP co-processor program to perform some activities and wakeup the main CPU from deep-sleep */
|
|
|
const ulp_insn_t program[] = {
|
|
|
@@ -209,12 +197,8 @@ TEST_CASE("ULP FSM deep-sleep wakeup test", "[ulp][ulp_deep_sleep_wakeup]")
|
|
|
{
|
|
|
assert(CONFIG_ULP_COPROC_RESERVE_MEM >= 260 && "this test needs ULP_COPROC_RESERVE_MEM option set in menuconfig");
|
|
|
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
/* Clearout the RTC_SLOW_MEM region for the ULP co-processor binary to be loaded */
|
|
|
- memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
|
|
|
/* ULP co-processor program to perform some activities and wakeup the main CPU from deep-sleep */
|
|
|
const ulp_insn_t program[] = {
|
|
|
@@ -256,12 +240,8 @@ TEST_CASE("ULP FSM can write and read peripheral registers", "[ulp]")
|
|
|
/* Clear ULP timer */
|
|
|
CLEAR_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_ULP_CP_SLP_TIMER_EN);
|
|
|
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
/* Clear the RTC_SLOW_MEM region for the ULP co-processor binary to be loaded */
|
|
|
- memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
uint32_t rtc_store0 = REG_READ(RTC_CNTL_STORE0_REG);
|
|
|
uint32_t rtc_store1 = REG_READ(RTC_CNTL_STORE1_REG);
|
|
|
|
|
|
@@ -315,12 +295,8 @@ TEST_CASE("ULP FSM I_WR_REG instruction test", "[ulp]")
|
|
|
{
|
|
|
assert(CONFIG_ULP_COPROC_RESERVE_MEM >= 260 && "this test needs ULP_COPROC_RESERVE_MEM option set in menuconfig");
|
|
|
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
/* Clear the RTC_SLOW_MEM region for the ULP co-processor binary to be loaded */
|
|
|
- memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
|
|
|
/* Define the test set */
|
|
|
typedef struct {
|
|
|
@@ -393,12 +369,8 @@ TEST_CASE("ULP FSM controls RTC_IO", "[ulp][ulp_deep_sleep_wakeup]")
|
|
|
{
|
|
|
assert(CONFIG_ULP_COPROC_RESERVE_MEM >= 260 && "this test needs ULP_COPROC_RESERVE_MEM option set in menuconfig");
|
|
|
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
/* Clear the RTC_SLOW_MEM region for the ULP co-processor binary to be loaded */
|
|
|
- memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
|
|
|
/* ULP co-processor program to toggle LED */
|
|
|
const ulp_insn_t program[] = {
|
|
|
@@ -459,20 +431,12 @@ TEST_CASE("ULP FSM power consumption in deep sleep", "[ulp][ulp_deep_sleep_wakeu
|
|
|
{
|
|
|
assert(CONFIG_ULP_COPROC_RESERVE_MEM >= 4 && "this test needs ULP_COPROC_RESERVE_MEM option set in menuconfig");
|
|
|
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
/* Clear the RTC_SLOW_MEM region for the ULP co-processor binary to be loaded */
|
|
|
- memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
|
|
|
/* Put the ULP coprocessor in halt state */
|
|
|
ulp_insn_t insn = I_HALT();
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
- memcpy(&RTC_SLOW_MEM[0], &insn, sizeof(insn));
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memcpy(RTC_SLOW_MEM, &insn, sizeof(insn));
|
|
|
|
|
|
/* Set ULP timer */
|
|
|
ulp_set_wakeup_period(0, 0x8000);
|
|
|
@@ -493,12 +457,8 @@ TEST_CASE("ULP FSM timer setting", "[ulp]")
|
|
|
{
|
|
|
assert(CONFIG_ULP_COPROC_RESERVE_MEM >= 32 && "this test needs ULP_COPROC_RESERVE_MEM option set in menuconfig");
|
|
|
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
/* Clear the RTC_SLOW_MEM region for the ULP co-processor binary to be loaded */
|
|
|
- memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
|
|
|
/*
|
|
|
* Run a simple ULP program which increments the counter, for one second.
|
|
|
@@ -559,12 +519,8 @@ TEST_CASE("ULP FSM can use temperature sensor (TSENS) in deep sleep", "[ulp][ulp
|
|
|
{
|
|
|
assert(CONFIG_ULP_COPROC_RESERVE_MEM >= 260 && "this test needs ULP_COPROC_RESERVE_MEM option set in menuconfig");
|
|
|
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
/* Clear the RTC_SLOW_MEM region for the ULP co-processor binary to be loaded */
|
|
|
- memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
|
|
|
// Allow TSENS to be controlled by the ULP
|
|
|
SET_PERI_REG_BITS(SENS_SAR_TSENS_CTRL_REG, SENS_TSENS_CLK_DIV, 10, SENS_TSENS_CLK_DIV_S);
|
|
|
@@ -630,12 +586,8 @@ TEST_CASE("ULP FSM can use ADC in deep sleep", "[ulp][ulp_deep_sleep_wakeup]")
|
|
|
const int channel = 0;
|
|
|
const int atten = 0;
|
|
|
|
|
|
-#pragma GCC diagnostic push
|
|
|
-#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
|
|
-#pragma GCC diagnostic ignored "-Warray-bounds"
|
|
|
/* Clear the RTC_SLOW_MEM region for the ULP co-processor binary to be loaded */
|
|
|
- memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
-#pragma GCC diagnostic pop
|
|
|
+ hal_memset(RTC_SLOW_MEM, 0, CONFIG_ULP_COPROC_RESERVE_MEM);
|
|
|
|
|
|
#if defined(CONFIG_IDF_TARGET_ESP32)
|
|
|
// Configure SAR ADCn resolution
|