platformio / platform-ststm8

ST STM8: development platform for PlatformIO
https://registry.platformio.org/platforms/platformio/ststm8
Apache License 2.0
41 stars 26 forks source link

Unable to compile for STM8AF52xx #55

Open techolga opened 2 years ago

techolga commented 2 years ago

Hi, I tried to get a custom Board running when I realized that I am not able to compile for targets with longer label than 8 characters.

https://github.com/platformio/platform-ststm8/blob/00bed19beec29236654bc3b239f03e0137931abe/builder/frameworks/spl.py#L46

I tried to use board_build.mcu = stm8af52ax in platform.ini and the SPL needs to have STM8AF52Ax to be defined. There are several targets that have a different definition schema.

 /* #define STM8S208 */      /*!< STM8S High density devices with CAN */
 /* #define STM8S207 */      /*!< STM8S High density devices without CAN */
 /* #define STM8S007 */      /*!< STM8S Value Line High density devices */
 /* #define STM8AF52Ax */    /*!< STM8A High density devices with CAN */
 /* #define STM8AF62Ax */    /*!< STM8A High density devices without CAN */
 /* #define STM8S105 */      /*!< STM8S Medium density devices */
 /* #define STM8S005 */      /*!< STM8S Value Line Medium density devices */
 /* #define STM8AF626x */    /*!< STM8A Medium density devices */
 /* #define STM8AF622x */    /*!< STM8A Low density devices */
 /* #define STM8S103 */      /*!< STM8S Low density devices */
 /* #define STM8S003 */      /*!< STM8S Value Line Low density devices */
 /* #define STM8S903 */      /*!< STM8S Low density devices */
 /* #define STM8S001 */      /*!< STM8S Value Line Low denisty devices */

A similar problem could appear with the arduino framework. https://github.com/platformio/platform-ststm8/blob/00bed19beec29236654bc3b239f03e0137931abe/builder/frameworks/arduino.py#L72

Also I found the stm8flash target to not fit https://github.com/platformio/platform-ststm8/blob/00bed19beec29236654bc3b239f03e0137931abe/builder/main.py#L163

correct target would be stm8af52a? according to https://github.com/vdudouyt/stm8flash

techolga commented 2 years ago

I solved the flash target with setting "stm8flash_target": "stm8af52A?" in the upload section of my board.json.

for the define flag I went with the following:

    build_mcu = board_config.get("build.mcu")[:9].upper()
    if build_mcu[5] == 'S':
        build_mcu = build_mcu[:8]
    else:
        build_mcu += 'x'

    command = [
        env.subst("$CC"), "-m%s" % board_config.get("build.cpu"),
        "-D%s" % build_mcu,
        "-I.", "-I", "%s" % env.subst("$PROJECT_SRC_DIR"),
        "-Wp-MM", "-E", "stm8s.h"
    ]