Skip to content

Documentation mess #3673

Open
Open
@bjne

Description

@bjne

For several days I have spent trying to decipher the documentation to understand how to properly flash a LFS image
to the esp8266 using esptool. I understand there are multiple ways, one can place the LFS image in spiffs, one can
place it at a offset, and in a partition? This is badly documented.

in user_config.h the following (LFS related) is defined

LUA_FLASH_STORE 0x10000

Which I understand defines the default size of the LFS image if its not overridden in partition table.

NODEMCU_LFS0_PARTITION 3
NODEMCU_LFS1_PARTITION 4

I am not really able to find any documentation about what this actually does.

Running the code:

do
  local s,p={},node.getpartitiontable()
  for _,k in ipairs{'lfs_addr','lfs_size','spiffs_addr','spiffs_size'} do
    s[#s+1] ='%s = 0x%06x' % {k, p[k]}
  end
  print ('{ %s }' % table.concat(s,', '))
end

outputs the following:

{ lfs_addr = 0x07a000, lfs_size = 0x010000, spiffs_addr = 0x08a000, spiffs_size = 0x373000 }

Given this information, I try to create a lfs image:

first a compact relocatable (https://nodemcu.readthedocs.io/en/dev/compiling/) documentation is hard to understand also here:

./luac.cross -f -m 0x10000  local/fs/init.lua
Image size: 5132

Then I believe I should flash this to the 0x07a000 region:

tools/toolchains/esptool.py --port /dev/ttyUSB0 write_flash -fm dio 0x07a000 luac.out
esptool.py v2.6
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: e8:db:84:eb:a8:e4
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 2068 bytes to 2079...
Wrote 2068 bytes (2079 compressed) at 0x0007a000 in 0.2 seconds (effective 88.5 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

After resetting, serial console outputs:

Flash sig not correct: 0x00088b1e vs 0xfafaa154

Ok, so lets try to create a absolute addressed lfs image (even tho docs say:
_Note that the new NodeMCU loader uses the -f compact relocatable form and does relocation based on the Partition Table, so this option is deprecated and will be removed in future releases.)

./luac.cross -f -a 0x07a000 -s -m 0x10000  local/fs/init.lua
./luac.cross: '-e' absolute address must be valid flash address
usage: ./luac.cross [options] [filenames].

At this point I am really lost. can someone please try to clarify?
How does partition0 and partition1 relate to the lfs_addr?
How should I compile the LFS image?
How should I flash it?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions