Skip to content

MicroPython on the ESP32-D2WD (2MiB) #4986

Description

@zrecore

In case anyone else is interested, I've managed to mod the source and a partitions.csv file to get MicroPython and its filesystem working on an ESP32-D2WD, which only as 2MiB of internal Flash, not 4MiB.

Modded ports/esp32/modules/flashbdev.py, ports/esp32/modesp.c, and ports/esp32/partitions.csv
Screenshot from 2019-08-07 03-15-20
Screenshot from 2019-08-07 03-15-33
Screenshot from 2019-08-07 03-16-09

I would recommend we not hard-code things to 0x200000 anymore, as Espressif offers 2MiB internal SPI flash chips. Perhaps we rework these changes a bit to make the built process account for flash user start addresses lower than 0x200000?

Activity

  1. nevercast commented on Aug 7, 2019

    @nevercast
    Contributor

    Nice one!

    I agree that constants hurt. I'm starting to think it's becoming more and more preferable to have board configs for ESP32. We can still use sdkconfig if we make the ESP32 port an ESP IDF component and use the KConfig system.

    Then once we have a good place for them we can start moving this constants out to various configs.

  2. zrecore commented on Aug 7, 2019

    @zrecore
    ContributorAuthor

    See pull request #4987

  3. tcpipchip commented on Aug 9, 2019

    @tcpipchip

    I followed the process, but my NINA W102 (2MB flash) is resetting!
    Can you inform me where address to burn those 3 bin files created ? (application, partition and bootloader) if i use flash tools ?

  4. zrecore commented on Aug 9, 2019

    @zrecore
    ContributorAuthor

    I followed the process, but my NINA W102 (2MB flash) is resetting!
    Can you inform me where address to burn those 3 bin files created ? (application, partition and bootloader) if i use flash tools ?

    @tcpipchip when make is run, firmware.bin will be generated. Please see the following instructions.

    With the changes shown in the PR, you will need to set the env variables.

    Go into the /ports/esp32 folder.
    (Replace /dev/ttyUSB0 with your actual port.)

    if using a makefile which imports Makefile... adjust/add the following

    PORT = /dev/ttyUSB0
    FLASH_MODE = dio
    FLASH_FREQ = 40m
    ## if using a 2MiB ESP32 board
    FLASH_SIZE = 2MB
    FLASH_USER_START = 0x120000 # Defaults to 0x200000 address if not provided
    FLASH_STORAGE_PARTITION_SIZE = 0xA0000 # 640MiB max. Defaults to 0x200000 if not provided (2MiB partition on 4MiB Flash ESP32 boards)
    PART_SRC = partitions-2MiB.csv # Use the custom partitions CSV for 2MiB devices
    
    

    or .envrc if using direnv

    # .envrc file
    
    export ESPIDF="$HOME/esp-idf"
    export FLASH_SIZE="2MB"
    export FLASH_MODE="dio"
    export FLASH_FREQ="40m"
    export FLASH_USER_START=0x120000
    export FLASH_STORAGE_PARTITION_SIZE=0xA0000
    export PART_SRC="partitions-2MiB.csv"
    

    Run make clean then make

    Before flashing, erase the flash, then flash the firmware.

    esptool.py -p /dev/ttyUSB0 erase_flash
    esptool.py -p /dev/ttyUSB0 write_flash -z 0x1000 build/firmware.bin
    
  5. tcpipchip commented on Aug 9, 2019

    @tcpipchip

    Thanks to the feedback @zrecore

    And those 3 files
    ports/esp32/modules/flashbdev.py, ports/esp32/modesp.c, and ports/esp32/partitions.csv

    Still Need to modify too ?

  6. zrecore commented on Aug 9, 2019

    @zrecore
    ContributorAuthor

    Thanks to the feedback @zrecore

    And those 3 files
    ports/esp32/modules/flashbdev.py, ports/esp32/modesp.c, and ports/esp32/partitions.csv

    Still Need to modify too ?

    @tcpipchip You can see all file changes in the Pull Request, see https://github.com/micropython/micropython/pull/4987/files

  7. tcpipchip commented on Aug 10, 2019

    @tcpipchip

    Good Morning!!!!

    Now NINA W102 is running Micropython!!!! Thanks @zrecore

    You are the best!!!!!!!!!!!!!!!

    Btw we ported the AT COMMANDS to 2Mb ESP32 too!

    Did you do that too ?

    image

  8. zrecore commented on Aug 10, 2019

    @zrecore
    ContributorAuthor
  9. tcpipchip commented on Aug 11, 2019

    @tcpipchip

    Zrecore

    Using 2mb version.Did you have problems with MQTT with certifications ?

    Looks that not works!

    Mine is reseting when try to open the MQTT with certifications...

  10. tcpipchip commented on Aug 11, 2019

    @tcpipchip

    image

  11. tcpipchip commented on Aug 17, 2019

    @tcpipchip

    Hi, the behavior of your esp32 is going well using 2mb ? Mine is very strange, sometimes not boot, or not get wifi, or not open tcp sockets

  12. zrecore commented on Aug 17, 2019

    @zrecore
    ContributorAuthor
  13. tcpipchip commented on Aug 17, 2019

    @tcpipchip

    Yes! A lot of problems! I aborted to use it!

  14. 12 remaining items

  15. zrecore commented on Aug 24, 2019

    @zrecore
    ContributorAuthor

    @tcpipchip for every issue you find, would you mind documenting:

    • What happened
    • What you expected
    • How to reproduce the issue
  16. dpgeorge commented on Sep 10, 2019

    @dpgeorge
    Member

    The D2WD is now supported by the GENERIC_D2WD board, via commit 80d37d9

  17. tcpipchip commented on Sep 10, 2019

    @tcpipchip

    i will try soon to see if solve the MQTT access with 3 certifications error

  18. tcpipchip commented on Sep 10, 2019

    @tcpipchip

    with this patches now resets my NINA W102 (enter a reset loop)
    can you inform me the correct sequence now to build micropython ?

    I had followed this that worked good https://www.microdev.it/wp/en/2018/08/08/esp32-micropython-compiling-for-esp32/

  19. zrecore commented on Sep 10, 2019

    @zrecore
    ContributorAuthor

    @tcpipchip I'll do my best to help you, but please create a new GitHub issue for the problem.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions