Hello everyone,

Tiago, actually I am able to compile and run light sleep using nsh
configuration, but it's failing when I am using wifi configuration. I tried
it by myself but I cannot solve it, can you give some help please?
I push a draft to you look it easely:
https://github.com/apache/nuttx/pull/14726

You can config a work example running the following cmd:
./tools/configure.sh esp32c6-devkitc:sleep_test

This config basically is nsh + CONFIG_ESP_AUTO_SLEEP=y and
CONFIG_EXAMPLES_HELLO=y. Auto_sleep is new config done by me,

Please, change hello_main.c with the code below:

/****************************************************************************
* apps/examples/hello/hello_main.c
*/

#include <nuttx/config.h>
#include <stdio.h>
#include <stdint.h>
#include <time.h>
#include <unistd.h>
#include <pthread.h>
#include <stdlib.h>

/****************************************************************************
* Definitions
****************************************************************************/

#define NUM_THREADS 5

/****************************************************************************
* Private Data
****************************************************************************/

struct thread_info {
int thread_id;
unsigned int sleep_time;
};

/****************************************************************************
* Private Functions
****************************************************************************/

void *thread_func(void *arg)
{
struct thread_info *tinfo = (struct thread_info *)arg;
volatile uint32_t i = 0;
struct timespec ts_start, ts_end;
time_t elapsed;

// Get the start time
clock_gettime(CLOCK_MONOTONIC, &ts_start);

while (1)
{
i++;
clock_gettime(CLOCK_MONOTONIC, &ts_end);
elapsed = ts_end.tv_sec - ts_start.tv_sec;
printf("Hello, World!! [Thread %d] Iteration: %lu | Elapsed time: %ld
seconds\n",
tinfo->thread_id, i, (long)elapsed);
ts_start = ts_end;
sleep(tinfo->sleep_time);
}

return NULL;
}

/****************************************************************************
* Public Functions
****************************************************************************/

/****************************************************************************
* main
****************************************************************************/

int main(int argc, FAR char *argv[])
{
pthread_t threads[NUM_THREADS];
struct thread_info tinfo[NUM_THREADS];
int ret;

unsigned int sleep_times[NUM_THREADS] = {15, 11, 30, 70, 25};

for (int i = 0; i < NUM_THREADS; i++)
{
tinfo[i].thread_id = i + 1;
tinfo[i].sleep_time = sleep_times[i];

ret = pthread_create(&threads[i], NULL, thread_func, &tinfo[i]);
if (ret != 0)
{
printf("Error creating thread %d: %d\n", i + 1, ret);
exit(EXIT_FAILURE);
}
}
int app_ret = 0;
if (app_ret == -1) {
printf("Error executing command\n");
} else {
printf("Application finished with return code: %d\n", app_ret);
}

while (1)
{
printf("Hello, World!! [Main Thread]\n");
sleep(10);
}

return 0;
}



You will see output below:
nsh> hello
Aplicação finalizou com código de retorno: 0
Hello, World!! [Main Thread]
Hello, World!! [Thread 1] Iteração: 1 | Tempo decorrido: 0 segundos
Hello, World!! [Thread 2] It*pmu_*eração: 1 | Tempo decorrido: 0 segundos
Hello, World!! [Thread 3] Iteração: 1 | Tempo decorrido: 0 segundos
Hello, World!! [Thread 4] Iteração: 1 | Tempo decorrido: 0 segundos
Hello, World!! [Thread 5] Iteração: 1 | Tempo decorrido: 0 segundos
*pmu_*Hello, World!! [Main Thread]
Hello, World!! [Thread 2] Iteração: 2 | Tempo decorrido: 11 segundos
Hello, World!! [Thread 1] Iteração: 2 | Tempo decorrido: 16 segundos

I was able to power consumption below 1 mA when mcu is in idle mode, so it
is in light sleep.

Later, making a distclean, running wifi config and adding
CONFIG_ESP_AUTO_SLEEP=y and CONFIG_EXAMPLES_HELLO=y, you will see that the
mcu goes to sleep and not return.

Em seg., 4 de nov. de 2024 às 08:48, Tiago Medicci Serrano <
tiago.medi...@gmail.com> escreveu:

