Π Π°Π±ΠΎΡΠ° Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌΠΈ STM32 ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°Π΄ΡΠΆΠ½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ, ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΠ STM32CubeProgrammer ΠΎΡ STMicroelectronics ΡΡΠ°Π»ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ Π΄Π»Ρ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ², Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ Π²ΡΠ΅Ρ
ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ² STM32, Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌ (SWD, JTAG, UART, USB DFU) ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ STM32CubeIDE. ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ Π½ΡΠ°Π½ΡΠ°ΠΌΠΈ: ΠΎΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π·Π°ΡΠΈΡΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠ° ΡΡΠ°ΡΡΡ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠΊΠ°Π· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠ΄Π΅ΡΡ Π²Ρ Π½Π°ΠΉΠ΄ΡΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡ
Π΅ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ
Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠ² (ST-Link, J-Link), ΡΠ°Π·Π±ΠΎΡ ΡΠΈΠΏΠΈΡΠ½ΡΡ
ΠΎΡΠΈΠ±ΠΎΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Error: No STM32 target found!), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π° β ΠΎΡ Π·Π°ΡΠΈΡΡ ΠΊΠΎΠ΄Π° Π΄ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ ΡΠ΅ΡΠ΅Π· Quad-SPI. ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ STM32H7 ΠΈ STM32U5, Π³Π΄Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°ΡΡΠΎ Π΄Π°ΡΡ ΡΠ±ΠΎΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ STM32CubeProgrammer ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½
STM32CubeProgrammer β ΡΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² STM32, Π·Π°ΠΌΠ΅Π½ΡΡΡΠΈΠΉ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡ Π²ΡΠΎΠ΄Π΅ Flash Loader Demonstrator ΠΈΠ»ΠΈ STVP. ΠΠ³ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
- πΉ ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠ΅Ρ
ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ² STM32 β ΠΎΡ STM32F0 Π΄ΠΎ STM32H7 ΠΈ STM32U5, Π²ΠΊΠ»ΡΡΠ°Ρ Π½ΠΎΠ²ΡΠ΅ ΡΠ΄ΡΠ°
Cortex-M33/M7. - πΉ ΠΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°:
SWD(Π΄ΠΎ 50 ΠΠΡ),JTAG,UART,USB DFU,I2C,SPI,CAN. - πΉ ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΊΠΎΠ΄Π°: ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
RDP(Read Protection), ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡOPTBYTES. - πΉ ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ STM32CubeIDE ΠΈ Keil/IAR ΡΠ΅ΡΠ΅Π· ΠΏΠ»Π°Π³ΠΈΠ½Ρ.
- πΉ ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΊΡΠΈΠΏΡΠΎΠ² (CLI) Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ Π² ΡΠ΅ΡΠΈΠΉΠ½ΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅.
ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, OpenOCD ΠΈΠ»ΠΈ J-Flash) β ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° STMicroelectronics, ΡΡΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ»ΡΠΊΠΎ CubeProgrammer ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π·Π°ΡΠΈΡΡΠ½Π½ΡΠΌΠΈ ΠΎΠ±Π»Π°ΡΡΡΠΌΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π² STM32H7, Π³Π΄Π΅ OpenOCD ΠΌΠΎΠΆΠ΅Ρ Π΄Π°Π²Π°ΡΡ ΡΠ±ΠΎΠΈ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ OPTBYTES.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ΅ΡΡΠΈΠΈ STM32CubeProgrammer Π½ΠΈΠΆΠ΅ 2.12 Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π½Π° ΡΠ΄ΡΠ΅Cortex-M33(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, STM32U5). ΠΠ΅ΡΠ΅Π΄ ΡΠ°Π±ΠΎΡΠΎΠΉ Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΠ ΡΠ΅ΡΠ΅Π·STM32CubeMXΠΈΠ»ΠΈ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡ STM32CubeProgrammer Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° ΡΠ°ΠΉΡΠ΅ STMicroelectronics Π² ΡΠ°Π·Π΄Π΅Π»Π΅ STM32CubeProg. ΠΡΠΎΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ, Π½ΠΎ Π΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ:
- ΠΡΠ±ΠΎΡ Π²Π΅ΡΡΠΈΠΈ: ΠΠ»Ρ Windows Π΄ΠΎΡΡΡΠΏΠ½Ρ
32-bitΠΈ64-bitΡΠ±ΠΎΡΠΊΠΈ. ΠΠ»Ρ Linux/MacOS β ΡΠΎΠ»ΡΠΊΠΎ64-bit(ΡΡΠ΅Π±ΡΠ΅ΡJavaΠ΄Π»Ρ GUI). - ΠΡΠ°ΠΉΠ²Π΅ΡΡ: ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ST-Link ΠΈΠ»ΠΈ J-Link ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΈΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ
STSW-LINK009Π΄Π»Ρ ST-Link. - ΠΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°: ΠΠ° Linux Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π³ΡΡΠΏΠΏΡ
dialout:sudo usermod -a -G dialout $USER
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ:
STM32_Programmer_CLI --version
ΠΡΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, v2.14.0).
- ST-Link
- J-Link
- DAPLink
- ΠΡΡΠ³ΠΎΠΉ (ΡΠΊΠ°Π·Π°ΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ )
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ: SWD vs JTAG vs UART
ΠΡΠ±ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π·Π°Π΄Π°ΡΠΈ. SWD (Serial Wire Debug) β ΡΠ°ΠΌΡΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΡΠ΅ (Π²ΡΠ΅Π³ΠΎ 2 ΡΠΈΠ³Π½Π°Π»Π°: CLK ΠΈ DIO). ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° STM32H7 ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ JTAG (5 ΡΠΈΠ³Π½Π°Π»ΠΎΠ²), ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ΄Π΅Ρ.
| ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ | Π‘ΠΊΠΎΡΠΎΡΡΡ | ΠΠΎΠ»-Π²ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² | ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ |
|---|---|---|---|
SWD |
ΠΠΎ 50 ΠΠΡ | 2 (CLK, DIO) |
ΠΡΠΎΡΠΈΠ²ΠΊΠ°, Π±Π°Π·ΠΎΠ²Π°Ρ ΠΎΡΠ»Π°Π΄ΠΊΠ° |
JTAG |
ΠΠΎ 15 ΠΠΡ | 5 (TDI, TDO, TMS, TCK, GND) |
ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ ΠΎΡΠ»Π°Π΄ΠΊΠ°, ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° |
UART |
ΠΠΎ 115200 Π±ΠΎΠ΄ | 2 (TX, RX) |
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ°, Π»ΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ |
USB DFU |
Full-Speed (12 ΠΠ±ΠΈΡ/Ρ) | 2 (USB D+, USB D-) |
ΠΡΠΎΡΠΈΠ²ΠΊΠ° Π±Π΅Π· ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π°) |
ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· SWD ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡ
Π΅ΠΌΡ (ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ STM32F407):
- π
SWDIOβPA13(ΠΈΠ»ΠΈPB3Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ»Π°ΡΠ°Ρ ). - π
SWCLKβPA14(ΠΈΠ»ΠΈPB4). - π
GNDβ ΠΎΠ±ΡΠΈΠΉGNDΠΏΠ»Π°ΡΡ. - π
3.3VβVCC(ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ΅Π»Π΅Π²Π°Ρ ΠΏΠ»Π°ΡΠ° Π½Π΅ Π·Π°ΠΏΠΈΡΠ°Π½Π°).
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΏΠ»Π°ΡΠ°ΠΌ Ρ STM32H7 ΡΠ΅ΡΠ΅Π·SWDΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (4 ΠΠΡ) ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°ΡΡΠΎΡΡ1 ΠΠΡΠ² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ CubeProgrammer (Settings β SWD Frequency).
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ Π»ΠΈ ST-Link/J-Link ΠΊ USB?|ΠΠΎΠ΄Π°Π½ΠΎ Π»ΠΈ ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π»Π΅Π²ΡΡ ΠΏΠ»Π°ΡΡ?|ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ SWDIO/SWCLK?|Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π»ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π΄Π»Ρ Π°Π΄Π°ΠΏΡΠ΅ΡΠ°?-->
ΠΡΠΎΡΠΈΠ²ΠΊΠ° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°: ΠΏΠΎΡΠ°Π³ΠΎΠ²Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ STM32F407 ΡΠ΅ΡΠ΅Π· SWD Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»Π° .hex:
- ΠΠ°ΠΏΡΡΠΊ CubeProgrammer: ΠΡΠΊΡΠΎΠΉΡΠ΅ GUI-Π²Π΅ΡΡΠΈΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ CLI (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ).
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: ΠΠ°ΠΆΠΌΠΈΡΠ΅
Connectβ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠΎΡΡSWDΠΈ ΡΠ°ΡΡΠΎΡΡ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ4 MHzΠ΄Π»Ρ STM32F4). - Π§ΡΠ΅Π½ΠΈΠ΅ ID: ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅
Device ID(Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ Π΄Π°ΡΠ°ΡΠΈΡΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,0x413Π΄Π»Ρ STM32F407). - ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π°: Π ΡΠ°Π·Π΄Π΅Π»Π΅
FileΠ²ΡΠ±Π΅ΡΠΈΡΠ΅.hexΠΈΠ»ΠΈ.binΡΠ°ΠΉΠ». ΠΠ»Ρ.binΡΠΊΠ°ΠΆΠΈΡΠ΅ ΡΡΠ°ΡΡΠΎΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,0x08000000). - ΠΡΠΎΡΠΈΠ²ΠΊΠ°: ΠΠ°ΠΆΠΌΠΈΡΠ΅
Downloadβ Π΄ΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ (ΠΏΡΠΎΠ³ΡΠ΅ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² Π»ΠΎΠ³Π΅). - ΠΡΠΎΠ²Π΅ΡΠΊΠ°: ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅
VerifyΠ΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π²ΠΎ flash ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
ΠΠ»Ρ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π° ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ CLI-ΡΠ΅ΠΆΠΈΠΌ. ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ firmware.hex Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ:
STM32_Programmer_CLI -c port=SWD -d firmware.hex -v -rst
Π€Π»Π°Π³ -rst Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ±ΡΠΎΡ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ.
ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Error: Flash memory not erased, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π°Π³ -e all Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΈΡΠ°Π½ΠΈΡ Π²ΡΠ΅ΠΉ flash-ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΠΈΡΡΡ.
Π Π°Π±ΠΎΡΠ° Ρ Π·Π°ΡΠΈΡΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ (OPTBYTES)
ΠΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ STM32 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠ²Π½Π΅ΠΉ Π·Π°ΡΠΈΡΡ ΠΊΠΎΠ΄Π°:
- π
RDP (Read Protection): ΠΠ°ΠΏΡΠ΅ΡΠ°Π΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ flash-ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΅ΡΠ΅Π· ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ. Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π·Option Bytes. - π
Write Protection (WRP): ΠΠ»ΠΎΠΊΠΈΡΡΠ΅Ρ Π·Π°ΠΏΠΈΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΡΠ΅ΠΊΡΠΎΡΠ° flash. - π
Secure Area: ΠΠ°ΡΠΈΡΡΠ½Π½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π»Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ (Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π² STM32H7/U5).
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ RDP Π² CubeProgrammer:
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΠΊ ΠΠ ΡΠ΅ΡΠ΅Π·
SWD. - ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»
Option Bytes. - Π ΠΏΠΎΠ»Π΅
Read ProtectionΠ²ΡΠ±Π΅ΡΠΈΡΠ΅Level 1(Π·Π°ΠΏΡΠ΅Ρ ΡΡΠ΅Π½ΠΈΡ) ΠΈΠ»ΠΈLevel 2(ΠΏΠΎΠ»Π½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°, Π²ΠΊΠ»ΡΡΠ°Ρ JTAG). - ΠΠ°ΠΆΠΌΠΈΡΠ΅
Applyβ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°RDP Level 2Π½Π΅ΠΎΠ±ΡΠ°ΡΠΈΠΌΠΎ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ β ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ flash ΡΠ΅ΡΠ΅Π·USB DFU(Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ) ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π° ΡΠΈΠΏΠ°.
ΠΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ RDP Level 1 Π±Π΅Π· ΡΡΠΈΡΠ°Π½ΠΈΡ flash?
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ»ΡΡΠ°ΡΡ
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ STM32F1) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π² Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ΅ (USART bootloader), ΠΎΡΠΏΡΠ°Π²Π»ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 0x44 Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ½ΡΡΠΈΡ Π·Π°ΡΠΈΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Π½ΠΎΠ²ΡΡ
ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π°Ρ
(STM32H7, STM32U5) ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
.
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ°ΠΆΠ΅ ΠΏΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ STM32CubeProgrammer ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΄Π°Π²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅:
| ΠΡΠΈΠ±ΠΊΠ° | ΠΡΠΈΡΠΈΠ½Π° | Π Π΅ΡΠ΅Π½ΠΈΠ΅ |
|---|---|---|
No STM32 target found! |
ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ SWD ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΡ. |
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ SWDIO/SWCLK ΠΈ ΠΏΠΎΠ΄Π°ΡΡ 3.3V. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°ΡΡΠΎΡΡ Π΄ΠΎ 1 MHz. |
Error: Flash memory not erased |
Π‘Π΅ΠΊΡΠΎΡΠ° flash Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Ρ WRP ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Ρ. |
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Erase β Full chip erase ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Option Bytes. |
Error: Option Bytes write failed |
ΠΠΎΠΏΡΡΠΊΠ° Π·Π°ΠΏΠΈΡΠ°ΡΡ OPTBYTES ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π·Π°ΡΠΈΡΠ΅ RDP. |
Π‘Π½ΠΈΠΌΠΈΡΠ΅ RDP (Π΅ΡΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ) ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ USB DFU Π΄Π»Ρ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. |
Error: Cannot connect to the target |
ΠΠΎΠ½ΡΠ»ΠΈΠΊΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΈΠ»ΠΈ Π·Π°Π½ΡΡΡΠΉ ΠΏΠΎΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, OpenOCD). | ΠΠ°ΠΊΡΠΎΠΉΡΠ΅ Π²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ. ΠΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ST-Link. |
ΠΠ»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
STM32_Programmer_CLI -c port=SWD -r
ΠΠ½Π° Π²ΡΠ²Π΅Π΄Π΅Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅Π»Π΅Π²ΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅, Π²ΠΊΠ»ΡΡΠ°Ρ Device ID ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Option Bytes.
ΠΡΠ»ΠΈ STM32CubeProgrammer Π½Π΅ Π²ΠΈΠ΄ΠΈΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ, Π½ΠΎ ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π°ΡΡΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅ΠΏΡ NRST. ΠΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΠ»Π°ΡΠ°Ρ
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Blue Pill) ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΡΡΠΆΠΊΠ° NRST ΠΊ 3.3V ΡΠ΅ΡΠ΅Π· ΡΠ΅Π·ΠΈΡΡΠΎΡ 10kΞ©.
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π°
Π ΡΠ΅ΡΠΈΠΉΠ½ΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅ ΡΡΡΠ½Π°Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°. STM32CubeProgrammer ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π·:
- π Π‘ΠΊΡΠΈΠΏΡΡ CLI: ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π²
.batΠΈΠ»ΠΈ.shΡΠ°ΠΉΠ»Π΅. - π STM32CubeProgrammer API: ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Python ΠΈΠ»ΠΈ C# ΡΠ΅ΡΠ΅Π· Π²ΡΠ·ΠΎΠ² CLI.
- π ΠΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ STM32CubeIDE: ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ° Π΄Π»Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ 10 ΡΡΡΡΠΎΠΉΡΡΠ² ΠΏΠΎΠ΄ΡΡΠ΄ Ρ Π»ΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ:
@echo off
for /L %%i in (1,1,10) do (
echo ΠΡΠΎΡΠΈΠ²ΠΊΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π° %%i
STM32_Programmer_CLI -c port=SWD -d firmware.hex -v -logs log_%%i.txt
if %ERRORLEVEL% neq 0 (
echo ΠΡΠΈΠ±ΠΊΠ° Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ %%i
pause
)
)
ΠΠΎΠ³ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ
log_1.txt, log_2.txt ΠΈ Ρ.Π΄.
ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅:
- π ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
Quad-SPIΠ²ΠΌΠ΅ΡΡΠΎSWD(Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π½Π° STM32H7/U5). - π ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ (
-v off) Π΅ΡΠ»ΠΈ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ. - π ΠΡΠΎΡΠΈΠ²Π°ΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΡΠ΅ ΡΠ΅ΠΊΡΠΎΡΠ° (ΡΠ»Π°Π³
-s).
FAQ: Π§Π°ΡΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ STM32CubeProgrammer
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΡΠΎΡΠΈΡΡ STM32 ΡΠ΅ΡΠ΅Π· UART Π±Π΅Π· ST-Link?
ΠΠ°, Π΅ΡΠ»ΠΈ Π² ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΠΏΠΎ USART (bootloader). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅
TX/RXΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,PA9/PA10Π΄Π»Ρ STM32F4). - Π£Π΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ
BOOT0Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈHIGHΠΏΡΠΈ ΠΏΠΎΠ΄Π°ΡΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΡ. - ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΡΠ°ΠΉΠ» ΡΠ΅ΡΠ΅Π· STM32CubeProgrammer Π² ΡΠ΅ΠΆΠΈΠΌΠ΅
UART(ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β115200Π±ΠΎΠ΄).
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅: ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ flash Π·Π°ΡΠΈΡΡΠ½ RDP Level 2.
ΠΠ°ΠΊ ΠΏΡΠΎΡΠΈΡΡ STM32H7 ΡΠ΅ΡΠ΅Π· Quad-SPI?
STM32H7 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠΈΠ²ΠΊΡ ΡΠ΅ΡΠ΅Π· Quad-SPI (Π΄ΠΎ 4 Π»ΠΈΠ½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ
), ΡΡΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ Π² 2-3 ΡΠ°Π·Π°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅
QSPIΠΊ Π°Π΄Π°ΠΏΡΠ΅ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ST-Link Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉQSPI). - Π CubeProgrammer Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠΎΡΡ
QSPIΠΈ ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,4-4-4Π΄Π»Ρ ΡΠ΅ΡΡΡΡΡ Π»ΠΈΠ½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ ). - ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΠ°ΠΉΠ» Π² ΡΠΎΡΠΌΠ°ΡΠ΅
.binΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π³ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΠΎΡΠ° (ΠΎΠ±ΡΡΠ½ΠΎ256 Π±Π°ΠΉΡ).
Π‘ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡ 100 ΠΠΡ, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΈΡΠ°Π½ΠΈΡ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ 3.3V Ρ ΡΠΎΠΊΠΎΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 500 ΠΌΠ).
ΠΠΎΡΠ΅ΠΌΡ CubeProgrammer Π½Π΅ Π²ΠΈΠ΄ΠΈΡ J-Link?
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π° Ρ:
- π ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² J-Link (ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ J-Link Software Pack).
- π ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠΌ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, OZone ΠΈΠ»ΠΈ Keil). ΠΠ°ΠΊΡΠΎΠΉΡΠ΅ Π²ΡΠ΅ IDE ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ.
- π ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ Π² CubeProgrammer: Π²ΡΠ±Π΅ΡΠΈΡΠ΅
J-LinkΠ² ΡΠΏΠΈΡΠΊΠ΅ Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠ² (Settings β Debug Probe).
ΠΠ»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ J-Link Commander ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π»ΠΈ Π°Π΄Π°ΠΏΡΠ΅Ρ.
ΠΠ°ΠΊ ΡΠ±ΡΠΎΡΠΈΡΡ RDP Level 2 Π½Π° STM32?
ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ RDP Level 2, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ (ΡΠ΅ΡΠ΅Π· SWD/JTAG) Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
- π ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
USB DFU(Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ: - ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅
USBΠΊ ΠΏΠΎΡΡΡDFU(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,PA11/PA12Π΄Π»Ρ STM32F4). - Π£Π΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅
BOOT0Π²HIGHΠΏΡΠΈ ΠΏΠΎΠ΄Π°ΡΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΡ. - ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ CubeProgrammer Π² ΡΠ΅ΠΆΠΈΠΌΠ΅
USBΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Full erase.
DFU (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, STM32F0) ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ²ΠΊΠ° ΡΠ΅ΡΠ΅Π· JTAG Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ (ΠΌΠ΅ΡΠΎΠ΄ "hot-plug").β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π‘Π±ΡΠΎΡ RDP Level 2 ΡΡΠΈΡΠ°Π΅Ρ Π²ΡΡ flash-ΠΏΠ°ΠΌΡΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Option Bytes.
ΠΠ°ΠΊΡΡ Π²Π΅ΡΡΠΈΡ CubeProgrammer Π²ΡΠ±ΡΠ°ΡΡ Π΄Π»Ρ STM32U5?
ΠΠ»Ρ STM32U5 (ΡΠ΄ΡΠΎ Cortex-M33) ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΡ Π½Π΅ Π½ΠΈΠΆΠ΅ 2.12. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΡΠ±ΠΎΡΠΊΡ (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ β 2.14.0), ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² Π½Π΅ΠΉ:
- πΉ ΠΡΠΏΡΠ°Π²Π»Π΅Π½Ρ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΡΠ΅Π½ΠΈΡ
OPTBYTESΠ΄Π»ΡTrustZone. - πΉ ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
Secure BootΠΈSecure Firmware Update (SFU). - πΉ ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ
Quad-SPI(ΡΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎ133 MHz).
Π‘ΠΊΠ°ΡΠ°ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ ST.