As with the last commit this rolls up the follwowing, but include the various
review comments on the PR.
- **Documentation changes**. I've added the taks FAQ as a stub new Extension
developer FAQ, and split the old FAQ into a Lua Developer FAQ and a Hardware
FAQ.
- **Tasking I/F**. New `app/task/Makefile`, `app/task/task.c`,
`app/include/task/task.h` and `app/Makefile` as per previous commit. Cascade
changes to `app/driver/uart.c`, `app/include/driver/uart.h`,
`app/user/user_main.c` and `app/modules/node.c`
- **GPIO Rework** to `app/modules/gpio.c` and `pin_map.[hc]`, `platform.[hc]`
in `app/platform`
- **Other Optimisations** Move the `platform_*_exists()` from
`app/platform/common.c` to static inline declarations in `platform.h` as
this generates faster, smaller code. Move lgc.a routines out of iram0.
Having ascertained that the SDK itself has no (zero, zilch, nada) dependencies
on the standard C library, the NodeMCU linker script now puts any and all
libc functions into irom, rather than carefully picking the ones that
were used by NodeMCU some months ago. This should help keep iram free for
the things which really need to be in iram (such as ISRs).
Module creation & registration now made a lot simpler. In essence,
each module file is now self-contained and only needs a
NODEMCU_MODULE(MYNAME, "myname", myname_map, luaopen_myname);
line to both be automatically recognised by the Lua initialization
as well as honor the LUA_USE_MODULES_MYNAME #define.
This addresses the issue where a server would otherwise reject a valid
connection attempt from a rebooted node, due to the server thinking that
packet belonged to a recently closed session. By starting off the local
TCP port numbers at random* points each boot the risk of port reuse
across a reboot is significantly reduced.
*) As random as can be had via the lower 12 bits of the ccounter.
Renamed the main linker script to make it clear it is customised for NodeMCU
and not to be confused with the standard linker SDK linker scripts.
Changed to using the eagle.rom.addr.v6.ld file from the SDK.
Accessing 8bit and 16bit constants from ROM rather than RAM comes with a
performance cost, as these loads go through the load/store exception
vector. Any performance critical constants can be forced back into RAM
as RAM_CONST_ATTR.
The entry point has changed from call_user_start() to user_start_trampoline()
in order for the exception handler to be installed early enough.
The open source LWIP is broken, use espressif's liblwip.a.
Uses system_get_vdd33 instead of readvdd33.
The espressif's sdk0.9.6 beta1 (2015.02.15) release note
1、Optimize smartconfig to version v0.8;
2、Optimize AT to version 0.22.b1;
1>、Fixed bugs;
2>、Optimize the speed of transparent transmission;
3、Optimize boot to version 1.3(b3);
1>、Fix compatibility problem of dual flash ;
4、Solve problem of the large current in deep sleep;
5、Fixed problem “check mem fail”;
6、Fixed problem of UDP socket may stop listening broadcast packet after a long time running under some special router;
7、Fixed bug related to wifi_station_scan;
8、Other optimize to make the software more reliable;
* macros established to build a table of fonts which get compiled into the image
* font data is mapped to irom0 to save dram space
* quirky function to retrieve font data 4-byte aligned from irom0