请问stm32cubeide在debug烧录时怎么设置擦除全部flash空间

各位,

    我在设计STM32F103RB的升级功能时,把flash划分了三部分,0x8000000~0x8007FFF用作boot;0x08008000~0x0801FFFF用作app,其中0x0801FFF0~0x0801FFFF用作记录app的完整标志,用于boot判断app是否完整,完整则跳转到app。

image.png

(boot工程的ld文件)


image.png    

(app工程的ld文件)


    我看了boot工程生成srec文件,由于工程代码量不到128K,也没有定义数据放置到0x0801FFF0~0x0801FFFF中,所以srec文件并没有看到0x0801FFF0~0x0801FFFF这段flash的信息,而app工程的srec文件是有的。

    image.png

    (boot工程的srec文件内容)


image.png

(app工程的srec文件内容)


   

    现在我碰到的问题是,由于我烧录boot之前烧录过app工程,即便我在boot程序的ld文件中将flash划分为全部128K,但是通过ST-LINK烧录boot时,发现并没有把app的flash段0x0801FFF0~0x0801FFFF置为0xFF,导致我每次调试boot时,都判断app完整,从而跳转到了app,这跟我原本的设计目标不符,我的设计想法是在debug烧录boot时,会将全部flash先清空,然后再写入boot信息。

    之前使用NXP的开发工具S32DS这个IDE时,是有设置选项设置在debug是否擦除全部flash的,目前在stm32cubeide中实在没找到怎么设置。

    望各位指教,谢谢!!

已邀请:

要回复问题请先登录注册