Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add map ids for flash sizes 32m-c2, 64m, 128m in user_rf_cal_sector_s… #1529

Merged
merged 1 commit into from
Oct 13, 2016

Conversation

devsaurus
Copy link
Member

Fixes #1390.

  • This PR is for the dev branch rather than for master.
  • This PR is compliant with the other contributing guidelines as well (if not, please describe why).
  • I have thoroughly tested my contribution.

Short after adding support for 64Mbit and 128Mbit flashes with #1367, the update to SDK 1.5.4.1 presumably broke them again when the rf_cal sector was introduced. This PR adds the missing rf_cal handling for 64m and 128m flash layouts.
I can't test the code for any improvement on these devices due to a lack of hardware, but expect that issues with new module designs like the WEMOS D1 mini pro will show up in the near future. Would be great if someone with a 16 Mbyte module could test drive this patch. Otherwise I'll do it myself once hardware is at my desk.

Note my clumsy approach to extend the flash_size_map enum in user_interface.h. I'd be happy to swap it against a more elegant method.

@marcelstoer marcelstoer added this to the Post-1.5.4.1-II milestone Oct 13, 2016
@marcelstoer marcelstoer merged commit 101eb20 into nodemcu:dev Oct 13, 2016
@devsaurus devsaurus deleted the 64m_128m branch October 13, 2016 17:59
@devsaurus
Copy link
Member Author

Finally got the Wemos D1 mini pro with 16 MByte flash.

esptool.py erase_flash
esptool.py -b 460800 write_flash -fm qio 0x00000 bin/0x00000.bin 0x10000 bin/0x10000.bin

Current dev with default modules starts without issues, takes ages to format and finally succeeds ✌️

Formatting file system. Please wait...

NodeMCU 1.5.4.1 build 20161026-dev powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32)
lua: cannot open init.lua
> =file.fsinfo()
15398850    0   15398850

@vkalenic
Copy link

And I did it too! :)
I have two D1 mini pro and now I can use them!

The main goal was to use simple prepared BIN from nodemcu-build.com. I am not so big expert in this. :)
I tried to insert as much modules as I could for my research (and shields I have). My result is 17 modules (7 is default)
Adding JSON and/or Websocket modules crashed D1 device after reset. It was looped and led blinked.
But I can guess it could be also because of size of BIN. Now it is 500'059 bytes (float). Any bigger ones was looped after reset.

esptool.py --port COM3 erase_flash
esptool.py --port COM3 write_flash 0x0 nodemcu-dev-17-modules-2016-10-29-09-34-33-float.bin 
NodeMCU custom build by frightanic.com
    branch: dev
    commit: 9db07783f4715c1a25cc9201632b264227f5072c
    SSL: false
    modules: bit,bme280,dht,file,gpio,http,i2c,net,node,ow,rotary,spi,tmr,u8g,uart,wifi,ws2812
 build  built on: 2016-10-29 09:33
 powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32)
lua: cannot open init.lua

Total : 15336602 bytes
Used  : 0 bytes
Remain: 15336602 bytes

@marcelstoer marcelstoer mentioned this pull request Nov 10, 2016
3 tasks
marcelstoer added a commit that referenced this pull request Dec 1, 2016
* add u8g.fb_rle display

* move comm drivers to u8g_glue.c

* disable fb_rle per default

* implement file.size for spiffs (#1516)

Another bug squashed!

* Fix start-up race between UART & start_lua. (#1522)

Input during startup (especially while doing initial filesystem format)
ran the risk of filling up the task queue, preventing the start_lua task
from being queued, and hence NodeMCU would not start up that time.

* Reimplemented esp_init_data_default.

To work around the pesky "rf_cal[0] !=0x05" hang when booting on a chip
which doesn't have esp_init_data written to it.

It is no longer possible to do the writing of the esp_init_data_default
from within nodemcu_init(), as the SDK now hangs long before it gets
there.  As such, I've had to reimplement this in our user_start_trampoline
and get it all done before the SDK has a chance to look for the init data.
It's unfortunate that we have to spend IRAM on this, but I see no better
alternative at this point.

* Replace hardcoded init data with generated data from SDK

The esp_init_data_default.bin is now extracted from the SDK (and its
patch file, if present), and the contents are automatically embedded
into user_main.o.

* Rework flashing instructions

Clarifies issues around SDK init data and hopefully clears up some
confusion, when paired with the esp_init_data_default changes in
NodeMCU.

* Fix typo

* Fixes the gpio.serout problem from #1534 (#1535)

* Fix some issues in gpio.serout
* Minor cleanup

* fix dereferencing NULL pointer in vfs_errno() (#1539)

* add map ids for flash sizes 32m-c2, 64m, 128m in user_rf_cal_sector_set() (#1529)

* Somfy/TELIS driver (#1521)

* Reduced LUAL_BUFFERSIZE to 256. Should free up some stack (#1530)

* avoid task queue overrun for serial input (#1540)

Thank you.

* Increase irom0_0_seg size for PR build

* Improve reliability of FS detection. (#1528)

* Version to make filesystem detection more reliable
* Improve bad fs detection

* Version of printf that doesn't suffer from buffer overflows (#1564)

* Small improvement to http client (#1558)

* Remove luaL_buffer from file_g_read() (#1541)

* remove luaL_buffer from file_g_read()
- avoid memory leak when function gets terminated by lua_error
- skip scanning for end_char when reading until EOF
* attempt to free memory in any case

* Change HTTP failures from debug to error messages (#1568)

* Change HTTP failures from debug to error messages

* Add tag to HTTP error messages

* Create macro for error msg and improve dbg msg

* Add ssd1306_128x32 for U8G (#1571)

* Update CONTRIBUTING.md

* Add support to mix ws2812.buffer objects.  (#1575)

* Add load/dump/mix/power operations on the buffer object
* Calculate the pixel value in mix and then clip to the range.
* Fixed the two wrong userdata types
* Added a couple more useful methods
* Add support for shifting a piece of the buffer.
* Fix a minor bug with offset shifts

* Update to the wifi module (#1497)

* Removed inline documentation for several functions and update comments
Since documentation is now part of the repository, the inline
documentation just adds to the already huge wifi.c

* Wifi module: add new functionality, update documentation

Functions Added:
wifi.getdefaultmode(): returns default wifi opmode
wifi.sta.apchange(): select alternate cached AP
wifi.sta.apinfo(): get cached AP list 
wifi.sta.aplimit(): set cached AP limit
wifi.sta.getapindex(): get index of currently configured AP
wifi.sta.getdefaultconfig(): get default station configuration
wifi.ap.getdefaultconfig(): get default AP configuration

functions modified:
wifi.setmode: saving mode to flash is now optional
wifi.sta.config: now accepts table as an argument and save config to
flash is now optional
wifi.sta.getconfig: added option to return table
wifi.ap.config: save config to flash is now optional
wifi.ap.getconfig: added option to return table

Documentation changes:
- Modified documentation to reflect above changes
- Removed unnecessary inline documentation from `wifi.c` 
- Updated documentation for `wifi.sta.disconnect`to address issue #1480 
- Fixed inaccurate documentation for function `wifi.sleeptype`
- Added more details to `wifi.nullmodesleep()`

* Move function `wifi.sleeptype()` to `wifi.sta.sleeptype()`

* Fixed problem where wifi.x.getconfig() returned invalid strings when
ssid or password were set to maximum length.

* fix error in documentation for `wifi.sta.getapindex`

* Renamed some wifi functions
wifi.sta.apinfo -> getapinfo
wifi.sta.aplimit -> setaplimit 
wifi.sta.apchange -> changeap

also organized the wifi_station_map array

* Make the MQTT PING functionality work better. (#1557)

Deal with flow control stopped case

* Implement object model for files (#1532)

* Eus channelfix (#1583)

Squashed commits included:

Bug fixes and final implementation
- Added Content-Length: 0 to all headers
- Endpoint name checks not using trailing space so cache-busting techniques can be used (i.e., append a nonce to the URL)
- Track when connecting so APList scan doesn't take place during (which changes the channel)
- More debugging output added to assist in tracking down some issues

Added /status.json endpoint for phone apps/XHR to get JSON response

Station Status caching for wifi channel workaround + AJAX/CORS
- During checkstation poll, cache the last station status
- Shut down the station if status = 2,3,4 and channel is different than SoftAP
- Add Access-Control-Allow-Origin: * to endpoint responses used by a service
- Add a /setwifi GET endpoint for phone apps/XHR to use (same parameters as /update endpoint). Returns a JSON response containing chip id and status code.
- Add handler for OPTIONS verb (needed for CORS support)

Wi-Fi Channel Issue Workaround
- Do a site survey upon startup, set SoftAP channel to the strongest rssi's channel
- Compare successful station connect channel to SoftAP's. If different, then defer the Lua success callback to the end. Shut down Station and start the SoftAP back up with original channel.
- After the 10 second shutdown timer fires, check to see if success callback was already called. If not, then call it while starting the Station back up.

HTTP Response and DNS enhancements
- If DNS's UDP buffer fills up, keep going as non-fatal. It's UDP and not guaranteed anyways. I've seen this occur when connecting a PC to the SoftAP and every open program tries to phone home at the same time, overwhelming the EUS DNS server.
- Support for detecting/handling pre-gzipped `enduser_setup.html` (and `http_html_backup`) payload. Nice for keeping the size of the `state->http_payload_data` as small as possible (also makes minimization not as critical)
- Corrected misuse of HTTP 401 response status (changed one occurrence to 400/Bad Request, and changed another to 405/Method Not Allowed)

* Normalized formatting (tabs-to-spaces)
* Added documentation
* Corrected misuse of strlen for binary (gzip) data.
* Added NULL check after malloc

* fix vfs_lseek() result checking in enduser_setup and clarify SPIFFS_lseek() return value (#1570)

* Fix link

* Overhaul flashing docs once again (#1587)

* Add chapter about determine flash size plus small fixes
* Rewrite esptool.py chapter, move flash size chapter to end

* i2c - allow slave stretching SCL (just loop and check) (#1589)

* Add note on dev board usage of SPI bus 0 (#1591)

* Turn SPI busses note to admonition note

* support for custom websocket headers (#1573)

Looks good to me. Thank you.

Also:
 - allow for '\0's in received messages

* add client:config for setting websocket headers

Also:
 - headers are case-insensitive now

* fix docs

* fix typo

* remove unnecessary luaL_argcheck calls

* replace os_sprintf with simple string copy

* Handle error condition in file.read() (#1599)

* handle error condition in file.read()

* simplify loop initialization

* Fix macro as suggested in #1548

* Extract and hoist net receive callbacks

This is done to avoid the accidental upval binding

* Fix typo at rtctime.md

rtctime.dsleep -> rtctime.dsleep_aligned
@crassmok
Copy link

crassmok commented Dec 4, 2016

Hello,
I deleted the D1 mini Pro with the command:

Sudo python ./esptool.py --port / dev / ttyUSB0 erase_flash

Result: ok

Then I executed the following command:

Sudo python ./esptool.py --port / dev / ttyUSB0 -b 921600 write_flash -ff 80m -fm qio -fs 4m 0x0 ~ / Downloads / nodemcu-dev-12-modules-2016-12-04-17-19- 39-float.bin 0x7c000 ~ / Documents / Esp8266 / esp_init_data_default.bin

Result:

Esptool.py v1.3-dev
Connecting ...
Running Cesanta flasher stub ...
Flash params set to 0x000f
Writing 483328 @ 0x0 ... 483328 (100%)
Wrote 483328 bytes at 0x0 in 7.3 seconds (527.2 kbit / s) ...
Writing 4096 @ 0x7c000 ... 4096 (100%)
Wrote 4096 bytes at 0x7c000 in 0.1 seconds (325.9 kbit / s) ...
Leaving ...

Then I restarted ESPlorer. But it does not work after pressing Reset

The ESPlorer console displays:

Please, reset module or continuous.
0 ~? 4 ! ? A? OAE e ? OAE ? q ,> )! J9 ! 1 ~ 1]!
M 0 ~ 1<unk>

@djphoenix
Copy link
Contributor

djphoenix commented Dec 4, 2016

Can you see system bootup logs?
In ESPlorer: set baudrate 74880, uncheck "Autodetect firmware" on "Settings" tab, and re-open port, then reset board. You will see something like this:

PORT OPEN 74880

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 24684, room 16 
tail 12
chksum 0xd8
ho 0 tail 12 room 4
load 0x3ffe8000, len 2204, room 12 
tail 0
chksum 0x04
load 0x3ffe889c, len 8, room 8 
tail 0
chksum 0x88
csum 0x88
rf cal sector: 1019
rf[112] ... garbage symbols ...

If it OK, switch baudrate back to 115200 and try again. You should see something about NodeMCU bootup.

@crassmok
Copy link

crassmok commented Dec 4, 2016 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants