You are reading a single comment by @AkosLukacs and its replies. Click here to read the full conversation.
  • Looks like DESPR_PACKED_SYMPTR is not used on the Espruino Wifi or Pico

    I know - pretty sure I checked the Pico with that flag added in though - as far as I can see the issue is the 0x08000000 base address only if there's no bootloader

    @Gordon In the commit the modifications #'place_text_section' : 0x00010000, are on a commented out line :)

    I know that! The important bit is the other line in builld_linker

    For size the missing piece was really 'optimizeflags' : '-Os'

    But that's on by default for RELEASE=1 already??

    Now with those changes the ST-Link just refuses to flash the built binary into the Nucleo

    How are you sending the file? It worked fine for my using st-util (STLink) which uses the binary.

    I know you're fine on the F411, but the F401 would fail. Even now it's:

    PASS - size of 372344 is under 393216 bytes

    And I want to keep the F401 and F411 kind of similar if possible.

  • First things first, pulled the latest (3cc72f8c5), did a build, flash, and it works! Thank you!

    Details below...

    I know that! The important bit is the other line in builld_linker

    Ah, OK, just wasn't sure you missed something. I'm not that deep into Espruino's internals.

    But that's on by default for RELEASE=1 already??

    Looks like for nRF and ESP make yes, but not for STM boards. After pull, with the latest arm gcc toolchain it's a bit over 370k just like you:

    ~/Espruino$ source scripts/provision.sh NUCLEOF411RE
    Provision BOARDNAME = NUCLEOF411RE
    Provision FAMILY = STM32F4
    ===== ARM
    installing gcc-arm-embedded to Espruino/arm-gnu-toolchain-13.2.Rel1-x86­_64-arm-none-eabi/bin
    Folder found
    ~/Espruino$ make clean && BOARD=NUCLEOF411RE RELEASE=1 make
    
    ...
    
    bash scripts/check_size.sh bin/espruino_2v22.24_nucleof411re.bin
    GENDIR not set, assuming 'gen'
    PASS - size of 376968 is under 393216 bytes
    
     ...
     and
     ...
    bash scripts/check_size.sh bin/espruino_2v22.24_nucleof401re.bin
    GENDIR not set, assuming 'gen'
    PASS - size of 376936 is under 393216 bytes
    

    But changing to 'optimizeflags' : '-Os'

    bash scripts/check_size.sh bin/espruino_2v22.24_nucleof411re.bin
    GENDIR not set, assuming 'gen'
    PASS - size of 202624 is under 393216 bytes
    
    bash scripts/check_size.sh bin/espruino_2v22.24_nucleof401re.bin
    GENDIR not set, assuming 'gen'
    PASS - size of 202640 is under 393216 bytes
    

    I know you're fine on the F411, but the F401 would fail. Even now it's:

    The Nucleo F401 is fine - just checked the Nucleo's datasheet - it has an F401RE with the same half meg of flash as the Nucleo F411RE or the Espruino Wifi. "Only" the Espruino Pico has less flash. If the latest datasheet is correct. But I thought the same too :)

    Changing 'optimizeflags' : '-O3', for the Wifi, fails that build too:

    /home/akos/Espruino/arm-gnu-toolchain-13­.2.Rel1-x86_64-arm-none-eabi/bin/../lib/­gcc/arm-none-eabi/13.2.1/../../../../arm­-none-eabi/bin/ld: bin/espruino_2v22.24_wifi.elf section `.text' will not fit in region `FLASH'
    /home/akos/Espruino/arm-gnu-toolchain-13­.2.Rel1-x86_64-arm-none-eabi/bin/../lib/­gcc/arm-none-eabi/13.2.1/../../../../arm­-none-eabi/bin/ld: region `FLASH' overflowed by 99136 bytes
    collect2: error: ld returned 1 exit status
    make: *** [make/targets/ARM.make:3: bin/espruino_2v22.24_wifi.elf] Error 1
    

    How are you sending the file? It worked fine for my using st-util (STLink) which uses the binary.

    This was my mistake, just drag & dropped binary to the Nucleo's mass storage device. Did work before, but doesn't like the new start address. The fantastic STM32CubeProgrammer does work.

About

Avatar for AkosLukacs @AkosLukacs started