This commit fixes several issues with state handling in nvs::Page. It also adds extra consistency checks in nvs::PageManger initialization.
These changes were verified with a new long-running test ("test recovery from sudden poweroff"). This test works by repeatedly performing same pseudorandom sequence of calls to nvs_ APIs. Each time it repeats the sequence, it introduces a failure into one of flash operations (write or erase). So if one iteration of this test needs, say, 25000 flash operations, then this test will run 25000 iterations, each time introducing the failure point at different location.
📘 Setup guide for macOS
Initial version of getting started guide for macOS. Section on crosstool-NG may lack all the necessary steps, but usage of crosstool-NG on macOS is pretty well documented, so this shouldn't be a showstopper. We need to run these steps on a clean install of macOS, both with MacPorts and homebrew. I'll do this once i get a VM with macOS working.
See merge request !13
GitLab CI and sync with GitHub
This change adds GitLab CI support. Currently we pull latest version of esp-idf-template project from Github and try to compile it with esp-idf version in question.
Additional test steps will be added in the future.
This change also adds automatic push to GitHub for master branch only, if CI has passed.
To implement CI builds, I created a docker image, espressif/esp32-ci-env. I will make its Dockerfile available on Github as well.
See merge request !12
rtos: change XT_CLOCK_FREQ from 13MHz to 80MHz
Freq has been change to `80MHz` in system_init, otherwise system tick will not be accurate now.
Maybe we can config freq by menuconfig.
See merge request !8
This change adds gitlab CI support. It tests if latest master of esp-idf-template can be built with the commit of ESP-IDF in question. Currently it's a bit lax because both SDK_PATH and IDF_PATH are defined.
This change also changes components/esp32/lib submodule to point to Github over HTTPS instead of SSH, because CI server might not have its SSH keys uploaded to Github.
Add static initializers for muxes, add mutex init to vPortCPUAcquireMutex
We still have some ERROR: vPortCPUAcquireMutex: mux 0x3ffc01cc is uninitialized (0x0)! errors. I'd like to fix those by giving muxes as used in critical regions an initializer, so they can get initialized at program load. This is FreeRTOS core code, I'd like someone to review it before I commit it.
See merge request !10