Firmware release 1.7.3.b1



  • @peekay123 I have seen crashes after about 10000 rounds = 10 MBytes. Just let it run. The speed is not so much in my interest. Tomorrow I'll give it a try too.



  • @robert-hh, made minor adjustments to get it to work with latest firmware:

    import machine
    import os
    import utime
    import gc
    from machine import SD
    
    sd = SD()
    os.mount(sd, '/sd')
    
    # check the content
    os.listdir('/sd')
    
    f = open('/sd/test', 'a')
    t1 = utime.ticks_ms()
    ttot = 0
    n = 0
    while True:
    
    #    print('about to initialize buffer')
        k = bytearray(1024)
    #    print('about to write to file')
        f.write(k)
    #    print('about to flush to file')
        f.flush()
        t2 = utime.ticks_ms()
    #    print("I'm done ", (t2-t1))
        ttot = (ttot + (t2 - t1)) /2
        gc.collect()
        n += 1
        print("Round", n, ", ", ttot, "ms \n\r", end="")
        t1 = utime.ticks_ms()
    

    I calculate a running average for the write time. The code runs without errors. On the first run where the file is created, after Round 1888 the average time is 37.71667 ms. I break, hard reset and run again without erasing the file and get the same results (Round 1340 , 37.70892 ms). I noticed that the average jumps up to 46ms at time but that may be due to the gccollect() time. I adjusted the code to reset the time AFTER the gccollect and print statements (see above)

    At no time did I get an error. I ran the tests with an 8GB Class 10 microSD formatted with FAT32. I am letting the test run a while to see if anything changes.

    ... after letting it run for a while, the output was Round 143048 , 35.17431 ms and the resulting file was 146MB in size. :)



  • @robert-hh, thanks for the code. I'll get it to work with the expansion board. I only found out about the new firmware version when I ran the updater.



  • @peekay123 Hello, Here's the little script, which by the way is the one @this.wiederkehr was using, with minor tweaks.

    import machine
    import os
    import utime
    import gc
    
    sd = machine.SD()
    os.mount(sd, '/sd')
    
    f = open('/sd/test', 'a')
    t1 = utime.ticks_ms()
    n = 0
    while True:
    
    #    print('about to initialize buffer')
        k = bytearray(1024)
    #    print('about to write to file')
        f.write(k)
    #    print('about to flush to file')
        f.flush()
        t2 = utime.ticks_ms()
    #    print("I'm done ", (t2-t1))
        t1 = t2
        gc.collect()
        n += 1
        print("Round", n, "\r", end="")
    

    I did not see that there is a version 1.7.3.b2



  • Firmware 1.7.3.b2 seems to be working well now. @robert-hh, can you share the SD test code so I can run it myself?



  • @jmarcelino Good point! Thanks, it's all good now.



  • @jellium
    Did you do git submodule update --init after cloning the pycom-esp-idf?



  • @daniel said in Firmware release 1.7.3.b1:

    If you want to build the firmware from sources, check out this repo: https://github.com/pycom/pycom-micropython-sigfox

    I have followed the instructions (install the Espressif ESP32 toolchain, add the binaries to PATH, add pycom-esp-idf to PATH as IDF_PATH, build the mpy-cross compiler) and face the following error after make BOARD=LOPY -j5 TARGET=boot:

    LINK build/LOPY_868/release/bootloader/bootloader.elf
    xtensa-esp32-elf-gcc -nostdlib -Wl,-Map=build/LOPY_868/release/bootloader/bootloader.map -Wl,--no-check-sections -u call_user_start_cpu0 -Wl,-static -Wl,--undefined=uxTopUsedPriority -Wl,--gc-sections -T esp32.bootloader.ld -T esp32.rom.ld -T esp32.peripherals.ld -T esp32.bootloader.rom.ld -Wl,--start-group -Lbootloader/lib -Lbootloader -Lbuild/LOPY_868/release/bootloader -L/home/jelle/Dev/Pycom/pycom-esp-idf/components/esp32/lib -Lbootloader -llog -lcore -lbootloader_support -lspi_flash -lsoc -lmicro-ecc build/LOPY_868/release/bootloader/bootloader.a -Wl,--end-group -Wl,-EL -o build/LOPY_868/release/bootloader/bootloader.elf
    /opt/espressif/esp32/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lcore
    collect2: error: ld returned 1 exit status
    application.mk:348: recipe for target 'build/LOPY_868/release/bootloader/bootloader.elf' failed
    make: *** [build/LOPY_868/release/bootloader/bootloader.elf] Error 1
    

    Any idea? Thanks for your help.



  • @daniel Thanks for you quick reply. I got confused with the name of the tarball for the updater (pycom_update_1.1.1.b2.tar.gz) and forgot that applying a firmware update is assisted by the upgrader tool.
    In the meantime I had started building it from the sources anyway :D



  • @jellium Thanks!

    Just get the updater tool from here: https://www.pycom.io/downloads/ and the latest firmware will be applied to your board.

    If you want to build the firmware from sources, check out this repo: https://github.com/pycom/pycom-micropython-sigfox



  • @daniel Thanks for the continuous work and detailed changelog.

    ... However, where can we actually download the firmware? I cannot find anything in:

    So... where is the release? Thanks.



  • @daniel
    I see in sources in mentioned above _boot.py that there is

     import os		
     from machine import UART	
     os.dupterm(UART(0, 115200))
    

    then i see that old files like boot.py should not contain dupterm and uart init, and we can remove it from our sources without consequences.



  • @daniel Hello Daniel. Thank you for the update and also for updating the repository at the same time. I hope it makes many people happy.

    I tested the SD card write failure, and I'm sorry to say that this still exists. The SD card access and especially writing is much slower, but it failed at about 10 MBtye of roughly 10.000 cyles of the test code.


Log in to reply
 

Pycom on Twitter