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>