More developer notes.
This commit is contained in:
parent
6f54c38e53
commit
55e8c65b8d
|
@ -2,6 +2,51 @@
|
||||||
|
|
||||||
**# # # Work in Progress # # #**
|
**# # # Work in Progress # # #**
|
||||||
|
|
||||||
|
### Changes in IDF compared to non-OS/RTOS SDK
|
||||||
|
This is a non-exhaustive list, obviously, but some key points are:
|
||||||
|
|
||||||
|
- **No more `c_types.h`**. Standard C types are finally the norm.
|
||||||
|
- `stdint.h` for all your `[u]intX_t` needs
|
||||||
|
- `stdbool.h` for bool (note `true`/`false` vs old `TRUE`/`FALSE`)
|
||||||
|
- `stddef.h` for `size_t`
|
||||||
|
|
||||||
|
- **A real C library**. All the `os_`, `ets_` and `c_` prefixes for
|
||||||
|
standard library functions are gone (except for the special case
|
||||||
|
c_getenv, for now).
|
||||||
|
|
||||||
|
- **Everything builds on at least C99 level**, with plenty of warnings
|
||||||
|
enabled. Fix the code so it doesn't produce warnings - don't turn
|
||||||
|
off the warnings! Yes, there *may* be exceptions, but they're rare.
|
||||||
|
|
||||||
|
- **`user_config.h` is no more**. All configuration is now handled
|
||||||
|
via Kconfig (`make menuconfig` to configure). From the developer
|
||||||
|
perspective, simply include `sdkconfig.h` and test the
|
||||||
|
corresponding CONFIG_YOUR_FEATURE macro. The `platform.h` header
|
||||||
|
is guaranteed to include `sdkconfig.h`, btw.
|
||||||
|
|
||||||
|
- **`user_modules.h` is also gone**. Module selection is now done
|
||||||
|
via Kconfig. Rather than adding a #define to `user_modules.h`,
|
||||||
|
add an option in `components/modules/Kconfig` of the form
|
||||||
|
`LUA_MODULE_XYZ`, and the existing `NODEMCU_MODULE()` macros
|
||||||
|
will take care of the rest. Example Kconfig entry:
|
||||||
|
```
|
||||||
|
config LUA_MODULE_XYZ
|
||||||
|
bool "Xyz module"
|
||||||
|
default "y"
|
||||||
|
help
|
||||||
|
Includes the XYZ module. Provides features X, Y and Z.
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Preemptive multithreading**. The network stack and other drivers
|
||||||
|
now run in their own threads with private stacks. This makes for
|
||||||
|
a more robust architecture, but does mean proper synchronization
|
||||||
|
*MUST* be employed between the threads. This includes between
|
||||||
|
API callbacks and main Lua thread.
|
||||||
|
|
||||||
|
- **Logical flash partitions**. Rather than hardcoding assumptions of
|
||||||
|
flash area usage, there is now an actual logical partition table
|
||||||
|
kept on the flash.
|
||||||
|
|
||||||
### NodeMCU task paradigm
|
### NodeMCU task paradigm
|
||||||
|
|
||||||
NodeMCU uses a task based approach for scheduling work to run within
|
NodeMCU uses a task based approach for scheduling work to run within
|
||||||
|
|
Loading…
Reference in New Issue