Forum Rule: Always post complete source code & details to reproduce any issue!
Page 2 of 2 FirstFirst 1 2
Results 26 to 49 of 49

Thread: Teensy 4: What triggers Halfkay to do a full flash erase

  1. #26
    Member
    Join Date
    May 2015
    Location
    Germany
    Posts
    34
    Thanks. That's what I did already, and compared the generated HEX files. I did not look into the Teensy loader, because it is the loader that reports the error and I want to know the reason. The code I create runs fine, and loading works with the previous version of the Teensy loader. Is the source code of the loader available somewhere?

  2. #27
    Senior Member
    Join Date
    Jul 2014
    Posts
    3,453
    Quote Originally Posted by roberthh View Post
    Is the source code of the loader available somewhere?
    No, but there are different versions of *cli.exe, that you can use to experiment

  3. #28
    Member
    Join Date
    May 2015
    Location
    Germany
    Posts
    34
    Quote Originally Posted by WMXZ View Post
    No, but there are different versions of *cli.exe, that you can use to experiment
    I have built teensy_loader_cli from the sources. So I could go back to previous versions. But the different behavior is related to the teensy loader at the board, not teensy_loader_cli. The ones with the old loader at the board work fine, the ones with the new loader buck.

  4. #29
    Senior Member
    Join Date
    Jul 2014
    Posts
    3,453
    OK,
    as the teensy loader can do more than simply loading, so it is significant IP of PJRC.

  5. #30
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    26,576
    Quote Originally Posted by roberthh View Post
    But the different behavior is related to the teensy loader at the board, not teensy_loader_cli. The ones with the old loader at the board work fine, the ones with the new loader buck.
    Please post one of the problematic HEX files. If using Quick Repky, click Go Advanced to get the full editor which lets you attach a file to you message.

    I’ll give it a try here with both and try to get to the bottom of what’s going wrong with the open source CLI version.

  6. #31
    Member
    Join Date
    May 2015
    Location
    Germany
    Posts
    34
    Hello Paui,
    thanks a lot. I have attached a file. The state is:
    If a file created with Teensyduino is loaded to the device, I can load images of Circuitpython, MicroPython or Teensyduino without problems.
    If either CircuitPython of Micropython is loaded, loading Files created with Teensyduino, or CircuitPython of MicroPython fails on the first attempt, and succeeds on the second.
    Attached Files Attached Files

  7. #32
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,798
    Hi Paul and all,

    I am also trying to debug why CircuitPython (CPy for short) installs also rebuild their File Filesystem on the first boot after updating the hex file...

    I have started by adding some debug output to the startup code of CPy

    So on startup on the first boot I see (Coming out logical Serial4)
    Code:
    Serial debug setup
    
    ### filesystem_init 1 0
            flash_read_blocks block:0 nb:1
            flash_read_blocks block:1 nb:1
            supervisor_flash_read_blocks block:0 nb:1 src:60100000
            f_mount res:d
            Create Fresh
            flash_read_blocks block:0 nb:1
            flash_read_blocks block:0 nb:1
            flash_read_blocks block:0 nb:1
            flash_read_blocks block:1 nb:1
            supervisor_flash_read_blocks block:0 nb:1 src:60100000
    ...
    Note: They hard code their MBR (block 0), to return a fixed setup. If Not 0 it then goes to read the flash and as you can see here
    it reads 60100000

    And that is the last read it does, before it decides that the File system does not exist and has to remake a fresh copy.

    I wanted to verify that their hex file was not writing within this range, so I hacked up a copy of the a teensy_loader_cli, that simply output the ranges of
    memory that was read:

    Code:
    kurte@DESKTOP-BVOH5B0:~/github/teensy_loader_cli$ ./teensy_loader_dmp /mnt/d/firmware_41.hex 
    60000000 - 60000200
    60001000 - 60001030
    6000c000 - 60010000
    60010000 - 60020000
    60020000 - 60030000
    60030000 - 60040000
    60040000 - 60050000
    60050000 - 60060000
    60060000 - 60070000
    60070000 - 60080000
    60080000 - 6008968c
    $$
    Note: I build CPy on Windows using WSL and then copy the hex file to common location /mnt/d and I use the teensy.exe to flash the T4.1 in this case.

    I have a zip file here with the hex file with the debug output plus the hacked up teensly_loader_cli code (teens_loader_dmp.c)
    Attached Files Attached Files

  8. #33
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,798
    Quick update: Trying to make it sure it actually was not preserved... So print hex the reads of logical cluster (0) - hard coded in the sketch and
    the Cluster 1 which is the first sector of the fat:

    Here is on fresh install:
    Code:
    Serial debug setup
    
    ### filesystem_init 1 0
    ff.c-find_volume mode=0
            After IOCTL_STATUS
            After IOCTL_INIT stat:0
            flash_read_blocks block:0 nb:1
    check_fs sect=0
            000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            010 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            020 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            030 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            040 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            050 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            060 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            070 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            080 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            090 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0C0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            100 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            110 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            120 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            130 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            140 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            150 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            160 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            170 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            180 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            190 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF : ................
            1C0 : FF FF 01 FF FF FF 01 00 00 00 F8 37 00 00 00 00 : ...........7....
            1D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA : ..............U.
            After check_fs fmt:2
            flash_read_blocks block:1 nb:1
            supervisor_flash_read_blocks block:0 nb:1 src:60100000
    check_fs sect=1
            000 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            010 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            020 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            030 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            040 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            050 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            060 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            070 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            080 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            090 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            0A0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            0B0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            0C0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            0D0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            0E0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            0F0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            100 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            110 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            120 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            130 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            140 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            150 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            160 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            170 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            180 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            190 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            1A0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            1B0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            1C0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            1D0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            1E0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            1F0 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            f_mount res:d
            Create Fresh
            flash_read_blocks block:0 nb:1
    Then power cycle and:
    Code:
    Serial debug setup
    
    ### filesystem_init 1 0
    ff.c-find_volume mode=0
            After IOCTL_STATUS
            After IOCTL_INIT stat:0
            flash_read_blocks block:0 nb:1
    check_fs sect=0
            000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            010 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            020 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            030 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            040 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            050 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            060 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            070 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            080 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            090 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0C0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            100 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            110 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            120 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            130 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            140 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            150 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            160 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            170 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            180 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            190 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF : ................
            1C0 : FF FF 01 FF FF FF 01 00 00 00 F8 37 00 00 00 00 : ...........7....
            1D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA : ..............U.
            After check_fs fmt:2
            flash_read_blocks block:1 nb:1
            supervisor_flash_read_blocks block:0 nb:1 src:60100000
    check_fs sect=1
            000 : EB FE 90 4D 53 44 4F 53 35 2E 30 00 02 02 01 00 : ...MSDOS5.0.....
            010 : 01 00 02 F8 37 F8 1C 00 3F 00 FF 00 01 00 00 00 : ....7...?.......
            020 : 00 00 00 00 80 00 29 00 00 21 EC 4E 4F 20 4E 41 : ......)..!.NO NA
            030 : 4D 45 20 20 20 20 46 41 54 20 20 20 20 20 00 00 : ME    FAT     ..
            040 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            050 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            060 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            070 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            080 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            090 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0C0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            0F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            100 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            110 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            120 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            130 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            140 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            150 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            160 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            170 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            180 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            190 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1C0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
            1F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA : ..............U.
            f_mount res:0
    Adafruit CircuitPython 7.3.0-beta.1-44-gb71ea29a8-dirty on 2022-05-08; Teensy 4.1 with IMXRT1062DVJ6AAdafruit CircuitPython 7.3.0-be
    So looks like this flash area was wiped on the update of code.

    Edit: Output from Teensy app:
    Code:
    14:45:21.004 (loader): secure mode can not be locked: this is Standard Teensy
    14:45:21.007 (loader): encryption is possible on this Teensy, but not yet configured
    14:45:21.011 (loader): but without secure mode locked, encryption will NOT be secure!
    14:45:21.015 (loader): Device came online, code_size = 8126464
    14:45:21.018 (loader): Board is: Teensy 4.1 (IMXRT1062), version 1.07
    14:45:21.247 (loader): File "D:\firmware_41.hex", 514624 bytes
    14:45:21.250 (loader): File "firmware_41.hex". 514624 bytes, 6% used
    14:45:21.288 (loader): set background IMG_ONLINE
    14:45:21.399 (loader): File "D:\firmware_41.hex", 514624 bytes
    14:45:21.402 (loader): File "firmware_41.hex". 514624 bytes, 6% used
    14:45:21.446 (loader): can't open file 'D:\firmware_41.elf' (error 2: the system cannot find the file specified.)
    14:45:21.449 (loader): elf file is for Unknown Board
    14:45:21.451 (loader): using hex file
    14:45:21.486 (loader): begin operation
    14:45:21.543 (loader): flash, block=0, bs=1024, auto=1
    14:45:21.550 (loader): flash, block=4, bs=1024, auto=1
    14:45:21.563 (loader): flash, block=48, bs=1024, auto=1
    14:45:23.087 (loader): flash, block=49, bs=1024, auto=1
    14:45:23.091 (loader): flash, block=50, bs=1024, auto=1
    14:45:23.093 (loader): flash, block=51, bs=1024, auto=1
    14:45:23.099 (loader): flash, block=52, bs=1024, auto=1
    14:45:23.103 (loader): flash, block=53, bs=1024, auto=1
    14:45:23.106 (loader): flash, block=54, bs=1024, auto=1
    14:45:23.110 (loader): flash, block=55, bs=1024, auto=1
    14:45:23.115 (loader): flash, block=56, bs=1024, auto=1
    14:45:23.119 (loader): flash, block=57, bs=1024, auto=1
    14:45:23.123 (loader): flash, block=58, bs=1024, auto=1
    14:45:23.128 (loader): flash, block=59, bs=1024, auto=1
    14:45:23.131 (loader): flash, block=60, bs=1024, auto=1
    14:45:23.136 (loader): flash, block=61, bs=1024, auto=1
    14:45:23.140 (loader): flash, block=62, bs=1024, auto=1
    14:45:23.147 (loader): flash, block=63, bs=1024, auto=1
    14:45:23.151 (loader): flash, block=64, bs=1024, auto=1
    14:45:23.155 (loader): flash, block=65, bs=1024, auto=1
    14:45:23.160 (loader): flash, block=66, bs=1024, auto=1
    14:45:23.164 (loader): flash, block=67, bs=1024, auto=1
    14:45:23.169 (loader): flash, block=68, bs=1024, auto=1
    14:45:23.174 (loader): flash, block=69, bs=1024, auto=1
    14:45:23.181 (loader): flash, block=70, bs=1024, auto=1
    14:45:23.186 (loader): flash, block=71, bs=1024, auto=1
    14:45:23.190 (loader): flash, block=72, bs=1024, auto=1
    14:45:23.196 (loader): flash, block=73, bs=1024, auto=1
    14:45:23.201 (loader): flash, block=74, bs=1024, auto=1
    14:45:23.206 (loader): flash, block=75, bs=1024, auto=1
    14:45:23.211 (loader): flash, block=76, bs=1024, auto=1
    14:45:23.217 (loader): flash, block=77, bs=1024, auto=1
    14:45:23.227 (loader): flash, block=78, bs=1024, auto=1
    14:45:23.234 (loader): flash, block=79, bs=1024, auto=1
    14:45:23.240 (loader): flash, block=80, bs=1024, auto=1
    14:45:23.249 (loader): flash, block=81, bs=1024, auto=1
    14:45:23.254 (loader): flash, block=82, bs=1024, auto=1
    14:45:23.261 (loader): flash, block=83, bs=1024, auto=1
    14:45:23.267 (loader): flash, block=84, bs=1024, auto=1
    14:45:23.273 (loader): flash, block=85, bs=1024, auto=1
    14:45:23.281 (loader): flash, block=86, bs=1024, auto=1
    14:45:23.286 (loader): flash, block=87, bs=1024, auto=1
    14:45:23.293 (loader): flash, block=88, bs=1024, auto=1
    14:45:23.300 (loader): flash, block=89, bs=1024, auto=1
    14:45:23.306 (loader): flash, block=90, bs=1024, auto=1
    14:45:23.314 (loader): flash, block=91, bs=1024, auto=1
    14:45:23.320 (loader): flash, block=92, bs=1024, auto=1
    14:45:23.326 (loader): flash, block=93, bs=1024, auto=1
    14:45:23.333 (loader): flash, block=94, bs=1024, auto=1
    14:45:23.339 (loader): flash, block=95, bs=1024, auto=1
    14:45:23.347 (loader): flash, block=96, bs=1024, auto=1
    14:45:23.353 (loader): flash, block=97, bs=1024, auto=1
    14:45:23.360 (loader): flash, block=98, bs=1024, auto=1
    14:45:23.365 (loader): flash, block=99, bs=1024, auto=1
    14:45:23.371 (loader): flash, block=100, bs=1024, auto=1
    14:45:23.378 (loader): flash, block=101, bs=1024, auto=1
    14:45:23.384 (loader): flash, block=102, bs=1024, auto=1
    14:45:23.388 (loader): flash, block=103, bs=1024, auto=1
    14:45:23.394 (loader): flash, block=104, bs=1024, auto=1
    14:45:23.399 (loader): flash, block=105, bs=1024, auto=1
    14:45:23.404 (loader): flash, block=106, bs=1024, auto=1
    14:45:23.410 (loader): flash, block=107, bs=1024, auto=1
    14:45:23.416 (loader): flash, block=108, bs=1024, auto=1
    14:45:23.421 (loader): flash, block=109, bs=1024, auto=1
    14:45:23.427 (loader): flash, block=110, bs=1024, auto=1
    14:45:23.434 (loader): flash, block=111, bs=1024, auto=1
    14:45:23.440 (loader): flash, block=112, bs=1024, auto=1
    14:45:23.445 (loader): flash, block=113, bs=1024, auto=1
    14:45:23.452 (loader): flash, block=114, bs=1024, auto=1
    14:45:23.459 (loader): flash, block=115, bs=1024, auto=1
    14:45:23.465 (loader): flash, block=116, bs=1024, auto=1
    14:45:23.469 (loader): flash, block=117, bs=1024, auto=1
    14:45:23.476 (loader): flash, block=118, bs=1024, auto=1
    14:45:23.482 (loader): flash, block=119, bs=1024, auto=1
    14:45:23.488 (loader): flash, block=120, bs=1024, auto=1
    14:45:23.493 (loader): flash, block=121, bs=1024, auto=1
    14:45:23.498 (loader): flash, block=122, bs=1024, auto=1
    14:45:23.506 (loader): flash, block=123, bs=1024, auto=1
    14:45:23.513 (loader): flash, block=124, bs=1024, auto=1
    14:45:23.518 (loader): flash, block=125, bs=1024, auto=1
    14:45:23.524 (loader): flash, block=126, bs=1024, auto=1
    14:45:23.530 (loader): flash, block=127, bs=1024, auto=1
    14:45:23.535 (loader): flash, block=128, bs=1024, auto=1
    14:45:23.540 (loader): flash, block=129, bs=1024, auto=1
    14:45:23.546 (loader): flash, block=130, bs=1024, auto=1
    14:45:23.553 (loader): flash, block=131, bs=1024, auto=1
    14:45:23.558 (loader): flash, block=132, bs=1024, auto=1
    14:45:23.564 (loader): flash, block=133, bs=1024, auto=1
    14:45:23.570 (loader): flash, block=134, bs=1024, auto=1
    14:45:23.577 (loader): flash, block=135, bs=1024, auto=1
    14:45:23.582 (loader): flash, block=136, bs=1024, auto=1
    14:45:23.588 (loader): flash, block=137, bs=1024, auto=1
    14:45:23.593 (loader): flash, block=138, bs=1024, auto=1
    14:45:23.600 (loader): flash, block=139, bs=1024, auto=1
    14:45:23.604 (loader): flash, block=140, bs=1024, auto=1
    14:45:23.609 (loader): flash, block=141, bs=1024, auto=1
    14:45:23.614 (loader): flash, block=142, bs=1024, auto=1
    14:45:23.618 (loader): flash, block=143, bs=1024, auto=1
    14:45:23.624 (loader): flash, block=144, bs=1024, auto=1
    14:45:23.630 (loader): flash, block=145, bs=1024, auto=1
    14:45:23.637 (loader): flash, block=146, bs=1024, auto=1
    14:45:23.643 (loader): flash, block=147, bs=1024, auto=1
    14:45:23.649 (loader): flash, block=148, bs=1024, auto=1
    14:45:23.654 (loader): flash, block=149, bs=1024, auto=1
    14:45:23.660 (loader): flash, block=150, bs=1024, auto=1
    14:45:23.666 (loader): flash, block=151, bs=1024, auto=1
    14:45:23.672 (loader): flash, block=152, bs=1024, auto=1
    14:45:23.680 (loader): flash, block=153, bs=1024, auto=1
    14:45:23.685 (loader): flash, block=154, bs=1024, auto=1
    14:45:23.690 (loader): flash, block=155, bs=1024, auto=1
    14:45:23.696 (loader): flash, block=156, bs=1024, auto=1
    14:45:23.701 (loader): flash, block=157, bs=1024, auto=1
    14:45:23.707 (loader): flash, block=158, bs=1024, auto=1
    14:45:23.713 (loader): flash, block=159, bs=1024, auto=1
    14:45:23.718 (loader): flash, block=160, bs=1024, auto=1
    14:45:23.724 (loader): flash, block=161, bs=1024, auto=1
    14:45:23.730 (loader): flash, block=162, bs=1024, auto=1
    14:45:23.736 (loader): flash, block=163, bs=1024, auto=1
    14:45:23.741 (loader): flash, block=164, bs=1024, auto=1
    14:45:23.748 (loader): flash, block=165, bs=1024, auto=1
    14:45:23.754 (loader): flash, block=166, bs=1024, auto=1
    14:45:23.761 (loader): flash, block=167, bs=1024, auto=1
    14:45:23.765 (loader): flash, block=168, bs=1024, auto=1
    14:45:23.771 (loader): flash, block=169, bs=1024, auto=1
    14:45:23.777 (loader): flash, block=170, bs=1024, auto=1
    14:45:23.783 (loader): flash, block=171, bs=1024, auto=1
    14:45:23.788 (loader): flash, block=172, bs=1024, auto=1
    14:45:23.794 (loader): flash, block=173, bs=1024, auto=1
    14:45:23.800 (loader): flash, block=174, bs=1024, auto=1
    14:45:23.805 (loader): flash, block=175, bs=1024, auto=1
    14:45:23.811 (loader): flash, block=176, bs=1024, auto=1
    14:45:23.817 (loader): flash, block=177, bs=1024, auto=1
    14:45:23.822 (loader): flash, block=178, bs=1024, auto=1
    14:45:23.828 (loader): flash, block=179, bs=1024, auto=1
    14:45:23.834 (loader): flash, block=180, bs=1024, auto=1
    14:45:23.840 (loader): flash, block=181, bs=1024, auto=1
    14:45:23.845 (loader): flash, block=182, bs=1024, auto=1
    14:45:23.851 (loader): flash, block=183, bs=1024, auto=1
    14:45:23.857 (loader): flash, block=184, bs=1024, auto=1
    14:45:23.862 (loader): flash, block=185, bs=1024, auto=1
    14:45:23.868 (loader): flash, block=186, bs=1024, auto=1
    14:45:23.873 (loader): flash, block=187, bs=1024, auto=1
    14:45:23.880 (loader): flash, block=188, bs=1024, auto=1
    14:45:23.885 (loader): flash, block=189, bs=1024, auto=1
    14:45:23.890 (loader): flash, block=190, bs=1024, auto=1
    14:45:23.896 (loader): flash, block=191, bs=1024, auto=1
    14:45:23.901 (loader): flash, block=192, bs=1024, auto=1
    14:45:23.907 (loader): flash, block=193, bs=1024, auto=1
    14:45:23.914 (loader): flash, block=194, bs=1024, auto=1
    14:45:23.918 (loader): flash, block=195, bs=1024, auto=1
    14:45:23.924 (loader): flash, block=196, bs=1024, auto=1
    14:45:23.930 (loader): flash, block=197, bs=1024, auto=1
    14:45:23.936 (loader): flash, block=198, bs=1024, auto=1
    14:45:23.941 (loader): flash, block=199, bs=1024, auto=1
    14:45:23.947 (loader): flash, block=200, bs=1024, auto=1
    14:45:23.953 (loader): flash, block=201, bs=1024, auto=1
    14:45:23.960 (loader): flash, block=202, bs=1024, auto=1
    14:45:23.964 (loader): flash, block=203, bs=1024, auto=1
    14:45:23.970 (loader): flash, block=204, bs=1024, auto=1
    14:45:23.976 (loader): flash, block=205, bs=1024, auto=1
    14:45:23.981 (loader): flash, block=206, bs=1024, auto=1
    14:45:23.987 (loader): flash, block=207, bs=1024, auto=1
    14:45:23.993 (loader): flash, block=208, bs=1024, auto=1
    14:45:23.999 (loader): flash, block=209, bs=1024, auto=1
    14:45:24.004 (loader): flash, block=210, bs=1024, auto=1
    14:45:24.010 (loader): flash, block=211, bs=1024, auto=1
    14:45:24.016 (loader): flash, block=212, bs=1024, auto=1
    14:45:24.020 (loader): flash, block=213, bs=1024, auto=1
    14:45:24.025 (loader): flash, block=214, bs=1024, auto=1
    14:45:24.031 (loader): flash, block=215, bs=1024, auto=1
    14:45:24.035 (loader): flash, block=216, bs=1024, auto=1
    14:45:24.040 (loader): flash, block=217, bs=1024, auto=1
    14:45:24.045 (loader): flash, block=218, bs=1024, auto=1
    14:45:24.050 (loader): flash, block=219, bs=1024, auto=1
    14:45:24.054 (loader): flash, block=220, bs=1024, auto=1
    14:45:24.059 (loader): flash, block=221, bs=1024, auto=1
    14:45:24.064 (loader): flash, block=222, bs=1024, auto=1
    14:45:24.068 (loader): flash, block=223, bs=1024, auto=1
    14:45:24.073 (loader): flash, block=224, bs=1024, auto=1
    14:45:24.079 (loader): flash, block=225, bs=1024, auto=1
    14:45:24.083 (loader): flash, block=226, bs=1024, auto=1
    14:45:24.088 (loader): flash, block=227, bs=1024, auto=1
    14:45:24.093 (loader): flash, block=228, bs=1024, auto=1
    14:45:24.098 (loader): flash, block=229, bs=1024, auto=1
    14:45:24.103 (loader): flash, block=230, bs=1024, auto=1
    14:45:24.108 (loader): flash, block=231, bs=1024, auto=1
    14:45:24.113 (loader): flash, block=232, bs=1024, auto=1
    14:45:24.117 (loader): flash, block=233, bs=1024, auto=1
    14:45:24.122 (loader): flash, block=234, bs=1024, auto=1
    14:45:24.127 (loader): flash, block=235, bs=1024, auto=1
    14:45:24.131 (loader): flash, block=236, bs=1024, auto=1
    14:45:24.136 (loader): flash, block=237, bs=1024, auto=1
    14:45:24.141 (loader): flash, block=238, bs=1024, auto=1
    14:45:24.146 (loader): flash, block=239, bs=1024, auto=1
    14:45:24.150 (loader): flash, block=240, bs=1024, auto=1
    14:45:24.155 (loader): flash, block=241, bs=1024, auto=1
    14:45:24.161 (loader): flash, block=242, bs=1024, auto=1
    14:45:24.166 (loader): flash, block=243, bs=1024, auto=1
    14:45:24.170 (loader): flash, block=244, bs=1024, auto=1
    14:45:24.177 (loader): flash, block=245, bs=1024, auto=1
    14:45:24.182 (loader): flash, block=246, bs=1024, auto=1
    14:45:24.188 (loader): flash, block=247, bs=1024, auto=1
    14:45:24.193 (loader): flash, block=248, bs=1024, auto=1
    14:45:24.198 (loader): flash, block=249, bs=1024, auto=1
    14:45:24.204 (loader): flash, block=250, bs=1024, auto=1
    14:45:24.210 (loader): flash, block=251, bs=1024, auto=1
    14:45:24.216 (loader): flash, block=252, bs=1024, auto=1
    14:45:24.221 (loader): flash, block=253, bs=1024, auto=1
    14:45:24.228 (loader): flash, block=254, bs=1024, auto=1
    14:45:24.234 (loader): flash, block=255, bs=1024, auto=1
    14:45:24.240 (loader): flash, block=256, bs=1024, auto=1
    14:45:24.245 (loader): flash, block=257, bs=1024, auto=1
    14:45:24.252 (loader): flash, block=258, bs=1024, auto=1
    14:45:24.257 (loader): flash, block=259, bs=1024, auto=1
    14:45:24.262 (loader): flash, block=260, bs=1024, auto=1
    14:45:24.268 (loader): flash, block=261, bs=1024, auto=1
    14:45:24.275 (loader): flash, block=262, bs=1024, auto=1
    14:45:24.282 (loader): flash, block=263, bs=1024, auto=1
    14:45:24.287 (loader): flash, block=264, bs=1024, auto=1
    14:45:24.292 (loader): flash, block=265, bs=1024, auto=1
    14:45:24.298 (loader): flash, block=266, bs=1024, auto=1
    14:45:24.304 (loader): flash, block=267, bs=1024, auto=1
    14:45:24.309 (loader): flash, block=268, bs=1024, auto=1
    14:45:24.315 (loader): flash, block=269, bs=1024, auto=1
    14:45:24.321 (loader): flash, block=270, bs=1024, auto=1
    14:45:24.328 (loader): flash, block=271, bs=1024, auto=1
    14:45:24.332 (loader): flash, block=272, bs=1024, auto=1
    14:45:24.338 (loader): flash, block=273, bs=1024, auto=1
    14:45:24.345 (loader): flash, block=274, bs=1024, auto=1
    14:45:24.349 (loader): flash, block=275, bs=1024, auto=1
    14:45:24.355 (loader): flash, block=276, bs=1024, auto=1
    14:45:24.362 (loader): flash, block=277, bs=1024, auto=1
    14:45:24.368 (loader): flash, block=278, bs=1024, auto=1
    14:45:24.373 (loader): flash, block=279, bs=1024, auto=1
    14:45:24.379 (loader): flash, block=280, bs=1024, auto=1
    14:45:24.385 (loader): flash, block=281, bs=1024, auto=1
    14:45:24.390 (loader): flash, block=282, bs=1024, auto=1
    14:45:24.397 (loader): flash, block=283, bs=1024, auto=1
    14:45:24.403 (loader): flash, block=284, bs=1024, auto=1
    14:45:24.409 (loader): flash, block=285, bs=1024, auto=1
    14:45:24.414 (loader): flash, block=286, bs=1024, auto=1
    14:45:24.420 (loader): flash, block=287, bs=1024, auto=1
    14:45:24.426 (loader): flash, block=288, bs=1024, auto=1
    14:45:24.432 (loader): flash, block=289, bs=1024, auto=1
    14:45:24.437 (loader): flash, block=290, bs=1024, auto=1
    14:45:24.444 (loader): flash, block=291, bs=1024, auto=1
    14:45:24.450 (loader): flash, block=292, bs=1024, auto=1
    14:45:24.456 (loader): flash, block=293, bs=1024, auto=1
    14:45:24.461 (loader): flash, block=294, bs=1024, auto=1
    14:45:24.467 (loader): flash, block=295, bs=1024, auto=1
    14:45:24.473 (loader): flash, block=296, bs=1024, auto=1
    14:45:24.480 (loader): flash, block=297, bs=1024, auto=1
    14:45:24.485 (loader): flash, block=298, bs=1024, auto=1
    14:45:24.492 (loader): flash, block=299, bs=1024, auto=1
    14:45:24.498 (loader): flash, block=300, bs=1024, auto=1
    14:45:24.503 (loader): flash, block=301, bs=1024, auto=1
    14:45:24.510 (loader): flash, block=302, bs=1024, auto=1
    14:45:24.516 (loader): flash, block=303, bs=1024, auto=1
    14:45:24.522 (loader): flash, block=304, bs=1024, auto=1
    14:45:24.528 (loader): flash, block=305, bs=1024, auto=1
    14:45:24.532 (loader): flash, block=306, bs=1024, auto=1
    14:45:24.539 (loader): flash, block=307, bs=1024, auto=1
    14:45:24.545 (loader): flash, block=308, bs=1024, auto=1
    14:45:24.550 (loader): flash, block=309, bs=1024, auto=1
    14:45:24.556 (loader): flash, block=310, bs=1024, auto=1
    14:45:24.562 (loader): flash, block=311, bs=1024, auto=1
    14:45:24.566 (loader): flash, block=312, bs=1024, auto=1
    14:45:24.573 (loader): flash, block=313, bs=1024, auto=1
    14:45:24.579 (loader): flash, block=314, bs=1024, auto=1
    14:45:24.585 (loader): flash, block=315, bs=1024, auto=1
    14:45:24.591 (loader): flash, block=316, bs=1024, auto=1
    14:45:24.597 (loader): flash, block=317, bs=1024, auto=1
    14:45:24.602 (loader): flash, block=318, bs=1024, auto=1
    14:45:24.606 (loader): flash, block=319, bs=1024, auto=1
    14:45:24.612 (loader): flash, block=320, bs=1024, auto=1
    14:45:24.618 (loader): flash, block=321, bs=1024, auto=1
    14:45:24.624 (loader): flash, block=322, bs=1024, auto=1
    14:45:24.630 (loader): flash, block=323, bs=1024, auto=1
    14:45:24.635 (loader): flash, block=324, bs=1024, auto=1
    14:45:24.639 (loader): flash, block=325, bs=1024, auto=1
    14:45:24.644 (loader): flash, block=326, bs=1024, auto=1
    14:45:24.651 (loader): flash, block=327, bs=1024, auto=1
    14:45:24.658 (loader): flash, block=328, bs=1024, auto=1
    14:45:24.664 (loader): flash, block=329, bs=1024, auto=1
    14:45:24.668 (loader): flash, block=330, bs=1024, auto=1
    14:45:24.673 (loader): flash, block=331, bs=1024, auto=1
    14:45:24.680 (loader): flash, block=332, bs=1024, auto=1
    14:45:24.684 (loader): flash, block=333, bs=1024, auto=1
    14:45:24.689 (loader): flash, block=334, bs=1024, auto=1
    14:45:24.694 (loader): flash, block=335, bs=1024, auto=1
    14:45:24.699 (loader): flash, block=336, bs=1024, auto=1
    14:45:24.703 (loader): flash, block=337, bs=1024, auto=1
    14:45:24.709 (loader): flash, block=338, bs=1024, auto=1
    14:45:24.713 (loader): flash, block=339, bs=1024, auto=1
    14:45:24.718 (loader): flash, block=340, bs=1024, auto=1
    14:45:24.723 (loader): flash, block=341, bs=1024, auto=1
    14:45:24.728 (loader): flash, block=342, bs=1024, auto=1
    14:45:24.733 (loader): flash, block=343, bs=1024, auto=1
    14:45:24.737 (loader): flash, block=344, bs=1024, auto=1
    14:45:24.742 (loader): flash, block=345, bs=1024, auto=1
    14:45:24.747 (loader): flash, block=346, bs=1024, auto=1
    14:45:24.752 (loader): flash, block=347, bs=1024, auto=1
    14:45:24.756 (loader): flash, block=348, bs=1024, auto=1
    14:45:24.762 (loader): flash, block=349, bs=1024, auto=1
    14:45:24.767 (loader): flash, block=350, bs=1024, auto=1
    14:45:24.772 (loader): flash, block=351, bs=1024, auto=1
    14:45:24.777 (loader): flash, block=352, bs=1024, auto=1
    14:45:24.782 (loader): flash, block=353, bs=1024, auto=1
    14:45:24.787 (loader): flash, block=354, bs=1024, auto=1
    14:45:24.791 (loader): flash, block=355, bs=1024, auto=1
    14:45:24.796 (loader): flash, block=356, bs=1024, auto=1
    14:45:24.802 (loader): flash, block=357, bs=1024, auto=1
    14:45:24.807 (loader): flash, block=358, bs=1024, auto=1
    14:45:24.814 (loader): flash, block=359, bs=1024, auto=1
    14:45:24.820 (loader): flash, block=360, bs=1024, auto=1
    14:45:24.826 (loader): flash, block=361, bs=1024, auto=1
    14:45:24.832 (loader): flash, block=362, bs=1024, auto=1
    14:45:24.837 (loader): flash, block=363, bs=1024, auto=1
    14:45:24.843 (loader): flash, block=364, bs=1024, auto=1
    14:45:24.849 (loader): flash, block=365, bs=1024, auto=1
    14:45:24.855 (loader): flash, block=366, bs=1024, auto=1
    14:45:24.860 (loader): flash, block=367, bs=1024, auto=1
    14:45:24.867 (loader): flash, block=368, bs=1024, auto=1
    14:45:24.873 (loader): flash, block=369, bs=1024, auto=1
    14:45:24.879 (loader): flash, block=370, bs=1024, auto=1
    14:45:24.884 (loader): flash, block=371, bs=1024, auto=1
    14:45:24.890 (loader): flash, block=372, bs=1024, auto=1
    14:45:24.895 (loader): flash, block=373, bs=1024, auto=1
    14:45:24.899 (loader): flash, block=374, bs=1024, auto=1
    14:45:24.905 (loader): flash, block=375, bs=1024, auto=1
    14:45:24.910 (loader): flash, block=376, bs=1024, auto=1
    14:45:24.915 (loader): flash, block=377, bs=1024, auto=1
    14:45:24.920 (loader): flash, block=378, bs=1024, auto=1
    14:45:24.924 (loader): flash, block=379, bs=1024, auto=1
    14:45:24.930 (loader): flash, block=380, bs=1024, auto=1
    14:45:24.936 (loader): flash, block=381, bs=1024, auto=1
    14:45:24.941 (loader): flash, block=382, bs=1024, auto=1
    14:45:24.946 (loader): flash, block=383, bs=1024, auto=1
    14:45:24.951 (loader): flash, block=384, bs=1024, auto=1
    14:45:24.956 (loader): flash, block=385, bs=1024, auto=1
    14:45:24.961 (loader): flash, block=386, bs=1024, auto=1
    14:45:24.966 (loader): flash, block=387, bs=1024, auto=1
    14:45:24.971 (loader): flash, block=388, bs=1024, auto=1
    14:45:24.976 (loader): flash, block=389, bs=1024, auto=1
    14:45:24.981 (loader): flash, block=390, bs=1024, auto=1
    14:45:24.985 (loader): flash, block=391, bs=1024, auto=1
    14:45:24.990 (loader): flash, block=392, bs=1024, auto=1
    14:45:24.996 (loader): flash, block=393, bs=1024, auto=1
    14:45:25.000 (loader): flash, block=394, bs=1024, auto=1
    14:45:25.005 (loader): flash, block=395, bs=1024, auto=1
    14:45:25.010 (loader): flash, block=396, bs=1024, auto=1
    14:45:25.015 (loader): flash, block=397, bs=1024, auto=1
    14:45:25.020 (loader): flash, block=398, bs=1024, auto=1
    14:45:25.024 (loader): flash, block=399, bs=1024, auto=1
    14:45:25.029 (loader): flash, block=400, bs=1024, auto=1
    14:45:25.035 (loader): flash, block=401, bs=1024, auto=1
    14:45:25.040 (loader): flash, block=402, bs=1024, auto=1
    14:45:25.045 (loader): flash, block=403, bs=1024, auto=1
    14:45:25.049 (loader): flash, block=404, bs=1024, auto=1
    14:45:25.054 (loader): flash, block=405, bs=1024, auto=1
    14:45:25.059 (loader): flash, block=406, bs=1024, auto=1
    14:45:25.064 (loader): flash, block=407, bs=1024, auto=1
    14:45:25.069 (loader): flash, block=408, bs=1024, auto=1
    14:45:25.074 (loader): flash, block=409, bs=1024, auto=1
    14:45:25.079 (loader): flash, block=410, bs=1024, auto=1
    14:45:25.084 (loader): flash, block=411, bs=1024, auto=1
    14:45:25.089 (loader): flash, block=412, bs=1024, auto=1
    14:45:25.094 (loader): flash, block=413, bs=1024, auto=1
    14:45:25.099 (loader): flash, block=414, bs=1024, auto=1
    14:45:25.104 (loader): flash, block=415, bs=1024, auto=1
    14:45:25.109 (loader): flash, block=416, bs=1024, auto=1
    14:45:25.113 (loader): flash, block=417, bs=1024, auto=1
    14:45:25.118 (loader): flash, block=418, bs=1024, auto=1
    14:45:25.123 (loader): flash, block=419, bs=1024, auto=1
    14:45:25.128 (loader): flash, block=420, bs=1024, auto=1
    14:45:25.133 (loader): flash, block=421, bs=1024, auto=1
    14:45:25.138 (loader): flash, block=422, bs=1024, auto=1
    14:45:25.143 (loader): flash, block=423, bs=1024, auto=1
    14:45:25.148 (loader): flash, block=424, bs=1024, auto=1
    14:45:25.153 (loader): flash, block=425, bs=1024, auto=1
    14:45:25.158 (loader): flash, block=426, bs=1024, auto=1
    14:45:25.163 (loader): flash, block=427, bs=1024, auto=1
    14:45:25.168 (loader): flash, block=428, bs=1024, auto=1
    14:45:25.173 (loader): flash, block=429, bs=1024, auto=1
    14:45:25.178 (loader): flash, block=430, bs=1024, auto=1
    14:45:25.183 (loader): flash, block=431, bs=1024, auto=1
    14:45:25.188 (loader): flash, block=432, bs=1024, auto=1
    14:45:25.193 (loader): flash, block=433, bs=1024, auto=1
    14:45:25.198 (loader): flash, block=434, bs=1024, auto=1
    14:45:25.203 (loader): flash, block=435, bs=1024, auto=1
    14:45:25.208 (loader): flash, block=436, bs=1024, auto=1
    14:45:25.213 (loader): flash, block=437, bs=1024, auto=1
    14:45:25.218 (loader): flash, block=438, bs=1024, auto=1
    14:45:25.222 (loader): flash, block=439, bs=1024, auto=1
    14:45:25.228 (loader): flash, block=440, bs=1024, auto=1
    14:45:25.233 (loader): flash, block=441, bs=1024, auto=1
    14:45:25.238 (loader): flash, block=442, bs=1024, auto=1
    14:45:25.244 (loader): flash, block=443, bs=1024, auto=1
    14:45:25.249 (loader): flash, block=444, bs=1024, auto=1
    14:45:25.254 (loader): flash, block=445, bs=1024, auto=1
    14:45:25.258 (loader): flash, block=446, bs=1024, auto=1
    14:45:25.263 (loader): flash, block=447, bs=1024, auto=1
    14:45:25.268 (loader): flash, block=448, bs=1024, auto=1
    14:45:25.273 (loader): flash, block=449, bs=1024, auto=1
    14:45:25.278 (loader): flash, block=450, bs=1024, auto=1
    14:45:25.283 (loader): flash, block=451, bs=1024, auto=1
    14:45:25.288 (loader): flash, block=452, bs=1024, auto=1
    14:45:25.296 (loader): flash, block=453, bs=1024, auto=1
    14:45:25.301 (loader): flash, block=454, bs=1024, auto=1
    14:45:25.305 (loader): flash, block=455, bs=1024, auto=1
    14:45:25.310 (loader): flash, block=456, bs=1024, auto=1
    14:45:25.315 (loader): flash, block=457, bs=1024, auto=1
    14:45:25.320 (loader): flash, block=458, bs=1024, auto=1
    14:45:25.324 (loader): flash, block=459, bs=1024, auto=1
    14:45:25.331 (loader): flash, block=460, bs=1024, auto=1
    14:45:25.336 (loader): flash, block=461, bs=1024, auto=1
    14:45:25.340 (loader): flash, block=462, bs=1024, auto=1
    14:45:25.345 (loader): flash, block=463, bs=1024, auto=1
    14:45:25.350 (loader): flash, block=464, bs=1024, auto=1
    14:45:25.355 (loader): flash, block=465, bs=1024, auto=1
    14:45:25.360 (loader): flash, block=466, bs=1024, auto=1
    14:45:25.365 (loader): flash, block=467, bs=1024, auto=1
    14:45:25.370 (loader): flash, block=468, bs=1024, auto=1
    14:45:25.375 (loader): flash, block=469, bs=1024, auto=1
    14:45:25.380 (loader): flash, block=470, bs=1024, auto=1
    14:45:25.384 (loader): flash, block=471, bs=1024, auto=1
    14:45:25.389 (loader): flash, block=472, bs=1024, auto=1
    14:45:25.394 (loader): flash, block=473, bs=1024, auto=1
    14:45:25.398 (loader): flash, block=474, bs=1024, auto=1
    14:45:25.403 (loader): flash, block=475, bs=1024, auto=1
    14:45:25.408 (loader): flash, block=476, bs=1024, auto=1
    14:45:25.413 (loader): flash, block=477, bs=1024, auto=1
    14:45:25.418 (loader): flash, block=478, bs=1024, auto=1
    14:45:25.423 (loader): flash, block=479, bs=1024, auto=1
    14:45:25.428 (loader): flash, block=480, bs=1024, auto=1
    14:45:25.434 (loader): flash, block=481, bs=1024, auto=1
    14:45:25.440 (loader): flash, block=482, bs=1024, auto=1
    14:45:25.445 (loader): flash, block=483, bs=1024, auto=1
    14:45:25.450 (loader): flash, block=484, bs=1024, auto=1
    14:45:25.455 (loader): flash, block=485, bs=1024, auto=1
    14:45:25.460 (loader): flash, block=486, bs=1024, auto=1
    14:45:25.465 (loader): flash, block=487, bs=1024, auto=1
    14:45:25.470 (loader): flash, block=488, bs=1024, auto=1
    14:45:25.475 (loader): flash, block=489, bs=1024, auto=1
    14:45:25.480 (loader): flash, block=490, bs=1024, auto=1
    14:45:25.485 (loader): flash, block=491, bs=1024, auto=1
    14:45:25.490 (loader): flash, block=492, bs=1024, auto=1
    14:45:25.495 (loader): flash, block=493, bs=1024, auto=1
    14:45:25.499 (loader): flash, block=494, bs=1024, auto=1
    14:45:25.504 (loader): flash, block=495, bs=1024, auto=1
    14:45:25.509 (loader): flash, block=496, bs=1024, auto=1
    14:45:25.515 (loader): flash, block=497, bs=1024, auto=1
    14:45:25.520 (loader): flash, block=498, bs=1024, auto=1
    14:45:25.525 (loader): flash, block=499, bs=1024, auto=1
    14:45:25.530 (loader): flash, block=500, bs=1024, auto=1
    14:45:25.534 (loader): flash, block=501, bs=1024, auto=1
    14:45:25.539 (loader): flash, block=502, bs=1024, auto=1
    14:45:25.545 (loader): flash, block=503, bs=1024, auto=1
    14:45:25.549 (loader): flash, block=504, bs=1024, auto=1
    14:45:25.554 (loader): flash, block=505, bs=1024, auto=1
    14:45:25.559 (loader): flash, block=506, bs=1024, auto=1
    14:45:25.564 (loader): flash, block=507, bs=1024, auto=1
    14:45:25.568 (loader): flash, block=508, bs=1024, auto=1
    14:45:25.573 (loader): flash, block=509, bs=1024, auto=1
    14:45:25.579 (loader): flash, block=510, bs=1024, auto=1
    14:45:25.583 (loader): flash, block=511, bs=1024, auto=1
    14:45:25.588 (loader): flash, block=512, bs=1024, auto=1
    14:45:25.593 (loader): flash, block=513, bs=1024, auto=1
    14:45:25.598 (loader): flash, block=514, bs=1024, auto=1
    14:45:25.603 (loader): flash, block=515, bs=1024, auto=1
    14:45:25.607 (loader): flash, block=516, bs=1024, auto=1
    14:45:25.614 (loader): flash, block=517, bs=1024, auto=1
    14:45:25.619 (loader): flash, block=518, bs=1024, auto=1
    14:45:25.624 (loader): flash, block=519, bs=1024, auto=1
    14:45:25.629 (loader): flash, block=520, bs=1024, auto=1
    14:45:25.633 (loader): flash, block=521, bs=1024, auto=1
    14:45:25.638 (loader): flash, block=522, bs=1024, auto=1
    14:45:25.643 (loader): flash, block=523, bs=1024, auto=1
    14:45:25.648 (loader): flash, block=524, bs=1024, auto=1
    14:45:25.654 (loader): flash, block=525, bs=1024, auto=1
    14:45:25.658 (loader): flash, block=526, bs=1024, auto=1
    14:45:25.663 (loader): flash, block=527, bs=1024, auto=1
    14:45:25.670 (loader): flash, block=528, bs=1024, auto=1
    14:45:25.678 (loader): flash, block=529, bs=1024, auto=1
    14:45:25.685 (loader): flash, block=530, bs=1024, auto=1
    14:45:25.690 (loader): flash, block=531, bs=1024, auto=1
    14:45:25.695 (loader): flash, block=532, bs=1024, auto=1
    14:45:25.700 (loader): flash, block=533, bs=1024, auto=1
    14:45:25.704 (loader): flash, block=534, bs=1024, auto=1
    14:45:25.709 (loader): flash, block=535, bs=1024, auto=1
    14:45:25.714 (loader): flash, block=536, bs=1024, auto=1
    14:45:25.718 (loader): flash, block=537, bs=1024, auto=1
    14:45:25.723 (loader): flash, block=538, bs=1024, auto=1
    14:45:25.728 (loader): flash, block=539, bs=1024, auto=1
    14:45:25.733 (loader): flash, block=540, bs=1024, auto=1
    14:45:25.738 (loader): flash, block=541, bs=1024, auto=1
    14:45:25.743 (loader): flash, block=542, bs=1024, auto=1
    14:45:25.748 (loader): flash, block=543, bs=1024, auto=1
    14:45:25.753 (loader): flash, block=544, bs=1024, auto=1
    14:45:25.757 (loader): flash, block=545, bs=1024, auto=1
    14:45:25.763 (loader): flash, block=546, bs=1024, auto=1
    14:45:25.768 (loader): flash, block=547, bs=1024, auto=1
    14:45:25.773 (loader): flash, block=548, bs=1024, auto=1
    14:45:25.778 (loader): flash, block=549, bs=1024, auto=1
    14:45:25.785 (loader): flash, block=550, bs=1024, auto=1
    14:45:25.821 (loader): sending reboot
    14:45:25.832 (loader): begin wait_until_offline
    14:45:25.848 (loader): offline, waited 0
    14:45:25.858 (loader): end operation, total time = 4.369 seconds
    14:45:25.869 (loader): set background IMG_REBOOT_OK
    14:45:25.877 (loader): redraw timer set, image 14 to show for 1200 ms
    14:45:26.011 (loader): HID/win32:  vid:058F pid:9410 ver:0122  usb:0/140000/0/A/B
    14:45:26.024 (loader): HID/win32:  vid:058F pid:9410 ver:0122  usb:0/140000/0/A/B
    14:45:26.032 (loader): HID/win32:  vid:045E pid:07A5 ver:0797  usb:0/140000/0/9/B
    14:45:26.039 (loader): HID/win32:  vid:045E pid:07A5 ver:0797  usb:0/140000/0/9/B
    14:45:26.046 (loader): HID/win32:  vid:045E pid:07A5 ver:0797  usb:0/140000/0/9/A
    14:45:26.053 (loader): HID/win32:  vid:045E pid:07A5 ver:0797  usb:0/140000/0/9/B
    14:45:27.069 (loader): redraw, image 9
    Last edited by KurtE; 05-08-2022 at 09:48 PM.

  9. #34
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,798
    Playing around some more: Curious about what ranges of data do MicroPython and CircuitPython define in hex file versus standard Arduino build:

    Arduino build using current beta Teeensyduino
    Code:
    kurte@DESKTOP-BVOH5B0:~/github/teensy_loader_cli$ ./teensy_loader_dmp /mnt/d/CircuitMicroPython.ino.hex
    60000000 - 60010000
    60010000 - 60020000
    60020000 - 60030000
    60030000 - 60032400
    $$
    Circuit Python build for T4.1
    Code:
    kurte@DESKTOP-BVOH5B0:~/github/teensy_loader_cli$ ./teensy_loader_dmp /mnt/d/firmware.hex
    60000000 - 60000200
    60001000 - 60001030
    6000c000 - 60010000
    60010000 - 60020000
    60020000 - 60030000
    60030000 - 60040000
    60040000 - 60050000
    60050000 - 60060000
    60060000 - 60070000
    60070000 - 60080000
    60080000 - 60089810
    $$
    Micropython build for T4.1..
    Code:
    kurte@DESKTOP-BVOH5B0:~/github/teensy_loader_cli$ ./teensy_loader_dmp ~/github/micropython/ports/mimxrt/build-TEENSY41/firmware.hex
    60000000 - 60000200
    60001000 - 60001030
    60002000 - 60010000
    60010000 - 60020000
    60020000 - 60030000
    60030000 - 60040000
    60040000 - 60050000
    60050000 - 60060000
    60060000 - 6006d128
    $$
    Next up go through my CLI program and dump program and see if there are other hints in hex file I am not reporting.

  10. #35
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,798
    The only other thing I thought I would test, is to verify that on the same Teensy (4.1) if an Arduino sketch created a LittleFS_Program disk starting at the same place if it was retained or not.

    So I hacked up the mtp_teensy example sketch simplified/Example_1_MTP_LittleFS.ino sketch to size the LittleFS_Program disk to be such that it started at 0x60100000
    And see if it would retain the data.
    Code:
      // I want it to start at 0x60100000 like CircuitPython flash data.
      #if defined(ARDUINO_TEENSY40)
      #define FLASH_SIZE  0x1F0000
      #elif defined(ARDUINO_TEENSY41)
      #define FLASH_SIZE  0x7C0000
      #elif defined(ARDUINO_TEENSY_MICROMOD)
      #define FLASH_SIZE  0xFC0000
      #endif
      // LittleFS uses to compute the baseaddr...
      //  baseaddr = 0x60000000 + FLASH_SIZE - size;
      // So I want size ....
       uint32_t  disk_size = (0x60000000 + FLASH_SIZE) - 0x60100000;
       progdisk.begin(disk_size);   // minimum program disk size is 256k.
    I edited littlefs code to enable some of the commented out prints and verified that was the address computed.

    I then programmed T4.1 with it. and in MTP added some files.
    I then rebooted. Still there.... I then reprogrammed... Still there.

    I then took the changes over to my Ubuntu machine (as I don't have a build of teensy_loader_cli for windows)... Someday will setup to build it...
    I then tried programming again using Beta 1 with Teensy app and it worked. I also tried it with teensy_loader_cli and still worked.

    Still looked like similar ranges in hex file:
    Code:
    kurte@DESKTOP-BVOH5B0:~/github/teensy_loader_cli$ ./teensy_loader_dmp /mnt/c/Users/kurte/AppData/Local/Temp/arduino_build_Example_1_MTP_LittleFS.ino/Example_1_MTP_LittleFS.ino.hex
    60000000 - 60010000
    60010000 - 6001b000
    $$
    I don't know anything else to try here. SO will put this on the shelf for now.

  11. #36
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,798
    Quote Originally Posted by KurtE View Post
    I don't know anything else to try here. SO will put this on the shelf for now.
    I lied

    I wondered as the only real difference between Teensy build and these other builds was these other builds left areas in their region of memory that they did not write anything to.

    So I hacked up a copy of the teensy_loader_cli.c
    And added a -f option which fills the holes in the memory ranges with 0's

    again quick and dirty.

    Pushed up a new fork/branch (experiments) with this plus the range dumper code...
    https://github.com/KurtE/teensy_load...ee/experiments

    I then loaded it up on my Ubuntu machine. I used it to flash the CircuitPython sketch with this option... Reboooted, copied a couple other files on it.
    Then reprogrammed it again using this option...

    And the files were still there

    So probably a pretty good hint.

  12. #37
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,798
    Note: Not sure if the one time that I thought the files was preserved was a fluke or not.

    As I mentioned up on other thread, finally have version of teensy_loader_cli I can build with VisualStudio 2022, so now easier to play with changes.

    Still trying to figure out what controls how much of the flash is erased. And what main thing is different with the CircuitPython (short hand CPy) hex files
    versus normal arduino built...

    One hint earlier in the thread was I think the boot data area So I print out this data now and found the size was set to 8mb...
    So I updated the build to get it to match the ending of the flash data, as you can see from the debug output:
    Code:
    D:\>teensy_loader_cli --mcu=teensy41 -w -v -d firmware_41.hex
    Teensy Loader, Command Line, Version 2.S
    60000000 - 60000200
    60001000 - 60001030
    6000c000 - 60010000
    60010000 - 60020000
    60020000 - 60030000
    60030000 - 60040000
    60040000 - 60050000
    60050000 - 60060000
    60060000 - 60070000
    60070000 - 60080000
    60080000 - 60089790
    $$
    
    Boot data: 60000000 00089790(563088) 00000000
    Read "firmware_41.hex": 514496 bytes, 6.3% usage
    Found HalfKay Bootloader
    Programming...............
    Booting
    But it still erased the file system... Debug output from Cpy:
    Code:
    And it still erases the File system, which I confirmed in CPy debug code
            After check_fs fmt:2
            flash_read_blocks block:1 nb:1
            supervisor_flash_read_blocks block:0 nb:1 src:60100000
    check_fs sect=1
            000 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            010 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            020 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
            030 : FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF : ................
    ...
    Again as compared to Teensy build with LittleFS program setup to start at same address, with a bunch of garbage added to get the image size larger
    Code:
    C:\Users\kurte\AppData\Local\Temp\arduino_build_837163>teensy_loader_cli --mcu=teensy41 -w -v -d mtp_littlefs_retain_test.ino.hex
    Teensy Loader, Command Line, Version 2.S
    60000000 - 60010000
    60010000 - 60020000
    60020000 - 60030000
    60030000 - 60040000
    60040000 - 60050000
    60050000 - 60060000
    60060000 - 60070000
    60070000 - 60080000
    60080000 - 60090000
    60090000 - 600a0000
    600a0000 - 600a7800
    $$
    
    Boot data: 60000000 000a7800(686080) 00000000
    Read "mtp_littlefs_retain_test.ino.hex": 686080 bytes, 8.4% usage
    Found HalfKay Bootloader
    Programming...........................................
    And the file system was retained.

    Debug output from sketch:
    Code:
    Boot data: 60000000 000a7800(686080) 00000000
    Program flash begin
    size in bytes - 7077888 
    FLASH_SIZE - 8126464, program_size - 686080
    available_space = 7440384
    size - 7077888,  baseaddr = 60100000
    One thing that confused me was that in the Teensy build the three lines matched:

    600a0000 - 600a7800
    Boot data: 60000000 000a7800(686080) 00000000
    Read "mtp_littlefs_retain_test.ino.hex": 686080 bytes, 8.4% usage

    But in the Cpy, The () value and the Read value did not match. But figured out the Read was how many bytes were read for the hex and in the case of Teensy build, the whole range from MIN to MAX is read so it matches, but in Cpy case there are the gaps.

    Now back to...

  13. #38
    Member
    Join Date
    May 2015
    Location
    Germany
    Posts
    34
    Thanks for the investigations. I tried as well to create images without gaps, but that did not change the picture. I had also cases (see my initial post) where the files systems seemed to be retained. But that was only due to the bootloader not erasing all data, if the image was not that large. With the firmware image growing, that did not happen any more.

    P.S.: Sorry for responding late. For some reason I do not get a notification if someone writes to that thread. Meanwhiel I just added a note to my documentation that the Teensy loader might fail, and people should just retry.

  14. #39
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,798
    @roberthh - Note: the gaps in the address was a red herring...

    I have since then done a PR, which has been merged for CircuitPython

    https://github.com/adafruit/circuitpython/pull/6425

    The PR has the details about a couple things I needed to change.
    Started it at one point on MicroPython, but then went off in different direction

  15. #40
    Member
    Join Date
    May 2015
    Location
    Germany
    Posts
    34
    Thanks. I'll look into that. Just hacking the version number was not sufficient. And I know that I fixed the image length during my trials. But I have to verify.

  16. #41
    Member
    Join Date
    May 2015
    Location
    Germany
    Posts
    34
    It works to some extend. The teensy loader still fails at the first attempt, with the log:
    Code:
    teensy_loader_cli --mcu=TEENSY40 -v -w build-TEENSY40/firmware.hex
    Teensy Loader, Command Line, Version 2.2
    Read "build-TEENSY40/firmware.hex": 353348 bytes, 17.4% usage
    Found HalfKay Bootloader
    Programming...error writing to Teensy
    I assumes that this confused me. But on the second attempt it loads and keeps the file system.
    The version numbers of teensy_loader_cli differ. Your's is 2.5, mine is 2.2, which is the one from the most recent repository state.
    Trying with a Teensy 4.0.
    Last edited by roberthh; 06-23-2022 at 08:03 AM.

  17. #42
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,798
    I believe that 2.2 is the current released one.
    I do have my own version, although not sure if I changed the version number.
    I did add a few things I could remove, that I used to debug... Like option to show the ranges of memory contained within the file, and the fill holes option...

    The main difference in a Pull Request I have still pending into the CLI: https://github.com/PaulStoffregen/te...er_cli/pull/79
    Is I made a version that I could build on Windows using Visual Studio.

    Not sure if Paul will pull it in or not... Could remove the other extensions...

  18. #43
    Member
    Join Date
    May 2015
    Location
    Germany
    Posts
    34
    Strange enough, the upload error does not appear when using the GUI version of the teensy loader. Before I tried the CLI version.

  19. #44
    Junior Member
    Join Date
    Jul 2022
    Posts
    3
    I am experiencing similar issues with the flash memory seemingly not being fully erased. For some context, I am using Paul's littlefs wrapper to create a particular file in littlefs system if it does not exist on each power up. Thus, each time I flash, logically it should create a new file. It worked for quite some time but after many re-flashes over the last couple of months, this file started to persist across flashes.

    The only ways I can truly remove the file is to either A) explicitly erase the file with littlefs API or B) do the 15 seconds hold down on the pushbutton and restore to the blinky program. But in subsequent flashes, the file continues to persist.

    I've attached the .HEX file for reference (note, I've changed to extension to .c to get past the max file size restrictions).
    Attached Files Attached Files

  20. #45
    Member
    Join Date
    May 2015
    Location
    Germany
    Posts
    34
    Quote Originally Posted by lekok View Post
    I am experiencing similar issues with the flash memory seemingly not being fully erased. For some context,
    My concern was the opposite, that I wanted to keep the flash filesystem, but it was erased all the time. One thing I learned, that at certain time in the past, teensyduino would install a new bootloader to the board, which would NOT erase the file system. Maybe that happened to you, if you updated Teensyduino, which then changed the firmware update behavior.

    The way it works now is almost perfect for me. I just notice a difference between the command-line Teensy loader and the GUI type Teensy loader, that is started by teensyduino. The command line loader fails on the first attempt.

  21. #46
    Senior Member+ KurtE's Avatar
    Join Date
    Jan 2014
    Posts
    10,798
    Quote Originally Posted by lekok View Post
    I am experiencing similar issues with the flash memory seemingly not being fully erased. For some context, I am using Paul's littlefs wrapper to create a particular file in littlefs system if it does not exist on each power up. Thus, each time I flash, logically it should create a new file. It worked for quite some time but after many re-flashes over the last couple of months, this file started to persist across flashes.

    The only ways I can truly remove the file is to either A) explicitly erase the file with littlefs API or B) do the 15 seconds hold down on the pushbutton and restore to the blinky program. But in subsequent flashes, the file continues to persist.

    I've attached the .HEX file for reference (note, I've changed to extension to .c to get past the max file size restrictions).
    By design with the new boot loader:
    Some details are up on the page: https://www.pjrc.com/teensy/td_code_security.html in the section: Minimum Erase Size.

    One hack you can do is to make your LittleFS FS be sufficiently large that it extends into the area not preserved.

  22. #47
    Junior Member
    Join Date
    Jul 2022
    Posts
    3
    Quote Originally Posted by roberthh View Post
    I just notice a difference between the command-line Teensy loader and the GUI type Teensy loader, that is started by teensyduino. The command line loader fails on the first attempt.
    Yes, I noticed this as well with the cli version. It was not always like this as far as I recall.

    Quote Originally Posted by KurtE View Post
    By design with the new boot loader:
    Some details are up on the page: https://www.pjrc.com/teensy/td_code_security.html in the section: Minimum Erase Size.

    One hack you can do is to make your LittleFS FS be sufficiently large that it extends into the area not preserved.
    Thanks for the information! I'm very much a beginner so this is new to me, appreciate it. But I have some questions with regards to this hack. Would this cause part of the filesystem to be erased while the remaining is intact? Can this cause issues with littlefs? Is there a more "proper" solution(s)?

  23. #48
    Senior Member+ defragster's Avatar
    Join Date
    Feb 2015
    Posts
    16,252
    Quote Originally Posted by lekok View Post
    ...
    Thanks for the information! I'm very much a beginner so this is new to me, appreciate it. But I have some questions with regards to this hack. Would this cause part of the filesystem to be erased while the remaining is intact? Can this cause issues with littlefs? Is there a more "proper" solution(s)?
    LFS stores a signature at the start. If that is missing then it will be created 'new'. So if upload format ( in the mandatory minimum area ) where code storage is not needed is used for LFS then losing those first bytes will fail to mount as existing, and start fresh.

    A better way - if the LFS was to be selectively destroyed when new code was uploaded, would be to track the compile time {there was a post to this effect back some weeks} and use that to make a signature stored in EEPROM or perhaps an ID file on the LFS drive. When it doesn't match - format the drive fresh in setup.

    Found that thread: How-to-make-LittleFS_Program-NOT-persistent-across-programming-cycles-on-MicroMod

  24. #49
    Junior Member
    Join Date
    Jul 2022
    Posts
    3
    Quote Originally Posted by defragster View Post
    LFS stores a signature at the start. If that is missing then it will be created 'new'. So if upload format ( in the mandatory minimum area ) where code storage is not needed is used for LFS then losing those first bytes will fail to mount as existing, and start fresh.

    A better way - if the LFS was to be selectively destroyed when new code was uploaded, would be to track the compile time {there was a post to this effect back some weeks} and use that to make a signature stored in EEPROM or perhaps an ID file on the LFS drive. When it doesn't match - format the drive fresh in setup.

    Found that thread: How-to-make-LittleFS_Program-NOT-persistent-across-programming-cycles-on-MicroMod
    Thank you for the help!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •