Hello Tiago,

Do you have any expectation to add this feature to esp32c6?
I am planning my tasks and I may be better waiting for Espressif to provide
it.


Em qua., 13 de nov. de 2024 às 16:38, Alan C. Assis <acas...@gmail.com>
escreveu:

> Hi Tiago,
>
> I think the issue could be related to the GPIO RTC: the GPIO pins have
> different interruption configurations in normal mode and low power mode
> (called GPIO RTC mode).
>
> Maybe it could be the root cause of the issue, but not idea why WiFi is
> interfering on it (since it works when WiFi is not used).
>
> BR,
>
> Alan
>
> On Wed, Nov 13, 2024 at 2:11 PM Tiago Medicci Serrano <
> tiago.medi...@gmail.com> wrote:
>
> > Hi Felipe, thanks for making it clearer.
> >
> > I don't see any reason why Wi-Fi would interfere with the interruption
> > detection (that issue I solved earlier regarding the interrupt allocator
> > isn't related here). You can check if the interruption is triggered by
> > checking it on GDB. Did you check that?
> >
> > Another "quick" test would be disabling (perhaps `ifdown wlanX` would be
> > enough) the Wi-Fi before entering light-sleep.
> >
> > But, at the end of the day, Ivan stated that:
> >
> > To conclude, if you need to keep Wi-Fi connection (especially with Wi-Fi
> 6
> > > and ITWT), do not use esp_light_sleep_start) and let the system use the
> > > automatic light sleep mode, instead. In this case association with the
> AP
> > > will be maintained.
> >
> >
> > We can't assume how light sleep would work on NuttX with Wi-Fi/BT
> enabled:
> > we can't say it would work the same way. He said clearly that it isn't
> > supposed to be used like that, even on ESP-IDF. Automatic light sleep
> would
> > be more appropriate in that case.
> >
> > Best regards,
> >
> > Em qua., 13 de nov. de 2024 às 13:36, Felipe Moura Oliveira <
> > moura....@gmail.com> escreveu:
> >
> > > Hi Tiago,
> > >
> > > I realize I didn’t express myself clearly before. What I meant to say
> is
> > > that I believe it’s possible to put the MCU to sleep without modifying
> > the
> > > WiFi power manager settings. Looking at this post: https://github.com
> > > /espressif/esp-idf/issues/11550, you’ll notice that putting the MCU to
> > > sleep without managing the wireless connection will cause it to lose
> > > communication, but the MCU should still be able to wake up.
> > >
> > > I’m hesitant to fully implement the power manager at this stage
> because I
> > > really believe the issue is related to the lack of interrupt detection
> > > during sleep when WiFi is in the project.
> > >
> > > Could you check the link I sent and let me know if you really think
> it’s
> > > necessary to have the power manager active to put the MCU to sleep
> while
> > > the wireless communication drivers are still running?
> > >
> > > Em qua., 13 de nov. de 2024 às 11:26, Tiago Medicci Serrano <
> > > tiago.medi...@gmail.com> escreveu:
> > >
> > > > Hi Felipe,
> > > >
> > > > I don't think they are separate features, please check this
> > > documentation:
> > > >
> > > >
> > >
> >
> https://docs.espressif.com/projects/esp-idf/en/latest/esp32c6/api-reference/system/sleep_modes.html
> > > >
> > > > If I understood correctly, you still need PM for using light sleep
> with
> > > RF.
> > > >
> > > > Best regards,
> > > >
> > > > Em qua., 13 de nov. de 2024 às 10:36, Felipe Moura Oliveira <
> > > > moura....@gmail.com> escreveu:
> > > >
> > > > > Hi Tiago,
> > > > >
> > > > > I believe the issue isn’t related to the CONFIG_PM macro. From
> what I
> > > > > understand, it’s possible to independently put both the MCU and the
> > > WiFi
> > > > > transceiver into low-power mode.
> > > > >
> > > > > For now, I’d like to focus on putting only the MCU to sleep by
> > calling
> > > > the
> > > > > esp_light_sleep_start() function, similar to what was done here:
> > https
> > > > > ://github.com/roblatour/SolarWeatherStationII/blob
> > > > > /cdf04e0e0bd931095254a0b11b61f24d7053ff7d/main/main.c#L845
> > > > >
> > > > > As you can see in the code above, the implementation simply calls
> the
> > > > sleep
> > > > > function without handling any power manager related to WiFi, and in
> > > this
> > > > > case, the MCU can wake from sleep. However, in my implementation,
> > this
> > > > > isn’t happening. I’ve implemented wake-up via timer and button and
> > > > > validated it using a standard configuration. When using WiFi,
> though,
> > > the
> > > > > MCU isn’t receiving interrupts.
> > > > >
> > > > > I’m concerned that something similar to what happened here might be
> > > > > occurring: https://github.com/apache/nuttx/issues/13303
> > > > >
> > > > > Do you think I should investigate the configurations further, or
> > could
> > > > > there be something in NuttX that’s masking interrupts during sleep
> > > > > (possibly related to the RTC)?
> > > > >
> > > > > Em qua., 13 de nov. de 2024 às 09:45, Tiago Medicci Serrano <
> > > > > tiago.medi...@gmail.com> escreveu:
> > > > >
> > > > > > Hi Felipe,
> > > > > >
> > > > > > Please check the occurrences of `CONFIG_PM_ENABLE`
> > > > > > <
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/espressif/esp-idf/blob/2c8de044a3c61a060c70d4072d2606e216be81d4/components/esp_wifi/esp32c6/esp_adapter.c#L282
> > > > > > >
> > > > > > on ESP-IDF's Wi-Fi driver of ESP32-C6. Its counterpart in NuttX
> > would
> > > > be
> > > > > > `CONFIG_PM`
> > > > > > <
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/apache/incubator-nuttx/blob/b3727f67bee3ab1550157c1bd4101168a7689ff3/arch/risc-v/src/esp32c6/esp_wifi_adapter.c#L1544
> > > > > > >.
> > > > > > Note that `wifi_apb80m_request`
> > > > > > <
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/espressif/esp-idf/blob/cf2bdb08f4aa583a816771eb99aa2815c2434cc1/components/esp_wifi/src/wifi_init.c#L456
> > > > > > >
> > > > > > is not defined anywhere in NuttX, so I suppose `CONFIG_PM` is not
> > > > enabled
> > > > > > in your configuration.
> > > > > >
> > > > > > My suggestion: using ESP-IDF, try the Wi-Fi "as-is" (without the
> > > light
> > > > > > sleep enabled) and save the generated `sdkconfig.h`. Try the same
> > > with
> > > > > > light sleep enabled: validate its behavior/power consumption and
> > save
> > > > the
> > > > > > newer `sdkconfig.h`. Compare both to check which variables were
> > > > > introduced
> > > > > > and, then, check the Wi-Fi-related sources (especially under
> > > > > > `components/esp-wifi`
> > > > > > <
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/espressif/esp-idf/tree/cf2bdb08f4aa583a816771eb99aa2815c2434cc1/components/esp_wifi
> > > > > > >,
> > > > > > but check other occurrences outside this folder too!). The same
> > > > > > implementation should be introduced in NuttX (the one related to
> `
> > > > > > wifi_apb80m_request
> > > > > > <
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/espressif/esp-idf/blob/cf2bdb08f4aa583a816771eb99aa2815c2434cc1/components/esp_wifi/src/wifi_init.c#L456
> > > > > > >`
> > > > > > is just one of them, others may be necessary). Also, I recommend
> > > adding
> > > > > the
> > > > > > configs to `esp-hal-3rdparty/nuttx/esp32c6/include/sdkconfig.h`
> > > > > > conditionally (if NuttX's `CONFIG_PM` is defined, you define
> > > ESP-IDF's
> > > > > > related configs on it).
> > > > > >
> > > > > > I hope this helps.
> > > > > >
> > > > > > Best regards,
> > > > > >
> > > > > > Em ter., 12 de nov. de 2024 às 09:33, Felipe Moura Oliveira <
> > > > > > moura....@gmail.com> escreveu:
> > > > > >
> > > > > > > Hello Tiago.
> > > > > > >
> > > > > > > When I am using WIFI config and enabling Auto-Sleep, the mcu
> can
> > no
> > > > > > longer
> > > > > > > wake up from light sleep, so it ends up restarting because of
> WD.
> > > > > > >
> > > > > > > Em ter., 12 de nov. de 2024 às 08:47, Tiago Medicci Serrano <
> > > > > > > tiago.medi...@gmail.com> escreveu:
> > > > > > >
> > > > > > > > Hi Felipe,
> > > > > > > >
> > > > > > > > What exactly is your problem regarding light sleep and Wi-Fi?
> > > > > > > >
> > > > > > > > If I'm not mistaken, some hooks must be implemented in the
> > Wi-Fi
> > > > > driver
> > > > > > > > too. My suggestion: take a look at IDF's implementation and
> try
> > > > light
> > > > > > > sleep
> > > > > > > > with/without Wi-Fi: compare the `sdkconfig.h`
> > enabling/disabling
> > > > > light
> > > > > > > > sleep. Then, check which configs are on the Wi-Fi related
> > files.
> > > > > > > >
> > > > > > > > Looking towards hearing from you soon.
> > > > > > > >
> > > > > > > > Best regards,
> > > > > > > >
> > > > > > > > Em seg., 11 de nov. de 2024 às 17:52, Felipe Moura Oliveira <
> > > > > > > > moura....@gmail.com> escreveu:
> > > > > > > >
> > > > > > > > > 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
> > > >
> > > > > > > > > > <
> > > > > > >
> > > 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>
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > *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