Discuss here different C compiler set ups, and compiling executables for the ESP8266
User avatar
By projectgus
#19287 I've been involved with a new project, a community-developed open source RTOS framework:

At this stage it looks similar to the Espressif-authored esp_iot_rtos_sdk, but with some significant changes under the hood:
  • Revamped build system
  • Source elements reworked to make them as compatible as possible with upstream components for easier updating & upstreaming.
  • Using a vanilla BSD license so it's easy to incorporate into both open source and commercial projects.
Current status is a building-from-source lwIP, axTLS, FreeRTOS components. lwIP is based on kadamski's esp-lwip stack.

Goal is to provide fully open source code above the MAC layer. There are some components still remaining to reach this (outlined on the issues list), but you can build working projects with it now.

It's still early days, but work is in progress and contributors are welcome. :)
User avatar
By vic
#19995 Thanks for that project! I have made only a small test project but it seems to work nicely. The standard make-based build is a real plus, no more silly interactive build script :)

I only hit two minor snags : the git submodules don't use the public github addresses, recursive fetch won't work without a github certificate, it should be https://github/com/... instead of git@github.com/... (same problem with the link in the readme), and the esp-open-sdk must be built with STANDALONE=n.

I also have a question, I tried to use a source C file in a subfolder but it wasn't picked by the make script. I took a look at the Makefile but I'm not sure how to fix this. They are strange and capricious things :mrgreen:
User avatar
By vic
#20019 I've played a bit more with this project and I have a few more questions :).

The example projects have different heap sizes configured in the FreeRTOSConfig.h file, some have 32k and some have 18k. With 18k the remaining heap after startup, as reported by xPortGetFreeHeapSize(), is only 3880 bytes, which seems really low. With 32k it is 18216 bytes which is more manageable. How do you determine the correct value ?

Regarding initialization, some functions like wifi_station_scan need to be called after complete initialization (that's after user_init is called), but the system_init_done_cb function does not seem to be available. I'm just waiting 2 seconds instead and it works, but is there something to use instead?

Sorry for all the questions :D.