一直用的是MSP430和STC51,才开始学习STM32
早就知道,STM32F103有BOOT0和BOOT1两个启动模式选择引脚,当BOOT0接低电平时,会从FLASH正常启动;而BOOT0为高时,会从BootLoader启动,并且BOOT1为低时可以通过串口烧写FLASH,而BOOT1接高电平时,则可烧写SRAM。这样可以把程序烧进RAM里来测试,不用消耗FLASH宝贵的寿命。
那么问题来了,都是关于2个BOOT脚都为1,也就是烧进SRAM的,而且问题有点多:
1、BootLoader烧进SRAM的程序,还能用JTAG来调试吗?比如跑个单步什么的?
2、STM32F030上没有物理的BOOT1引脚,需要配置寄存器,这个寄存器在哪里配置?如果要烧段程序进去才行配置的话,一复位重启,寄存器又恢复默认值了,怎么在上电前四个周期内置BOOT的值来进入SRAM的BootLoader模式呢?
3、如果我的模式还是正常启动,而把J-link烧写的地址从0x0800 0000(FLASH空间首地址)改成0x20000000(SRAM首地址),是不是就可以直接通过SWD或JTAG口往SRAM上烧程序测试,而不需要动BOOT模式了?
烧进RAM的程序一样可以仿真。对于FLASH烧录寿命的问题不用担心,STM32的FLASH寿命多达数万次,等STM32淘汰的时候FLASH都还没坏。单纯改烧写地址不一定可以烧进去,因为BOOT引脚是解除烧录保护的。
程序在RAM里面一样可以仿真,此外,STM32的flash擦写次数声称可以达到1万次,所以无所谓的