> Hi Felipe, good to hear about your progress here!
>
> These functions are ROM-defined functions. By checking the TRM, you can see
> a read-only flash partition that holds some functions (widely used
> functions, like malloc and internal functions).
>
> ets_get_cpu_frequency
> <
> https://github.com/espressif/esp-hal-3rdparty/blob/1a1545b6ffb54029259ba8691d9ee200bfda2471/components/esp_rom/esp32c6/ld/esp32c6.rom.ld#L32
> >
> is
> one of these internal functions. They are defined directly at the linker
> script.
>
> If I understood correctly, these functions are crashing when it's being
> called, right? If so, can you:
>
>    1. Share the crash dump
>    2. Use GDB and try to check where/why it fails: it may trying to access
>    some prohibited memory region or even trying to call an unregistered
>    callback.
>
> Thanks!
>
> Em sex., 1 de nov. de 2024 às 13:41, Felipe Moura Oliveira <
> moura....@gmail.com> escreveu:
>
> > Hello everyone,
> >
> > Tiago, I am trying to work with light sleep for now, after it work will
> go
> > ahead with deep sleep. To run in light sleep I don't need to change
> linker
> > so I was able to build and flash without "image" issues.
> > Now I am facing other kind of issue:
> > Some functions refers to "ets" function and I don't know how handle this,
> > for instance:
> >
> > /**
> > * @brief Get the real CPU ticks per us
> > *
> > * @return CPU ticks per us
> > */
> > uint32_t esp_rom_get_cpu_ticks_per_us(void);
> >
> > This function is necessary in the *sleep_modes.c* file. During execute
> code
> > I am facing crash when this function is called, its happen because its
> > implementation is a reference to other function:
> >
> >
> arch/risc-v/src/esp32c6/esp-hal-3rdparty/components/esp_rom/esp32c6/ld/esp32c6.rom.api.ld:46:PROVIDE
> > ( *esp_rom_get_cpu_ticks_per_us* = ets_get_cpu_frequency );
> >
> > I cannot find *ets_get_cpu_frequency*, so how should I handle it?
> >
> > PS: I have another situation like this, when I try to call
> > *esp_rom_set_cpu_ticks_per_us* function.
> >
> > Regards.
> >
> > Em ter., 29 de out. de 2024 às 13:24, Felipe Moura Oliveira <
> > moura....@gmail.com> escreveu:
> >
> > > Hello Tiago.
> > >
> > > Please look de draft here: https://github.com/apache/nuttx/pull/14548
> > >
> > > This branch will refer to the updated 3rd-party in my repo.
> > >
> > > You only need to enable PM in menuconfig and it will be enough to see
> > > changes.
> > >
> > > Em ter., 29 de out. de 2024 às 13:10, Tiago Medicci Serrano <
> > > tiago.medi...@gmail.com> escreveu:
> > >
> > >> Hi Felipe,
> > >>
> > >> Can you share your PR as a draft on GH to make it easier to check the
> > >> files
> > >> (and the build process)?
> > >>
> > >> Em ter., 29 de out. de 2024 às 12:41, Felipe Moura Oliveira <
> > >> moura....@gmail.com> escreveu:
> > >>
> > >> > Hello Tiago,
> > >> >
> > >> > I "finished" the port, but after it my esp32c6 dev kit is resetting.
> > >> Maybe
> > >> > the issue is related my changes in
> > >> > boards/risc-v/esp32c6/common/scripts/esp32c6_sections.ld. Can you
> give
> > >> some
> > >> > tips about how to go ahead?
> > >> >
> > >> > Below you can see nuttx report:
> > >> > Build:Sep 19 2022
> > >> > rst:0x7 (TG0_WDT_HPSYS),boot:0x7f (SPI_FAST_FLASH_BOOT)
> > >> > Saved PC:0x40018bea
> > >> > SPIWP:0xee
> > >> > mode:DIO, clock div:2
> > >> > load:0x40800000,len:0x61e0
> > >> > load:0x408061e0,len:0xc34
> > >> > load:0x50000000,len:0x20
> > >> > load:0x5000001e,len:0x24
> > >> > Invalid image block, can't boot.
> > >> > ets_main.c 331
> > >> > ESP-ROM:esp32c6-20220919
> > >> >
> > >> > Em ter., 29 de out. de 2024 às 08:46, Felipe Moura Oliveira <
> > >> > moura....@gmail.com> escreveu:
> > >> >
> > >> > > Hello everyone,
> > >> > >
> > >> > > I was able to solve linker issues, editing the linker by myself. I
> > >> need
> > >> > to
> > >> > > finish more than one build issue before testing it, so I will see
> > if I
> > >> > made
> > >> > > the right changes in linker.
> > >> > >
> > >> > > Em seg., 28 de out. de 2024 às 16:01, Felipe Moura Oliveira <
> > >> > > moura....@gmail.com> escreveu:
> > >> > >
> > >> > >> *Hello everyone, Tiago,*
> > >> > >>
> > >> > >> I have made progress with the build issue I was encountering and
> am
> > >> now
> > >> > >> "stuck" at what I believe is one of the final stages. I am
> > >> experiencing
> > >> > the
> > >> > >> following compilation error:
> > >> > >> LD: nuttx
> > >> > >> riscv-none-elf-ld: warning:
> > >> > /home/felipe-moura/nuttxspace/nuttx-felipe/nuttx
> > >> > >> has a LOAD segment with RWX permissions
> > >> > >> riscv-none-elf-ld:
> > >> /home/felipe-moura/nuttxspace/nuttx-felipe/staging/
> > >> > >> libarch.a(sleep_modes.o): in function
> > >> > >> `esp_set_deep_sleep_wake_stub_default_entry':
> > >> > >> sleep_modes.c:(.rtc.text.4+0x0): undefined reference to
> > >> > >> `_rtc_force_fast_end'
> > >> > >> riscv-none-elf-ld: sleep_modes.c:(.rtc.text.4+0x4): undefined
> > >> reference
> > >> > >> to `_rtc_text_start'
> > >> > >> riscv-none-elf-ld: sleep_modes.c:(.rtc.text.4+0x8): undefined
> > >> reference
> > >> > >> to `_rtc_force_fast_end'
> > >> > >> riscv-none-elf-ld: sleep_modes.c:(.rtc.text.4+0xc): undefined
> > >> reference
> > >> > >> to `_rtc_text_start'
> > >> > >> riscv-none-elf-ld:
> > >> > >>
> > >> >
> > >>
> >
> /home/felipe-moura/nuttxspace/nuttx-felipe/staging/libarch.a(sleep_cpu.o):
> > >> > >> in function `esp_sleep_cpu_retention':
> > >> > >> sleep_cpu.c:(.iram1.8+0x200): undefined reference to
> > >> > >> `rv_core_critical_regs_save'
> > >> > >> riscv-none-elf-ld: sleep_cpu.c:(.iram1.8+0x21e): undefined
> > reference
> > >> to
> > >> > >> `rv_core_critical_regs_restore'
> > >> > >> riscv-none-elf-ld: sleep_cpu.c:(.iram1.8+0x226): undefined
> > reference
> > >> to
> > >> > >> `rv_core_critical_regs_restore'
> > >> > >> make[1]: *** [Makefile:189: nuttx] Error 1
> > >> > >> make: *** [tools/Unix.mk:551: nuttx] Error 2
> > >> > >>
> > >> > >> I would greatly appreciate your assistance.
> > >> > >>
> > >> > >> Focusing on the item _rtc_text_start, I see that it is defined in
> > the
> > >> > >> file:
> > >> > >>
> > >>
> arch/risc-v/src/chip/esp-hal-3rdparty/components/esp_system/ld/esp32c6/
> > >> > >> sections.ld.in
> > >> > >>
> > >> > >> However, I am unsure how to add this file to the complete linking
> > >> > >> process. I added this file to hal_esp32c6.mk, but I received the
> > >> > >> following error:
> > >> > >> LD: nuttx
> > >> > >>
> > >> >
> > >>
> > riscv-none-elf-ld:/home/felipe-moura/nuttxspace/nuttx-felipe/arch/risc-v/
> > >> > >> src/chip/esp-hal-3rdparty/components/esp_system/ld/esp32c6/
> > >> > >> sections.ld.in.tmp:113 cannot move location counter backwards
> (from
> > >> > >> 40809800 to 40800000)
> > >> > >> make[1]: *** [Makefile:189: nuttx] Error 1
> > >> > >> make: *** [tools/Unix.mk:551: nuttx] Error 2
> > >> > >>
> > >> > >>
> > >> > >> Does anyone have any tips or suggestions that could help me move
> > >> forward
> > >> > >> with this process?
> > >> > >>
> > >> > >> Thank you in advance for your help.
> > >> > >>
> > >> > >> *Best regards,*
> > >> > >>
> > >> > >>
> > >> > >> Em sex., 25 de out. de 2024 às 12:02, Tiago Medicci Serrano <
> > >> > >> tiago.medi...@gmail.com> escreveu:
> > >> > >>
> > >> > >>> Hi Felipe,
> > >> > >>>
> > >> > >>> The RTC GPIO is a feature of the GPIO/RTC driver, so a
> substitute
> > >> for
> > >> > >>> this
> > >> > >>> function should be part
> > >> > >>> of `nuttx/arch/risc-v/src/common/espressif/esp_rtc_gpio.c`. That
> > >> being
> > >> > >>> said, you can either implement it (and define it as a macro, on
> > >> HAL) or
> > >> > >>> you
> > >> > >>> can either ignore these functions related to GPIO wakeup from
> > sleep
> > >> for
> > >> > >>> now
> > >> > >>> (using, for instance, the `#ifndef __NuttX__`). It's up to you:
> if
> > >> the
> > >> > >>> GPIO
> > >> > >>> wakeup isn't mandatory, it'd go baby steps, removing this
> feature
> > >> for
> > >> > >>> now.
> > >> > >>>
> > >> > >>> Best regards,
> > >> > >>>
> > >> > >>> Em sex., 25 de out. de 2024 às 09:33, Felipe Moura Oliveira <
> > >> > >>> moura....@gmail.com> escreveu:
> > >> > >>>
> > >> > >>> > Hello Tiago,
> > >> > >>> >
> > >> > >>> > Thank you for your assistance earlier.
> > >> > >>> >
> > >> > >>> > I would like to discuss further the necessity of the
> > >> > >>> > esp_driver_gpio/include/rtc_io.h file, which is only available
> > in
> > >> the
> > >> > >>> IDF.
> > >> > >>> >
> > >> > >>> > In sleep_modes.c, there is the following code snippet:
> > >> > >>> > esp_err_t esp_sleep_enable_ext1_wakeup_io(uint64_t io_mask,
> > >> > >>> > esp_sleep_ext1_wakeup_mode_t level_mode)
> > >> > >>> > {
> > >> > >>> > if (io_mask == 0 && level_mode > ESP_EXT1_WAKEUP_ANY_HIGH) {
> > >> > >>> > return ESP_ERR_INVALID_ARG;
> > >> > >>> > }
> > >> > >>> > // Translate bit map of GPIO numbers into the bit map of RTC
> IO
> > >> > numbers
> > >> > >>> > uint32_t rtc_gpio_mask = 0;
> > >> > >>> > for (int gpio = 0; io_mask; ++gpio, io_mask >>= 1) {
> > >> > >>> > if ((io_mask & 1) == 0) {
> > >> > >>> > continue;
> > >> > >>> > }
> > >> > >>> > if (!esp_sleep_is_valid_wakeup_gpio(gpio)) {
> > >> > >>> > ESP_LOGE(TAG, "Not an RTC IO: GPIO%d", gpio);
> > >> > >>> > return ESP_ERR_INVALID_ARG;
> > >> > >>> > }
> > >> > >>> > rtc_gpio_mask |= BIT(rtc_io_number_get(gpio));
> > >> > >>> > }
> > >> > >>> >
> > >> > >>> > I believe this code is essential for compilation. The function
> > >> > >>> > rtc_io_number_get is located at the following path in the IDF:
> > >> > >>> > components/esp_driver_gpio/include/driver/rtc_io.h.
> > >> > >>> >
> > >> > >>> > However, the esp_driver_gpio folder is not present in the
> > >> 3rd-party
> > >> > >>> > directory. In this case, what is the recommended procedure to
> > >> > proceed?
> > >> > >>> >
> > >> > >>> > Thank you again for your support.
> > >> > >>> >
> > >> > >>> > Em sex., 25 de out. de 2024 às 08:52, Tiago Medicci Serrano <
> > >> > >>> > tiago.medi...@gmail.com> escreveu:
> > >> > >>> >
> > >> > >>> > > Hi Felipe,
> > >> > >>> > >
> > >> > >>> > > `esp_private/pm_impl.h` is from the component `esp_pm` of
> > >> ESP-IDF,
> > >> > >>> which
> > >> > >>> > is
> > >> > >>> > > a driver directly. Same for
> `esp_driver_gpio/include/rtc_io.h`
> > >> > >>> (here, a
> > >> > >>> > > detail: I wasn't able to find this path on IDF, so make sure
> > you
> > >> > are
> > >> > >>> > > checking under the `release/v5.1` branch, which the HAL was
> > >> based).
> > >> > >>> The
> > >> > >>> > HAL
> > >> > >>> > > repository doesn't contain ESP-IDF drivers, which are always
> > >> > >>> implemented
> > >> > >>> > on
> > >> > >>> > > NuttX. For `esp_cpu.h`, it's already on HAL (at
> > >> > >>> > >
> > `esp-hal-3rdparty/components/esp_hw_support/include/esp_cpu.h`).
> > >> > >>> > >
> > >> > >>> > > The files under `esp-hal-3rdparty/components/esp_hw_support`
> > >> > >>> > > (`sleep_modes.c`, for instance) MAY be used to implement the
> > >> > driver.
> > >> > >>> This
> > >> > >>> > > is, mostly, a wrapping layer under the function of `esp_rom`
> > and
> > >> > >>> `hal`
> > >> > >>> > > components. However, they still may refer to ESP-IDF
> drivers.
> > >> That
> > >> > >>> being
> > >> > >>> > > said, you can check if removing such dependencies is
> possible.
> > >> We
> > >> > >>> usually
> > >> > >>> > > do that with conditional macros. A good starting point is to
> > >> check
> > >> > >>> for
> > >> > >>> > > `#ifdef __NuttX__` on these sources and headers: we use them
> > to
> > >> > >>> > remove/add
> > >> > >>> > > headers and functions that aren't available on NuttX/needed
> by
> > >> > NuttX.
> > >> > >>> > >
> > >> > >>> > > Best regards,
> > >> > >>> > >
> > >> > >>> > > Em qui., 24 de out. de 2024 às 19:46, Felipe Moura Oliveira
> <
> > >> > >>> > > moura....@gmail.com> escreveu:
> > >> > >>> > >
> > >> > >>> > > > Hello all,
> > >> > >>> > > >
> > >> > >>> > > > Tiago,
> > >> > >>> > > >
> > >> > >>> > > > I have a question regarding the porting process.
> > >> Specifically, I
> > >> > >>> need
> > >> > >>> > to
> > >> > >>> > > > add the sleep_modes.c file to the compilation process. Am
> I
> > on
> > >> > the
> > >> > >>> > right
> > >> > >>> > > > path with this approach?
> > >> > >>> > > >
> > >> > >>> > > > To achieve this, I modified the hal_esp32c6.mk file by
> > adding
> > >> > >>> > > > sleep_modes.c.
> > >> > >>> > > > However, I am facing some issues: within sleep_modes.c,
> some
> > >> > >>> #include
> > >> > >>> > > > statements reference files that are not available in the
> > >> > 3rd-party
> > >> > >>> > > > directory but are only present in the IDF. For example:
> > >> > >>> > > >
> > >> > >>> > > >    - esp_private/pm_impl.h
> > >> > >>> > > >    - esp_cpu.h
> > >> > >>> > > >    - components/esp_driver_gpio/include/rtc_io.h
> > >> > >>> > > >
> > >> > >>> > > > I need those includes because sleep_modes.c uses function
> > from
> > >> > >>> there.
> > >> > >>> > > >
> > >> > >>> > > > Could you please advise if it's possible to incorporate
> > these
> > >> IDF
> > >> > >>> > folders
> > >> > >>> > > > into the 3rd-party directory, or if that approach is not
> > >> > >>> recommended?
> > >> > >>> > > >
> > >> > >>> > > > Thank you for your assistance.
> > >> > >>> > > >
> > >> > >>> > > > Best regards,
> > >> > >>> > > >
> > >> > >>> > > > Em qua., 23 de out. de 2024 às 15:21, Tiago Medicci
> Serrano
> > <
> > >> > >>> > > > tiago.medi...@gmail.com> escreveu:
> > >> > >>> > > >
> > >> > >>> > > > > Hi,
> > >> > >>> > > > >
> > >> > >>> > > > > Just another note to guide your development: we don't
> > >> develop
> > >> > >>> > anything
> > >> > >>> > > on
> > >> > >>> > > > > `esp-hal-3rdparty`: most of the code we use from it is
> > >> derived
> > >> > >>> from
> > >> > >>> > the
> > >> > >>> > > > > path
> > >> > >>> > > > >
> > >> > >>> > > > >
> > >> > >>> > > >
> > >> > >>> > >
> > >> > >>> >
> > >> > >>>
> > >> >
> > >>
> >
> https://github.com/espressif/esp-hal-3rdparty/tree/release/v5.1.c/components/hal
> > >> > >>> > > > > (essentially, header files from
> > >> > >>> `components/hal/<chip>/include/hal`,
> > >> > >>> > > > except
> > >> > >>> > > > > for some of the sources files that use the hal functions
> > at
> > >> > >>> > > > > `components/hal` to implement some function we may use).
> > You
> > >> > can
> > >> > >>> > take a
> > >> > >>> > > > > look at the branch `
> > >> > >>> > > > >
> > >> > >>> >
> > >> >
> https://github.com/espressif/esp-hal-3rdparty/commits/release/v5.1.c`
> <https://github.com/espressif/esp-hal-3rdparty/commits/release/v5.1.c>
> > <https://github.com/espressif/esp-hal-3rdparty/commits/release/v5.1.c>
> > >> <https://github.com/espressif/esp-hal-3rdparty/commits/release/v5.1.c
> >
> > >> > <
> https://github.com/espressif/esp-hal-3rdparty/commits/release/v5.1.c
> > >
> > >> > >>> <
> > >> https://github.com/espressif/esp-hal-3rdparty/commits/release/v5.1.c>
> > >> > >>> > <
> > >> >
> https://github.com/espressif/esp-hal-3rdparty/commits/release/v5.1.c>
> > >> > >>> > > <
> > >> > >>>
> > >> https://github.com/espressif/esp-hal-3rdparty/commits/release/v5.1.c>
> > >> > >>> > > > <
> > >> > >>>
> > >> https://github.com/espressif/esp-hal-3rdparty/commits/release/v5.1.c>
> > >> > >>> > > > > <
> > >> > >>> >
> > >> https://github.com/espressif/esp-hal-3rdparty/commits/release/v5.1.c
> > >> > >
> > >> > >>> > > > and
> > >> > >>> > > > > especially the commits beginning
> > >> > >>> > > > > with faaa46ebfb37fba4250de831efbbf2862958c344 to check
> the
> > >> kind
> > >> > >>> of
> > >> > >>> > > > changes
> > >> > >>> > > > > we do in hal. Essentially, we create a wrapper layer to
> > >> make it
> > >> > >>> > > > independent
> > >> > >>> > > > > of the host OS.
> > >> > >>> > > > >
> > >> > >>> > > > > *Drivers must always be implemented on NuttX!*
> > >> > >>> > > > >
> > >> > >>> > > > > That being said, you can either 1) try to adapt the
> > >> > >>> implementation of
> > >> > >>> > > > other
> > >> > >>> > > > > devices to use the HAL functions or 2) get some
> > inspiration
> > >> on
> > >> > >>> how
> > >> > >>> > IDF
> > >> > >>> > > > > implements PM. I'd stick with the 2nd option before
> simply
> > >> > >>> trying to
> > >> > >>> > > > adapt
> > >> > >>> > > > > an existing implementation (from ESP32-C3 legacy or from
> > >> > >>> > > ESP32/ESP32-S3).
> > >> > >>> > > > >
> > >> > >>> > > > > Best regards,
> > >> > >>> > > > >
> > >> > >>> > > > > Em qua., 23 de out. de 2024 às 13:35, Felipe Moura
> > Oliveira
> > >> <
> > >> > >>> > > > > moura....@gmail.com> escreveu:
> > >> > >>> > > > >
> > >> > >>> > > > > > Hello Tiago.
> > >> > >>> > > > > >
> > >> > >>> > > > > > Thank you for clarification, I will follow your
> > >> instructions.
> > >> > >>> > > > > >
> > >> > >>> > > > > > Em qua., 23 de out. de 2024 às 13:01, Tiago Medicci
> > >> Serrano <
> > >> > >>> > > > > > tiago.medi...@gmail.com> escreveu:
> > >> > >>> > > > > >
> > >> > >>> > > > > > > Hi Felipe,
> > >> > >>> > > > > > >
> > >> > >>> > > > > > > Just complementing: use your forked version of the
> HAL
> > >> > >>> during the
> > >> > >>> > > > > > > development. As soon as you have a working version,
> > you
> > >> can
> > >> > >>> > submit
> > >> > >>> > > on
> > >> > >>> > > > > the
> > >> > >>> > > > > > > official repository.
> > >> > >>> > > > > > >
> > >> > >>> > > > > > > Best regards,
> > >> > >>> > > > > > >
> > >> > >>> > > > > > > Em qua., 23 de out. de 2024 às 12:58, Tiago Medicci
> > >> > Serrano <
> > >> > >>> > > > > > > tiago.medi...@gmail.com> escreveu:
> > >> > >>> > > > > > >
> > >> > >>> > > > > > > > Hi Felipe,
> > >> > >>> > > > > > > >
> > >> > >>> > > > > > > > Thanks for asking! You should follow the path
> using
> > >> the
> > >> > >>> > functions
> > >> > >>> > > > on
> > >> > >>> > > > > > > > esp-hal-3rdparty. You can fork the repository and
> > use
> > >> > >>> > > > > > > >
> > >> > >>> > >
> > >> `ESP_HAL_3RDPARTY_VERSION=b4c723a119344b4b71d69819019d55637fb570fd
> > >> > >>> > > > > > > > ESP_HAL_3RDPARTY_URL="g...@github.com:
> > >> > >>> > > > tmedicci/esp-hal-3rdparty.git"`
> > >> > >>> > > > > > env
> > >> > >>> > > > > > > > vars (globally or before the make command) to use
> > your
> > >> > >>> version
> > >> > >>> > of
> > >> > >>> > > > the
> > >> > >>> > > > > > > HAL.
> > >> > >>> > > > > > > >
> > >> > >>> > > > > > > > I just wanted to share some thoughts: using the
> HAL
> > >> > >>> enables us
> > >> > >>> > to
> > >> > >>> > > > > make
> > >> > >>> > > > > > > the
> > >> > >>> > > > > > > > feature available for all the Espressif devices
> > >> (please
> > >> > >>> don't
> > >> > >>> > > > bother
> > >> > >>> > > > > > with
> > >> > >>> > > > > > > > that now, as soon as you submit it, we can test
> for
> > >> the
> > >> > >>> other
> > >> > >>> > > > devices
> > >> > >>> > > > > > and
> > >> > >>> > > > > > > > eventually make any adjustments). Although it's
> > >> possible
> > >> > to
> > >> > >>> > > > > reimplement
> > >> > >>> > > > > > > > these functions on NuttX, we don't recommend that
> > >> because
> > >> > >>> of
> > >> > >>> > the
> > >> > >>> > > > > first
> > >> > >>> > > > > > > > statement (the ability to use for the other
> > devices):
> > >> in
> > >> > >>> that
> > >> > >>> > > case
> > >> > >>> > > > we
> > >> > >>> > > > > > > > wouldn't be able to support the feature. You can
> > take
> > >> a
> > >> > >>> look on
> > >> > >>> > > IDF
> > >> > >>> > > > > for
> > >> > >>> > > > > > > > some inspiration on how it's implemented.
> > >> > >>> > > > > > > >
> > >> > >>> > > > > > > > Please let me know if you have any questions.
> > >> > >>> > > > > > > >
> > >> > >>> > > > > > > > Best regards,
> > >> > >>> > > > > > > >
> > >> > >>> > > > > > > > Em qua., 23 de out. de 2024 às 12:38, Felipe Moura
> > >> > >>> Oliveira <
> > >> > >>> > > > > > > > moura....@gmail.com> escreveu:
> > >> > >>> > > > > > > >
> > >> > >>> > > > > > > >> Hello everyone,
> > >> > >>> > > > > > > >>
> > >> > >>> > > > > > > >> Our project has reached a point where we need the
> > >> Power
> > >> > >>> > Manager
> > >> > >>> > > > > > > >> functionality, which is not yet available in the
> > >> > ESP32C6.
> > >> > >>> I am
> > >> > >>> > > > > > studying
> > >> > >>> > > > > > > to
> > >> > >>> > > > > > > >> start the implementation, but I am confused about
> > the
> > >> > >>> correct
> > >> > >>> > > way
> > >> > >>> > > > to
> > >> > >>> > > > > > > >> approach this.
> > >> > >>> > > > > > > >>
> > >> > >>> > > > > > > >> There is a Power Manager implementation for the
> > >> ESP32C3,
> > >> > >>> but
> > >> > >>> > it
> > >> > >>> > > > > seems
> > >> > >>> > > > > > to
> > >> > >>> > > > > > > >> follow the legacy methodology. In fact, the file
> > >> > >>> > esp32c3_idle.c
> > >> > >>> > > is
> > >> > >>> > > > > > > located
> > >> > >>> > > > > > > >> in the path arch/risc-v/src/esp32c3-legacy. In
> this
> > >> > >>> > methodology,
> > >> > >>> > > > > > > functions
> > >> > >>> > > > > > > >> are re-implemented from the Espressif driver. For
> > >> > >>> example, the
> > >> > >>> > > > > > function
> > >> > >>> > > > > > > >> esp32c3_light_sleep_start(), which is currently
> > >> > available
> > >> > >>> in
> > >> > >>> > > > > > > >> esp32c6/esp-hal-3rdparty/.../sleep_modes.c.
> > >> > >>> > > > > > > >>
> > >> > >>> > > > > > > >> I tried using the implementations from
> > >> esp-hal-3rdparty
> > >> > to
> > >> > >>> > > develop
> > >> > >>> > > > > the
> > >> > >>> > > > > > > >> Power Manager for the ESP32C6 in NuttX, but the
> > files
> > >> > >>> still
> > >> > >>> > have
> > >> > >>> > > > > many
> > >> > >>> > > > > > > >> dependencies on items that are not present in
> > NuttX.
> > >> > >>> > > > > > > >>
> > >> > >>> > > > > > > >> My question is: Should I try to make the Power
> > >> Manager
> > >> > >>> work
> > >> > >>> > > using
> > >> > >>> > > > > the
> > >> > >>> > > > > > > >> functions in esp-hal-3rdparty, even if it
> requires
> > >> > making
> > >> > >>> > > changes
> > >> > >>> > > > to
> > >> > >>> > > > > > the
> > >> > >>> > > > > > > >> 3rd-party code? Or should I re-implement the
> > >> functions
> > >> > >>> within
> > >> > >>> > > > NuttX,
> > >> > >>> > > > > > > even
> > >> > >>> > > > > > > >> if, in this case, there are functions with the
> same
> > >> > scope
> > >> > >>> and
> > >> > >>> > > > > > > >> implementation in different files, where one is
> > >> > compiled,
> > >> > >>> and
> > >> > >>> > > the
> > >> > >>> > > > > > other
> > >> > >>> > > > > > > is
> > >> > >>> > > > > > > >> not?
> > >> > >>> > > > > > > >>
> > >> > >>> > > > > > > >>
> > >> > >>> > > > > > > >> --
> > >> > >>> > > > > > > >> *Felipe Moura de Oliveira*
> > >> > >>> > > > > > > >> *Universidade Federal de Minas Gerais*
> > >> > >>> > > > > > > >> Linkedin <
> > >> > >>> > https://www.linkedin.com/in/felipe-oliveira-75a651a0>
> > >> > >>> > > > > > > >> <https://twitter.com/FelipeMOliveir?lang=pt-br>
> > >> > >>> > > > > > > >>
> > >> > >>> > > > > > > >
> > >> > >>> > > > > > > >
> > >> > >>> > > > > > > > --
> > >> > >>> > > > > > > > Tiago Medicci Serrano
> > >> > >>> > > > > > > >
> > >> > >>> > > > > > > > Embedded Software Engineer
> > >> > >>> > > > > > > > MSc Electronics/Microelectronics
> > >> > >>> > > > > > > > m: +55 (19) 981403886 <+55+(19)+981403886>
> > >> > >>> > > > > > > > e: tiago.medi...@gmail.com
> > >> > >>> > > > > > > > a: Campinas, Brazil
> > >> > >>> > > > > > > > Follow me:
> > >> > >>> > > > > > > > <
> https://www.linkedin.com/in/tiago-serrano-924458b6
> > >
> > >> > >>> > > > > > > > <https://github.com/tmedicci>
> > >> > >>> > > > > > > >
> > >> > >>> > > > > > >
> > >> > >>> > > > > > >
> > >> > >>> > > > > > > --
> > >> > >>> > > > > > > Tiago Medicci Serrano
> > >> > >>> > > > > > >
> > >> > >>> > > > > > > Embedded Software Engineer
> > >> > >>> > > > > > > MSc Electronics/Microelectronics
> > >> > >>> > > > > > > m: +55 (19) 981403886 <+55+(19)+981403886>
> > >> > >>> > > > > > > e: tiago.medi...@gmail.com
> > >> > >>> > > > > > > a: Campinas, Brazil
> > >> > >>> > > > > > > Follow me:
> > >> > >>> > > > > > > <https://www.linkedin.com/in/tiago-serrano-924458b6
> >
> > >> > >>> > > > > > > <https://github.com/tmedicci>
> > >> > >>> > > > > > >
> > >> > >>> > > > > >
> > >> > >>> > > > > >
> > >> > >>> > > > > > --
> > >> > >>> > > > > > *Felipe Moura de Oliveira*
> > >> > >>> > > > > > *Universidade Federal de Minas Gerais*
> > >> > >>> > > > > > Linkedin <
> > >> > https://www.linkedin.com/in/felipe-oliveira-75a651a0
> > >> > >>> >
> > >> > >>> > > > > > <https://twitter.com/FelipeMOliveir?lang=pt-br>
> > >> > >>> > > > > >
> > >> > >>> > > > >
> > >> > >>> > > > >
> > >> > >>> > > > > --
> > >> > >>> > > > > Tiago Medicci Serrano
> > >> > >>> > > > >
> > >> > >>> > > > > Embedded Software Engineer
> > >> > >>> > > > > MSc Electronics/Microelectronics
> > >> > >>> > > > > m: +55 (19) 981403886 <+55+(19)+981403886>
> > >> > >>> > > > > e: tiago.medi...@gmail.com
> > >> > >>> > > > > a: Campinas, Brazil
> > >> > >>> > > > > Follow me:
> > >> > >>> > > > > <https://www.linkedin.com/in/tiago-serrano-924458b6>
> > >> > >>> > > > > <https://github.com/tmedicci>
> > >> > >>> > > > >
> > >> > >>> > > >
> > >> > >>> > > >
> > >> > >>> > > > --
> > >> > >>> > > > *Felipe Moura de Oliveira*
> > >> > >>> > > > *Universidade Federal de Minas Gerais*
> > >> > >>> > > > Linkedin <
> > >> https://www.linkedin.com/in/felipe-oliveira-75a651a0>
> > >> > >>> > > > <https://twitter.com/FelipeMOliveir?lang=pt-br>
> > >> > >>> > > >
> > >> > >>> > >
> > >> > >>> > >
> > >> > >>> > > --
> > >> > >>> > > Tiago Medicci Serrano
> > >> > >>> > >
> > >> > >>> > > Embedded Software Engineer
> > >> > >>> > > MSc Electronics/Microelectronics
> > >> > >>> > > m: +55 (19) 981403886 <+55+(19)+981403886>
> > >> > >>> > > e: tiago.medi...@gmail.com
> > >> > >>> > > a: Campinas, Brazil
> > >> > >>> > > Follow me:
> > >> > >>> > > <https://www.linkedin.com/in/tiago-serrano-924458b6>
> > >> > >>> > > <https://github.com/tmedicci>
> > >> > >>> > >
> > >> > >>> >
> > >> > >>> >
> > >> > >>> > --
> > >> > >>> > *Felipe Moura de Oliveira*
> > >> > >>> > *Universidade Federal de Minas Gerais*
> > >> > >>> > Linkedin <
> https://www.linkedin.com/in/felipe-oliveira-75a651a0>
> > >> > >>> > <https://twitter.com/FelipeMOliveir?lang=pt-br>
> > >> > >>> >
> > >> > >>>
> > >> > >>
> > >> > >>
> > >> > >> --
> > >> > >> *Felipe Moura de Oliveira*
> > >> > >> *Universidade Federal de Minas Gerais*
> > >> > >> Linkedin <https://www.linkedin.com/in/felipe-oliveira-75a651a0>
> > >> > >> <https://twitter.com/FelipeMOliveir?lang=pt-br>
> > >> > >>
> > >> > >
> > >> > >
> > >> > > --
> > >> > > *Felipe Moura de Oliveira*
> > >> > > *Universidade Federal de Minas Gerais*
> > >> > > Linkedin <https://www.linkedin.com/in/felipe-oliveira-75a651a0>
> > >> > > <https://twitter.com/FelipeMOliveir?lang=pt-br>
> > >> > >
> > >> >
> > >> >
> > >> > --
> > >> > *Felipe Moura de Oliveira*
> > >> > *Universidade Federal de Minas Gerais*
> > >> > Linkedin <https://www.linkedin.com/in/felipe-oliveira-75a651a0>
> > >> > <https://twitter.com/FelipeMOliveir?lang=pt-br>
> > >> >
> > >>
> > >
> > >
> > > --
> > > *Felipe Moura de Oliveira*
> > > *Universidade Federal de Minas Gerais*
> > > Linkedin <https://www.linkedin.com/in/felipe-oliveira-75a651a0>
> > > <https://twitter.com/FelipeMOliveir?lang=pt-br>
> > >
> >
> >
> > --
> > *Felipe Moura de Oliveira*
> > *Universidade Federal de Minas Gerais*
> > Linkedin <https://www.linkedin.com/in/felipe-oliveira-75a651a0>
> > <https://twitter.com/FelipeMOliveir?lang=pt-br>
> >
>


-- 
*Felipe Moura de Oliveira*
*Universidade Federal de Minas Gerais*
Linkedin <https://www.linkedin.com/in/felipe-oliveira-75a651a0>
<https://twitter.com/FelipeMOliveir?lang=pt-br>

Reply via email to