рдмреНрд▓реИрдХ рдореИрдЬрд┐рдХ рдмреНрд▓реВ рдЯреИрдмрд▓реЗрдЯ (рд╣рдо STM32F103 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмреНрд▓реИрдХ рдореИрдЬрд┐рдХ рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ)

рдХреНрдпреЛрдВ?


Arduino UNO рдФрд░ Atmega328 рдХреЗ рдпреБрдЧ рдореЗрдВ, рдореИрдВрдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛, рдкрд╣рд▓реЗ рдПрдХ рдФрд░ Arduino (ISP рдХреЗ рд░реВрдк рдореЗрдВ Arduino) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Arduino рдмреВрдЯрд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдЪрдордХрддрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдФрд░ рдХреЗрд╡рд▓ рдиреЙрд░реНрдбрд┐рдХ рд╕реЗрдореАрдХрдВрдбрдХреНрдЯрд░ nrf51822 рдФрд░ nrf5 рдкрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП Arduino рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рджред рдкрд╣рд▓реА рдмрд╛рд░, рдПрдХ swd рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рдЧрдИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдЖрдк рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдПрдХ рдирдВрдЧреЗ рдЪреАрдиреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд╣реАрдВ рднрд░ рд╕рдХрддреЗред

рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ рдЬрд░реНрдорди рдХрдВрдкрдиреА рд╕реЗрдЧрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЬрд┐рдВрдХрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ, рдЬреЛ рди рдХреЗрд╡рд▓ рдЕрдкрдиреА рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд▓реНрдХрд┐ рдЖрдХрд╛рд╢-рдЙрдЪреНрдЪ рдореВрд▓реНрдп (рд▓рдЧрднрдЧ $ 500-600) рдХреЗ рд▓рд┐рдП рднреА рдЬрд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рд╕реЗрдЧрд░ рдХреЛ рд╢реНрд░рджреНрдзрд╛рдВрдЬрд▓рд┐ рдЕрд░реНрдкрд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЧреИрд░-рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдПрдХ рдИрдбреАрдпреВ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд┐рдВрдХрд▓ рдмреЗрд╕ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд░реВрд╕ рдореЗрдВ 3,000 рд░реВрдмрд▓ рдХреА рд▓рд╛рдЧрдд рд╣реИред рдкрд╕рдВрджреАрджрд╛ Aliexpress рдЪреАрдиреА рдХреНрд▓реЛрдиреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдорд╣рдВрдЧреЗ рд╣реИрдВред

ST рдорд╛рдЗрдХреНрд░реЛрдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╕реЗ ST-LINK / V2 рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, STMicro рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рд╕рдВрдЧрддрддрд╛ рд╕реНрд╡рдпрдВ рдкреНрд░рд╢реНрди рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рдирддреАрдЬрддрди, рдореЗрд░реА рд░рд╛рдп рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЬреЗрдЯреАрдЬреА / рдПрд╕рдбрдмреНрд▓реНрдпреВрдбреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдмреНрд▓реИрдХ рдореИрдЬрд┐рдХ рдкреНрд░реЛрдм (рдмреАрдПрдордкреА) рдкрд░ рдЧрд┐рд░ рдЧрдИ, рдЬрд┐рд╕рдиреЗ рдХрд┐рдХрд╕реНрдЯрд╛рд░реНрдЯрд░ рдкрд░ $ 10,000 рдХреЗ рдШреЛрд╖рд┐рдд рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде $ 47,000 рд╕реЗ рдЕрдзрд┐рдХ рдЙрдард╛рдпрд╛ред

рдХрд╛рд▓рд╛ рдЬрд╛рджреВ рдЬрд╛рдВрдЪ (рдмреАрдПрдордкреА)


рдЫрд╡рд┐

  • рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░; JTAG рдпрд╛ SWD рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдФрд░ рдкреВрд░реНрдг рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рдирд╛
  • рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд GDB рд╕рд░реНрд╡рд░ рд╣реИ (OpenOCD рдЬреИрд╕реЗ рдХреЛрдИ "рдордзреНрдпрд╡рд░реНрддреА" рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)
  • рдПрдЖрд░рдПрдо рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдПрдо рдФрд░ рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдП рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ
  • рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдкрд┐рдЫрд▓реЗ рджреЛ рдореЗрдВ рдпрд╣ рдмрд┐рдирд╛ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)

рдЫрд╡рд┐

Segger Jlink рдФрд░ ST-LINK / V2 рдХреЗ рдЪреАрдиреА рдХреНрд▓реЛрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ BMP рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди:


(+)
  • рдЕрдЪреНрдЫрд╛ рд╡рд┐рд╡реЗрдХ (рдХреЛрдИ рдирдХрд▓реА рдХреНрд▓реЛрди рдирд╣реАрдВ)
  • рд╕рд╕реНрддрд╛рдкрди (рдЙрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ)
  • JTAG рдФрд░ UART рджреЛрдиреЛрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ serial.print рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ arduino- рд╢реИрд▓реА рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ)
  • рдирдП рдлрд░реНрдорд╡реЗрдпрд░ рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреА рдХреНрд╖рдорддрд╛

(-)
  • рд╕рдорд░реНрдерд┐рдд "рд▓рдХреНрд╖реНрдпреЛрдВ" рдХрд╛ рд╕реАрдорд┐рдд рд╕реЗрдЯ (рдЬрд┐рдВрдХрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ)

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, BMP рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдИ рдХрдВрдкрдирд┐рдпрд╛рдВ "рдЖрдзрд┐рдХрд╛рд░рд┐рдХ" рдмреАрдПрдордкреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреА рд▓рд╛рдЧрдд рд▓рдЧрднрдЧ $ 60 рд╣реИ, рдЬреЛ рдХрд┐ рдореВрд▓ рдЬрд┐рдВрдХрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд╕реНрддрд╛ рд╣реИ, рдлрд┐рд░ рднреА DIY рдХреЗ рд▓рд┐рдП рдорд╣рдВрдЧрд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рдЪрд╛рд╣рд┐рдП!


рдХреНрдпрд╛ рдореИрдВ $ 60 рдХрд╛ рднреБрдЧрддрд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╢рд╛рдВрдд рдХрд╛рд▓рд╛ рдЬрд╛рджреВ рдЬрд╛рдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рд╣рд╛рдВред

рдмреНрд▓реИрдХ рдореИрдЬрд┐рдХ рдЬрд╛рдВрдЪ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ STM32F103 рдПрдордХреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╡рд┐рджреЗрд╢реА рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ, рдореБрджреНрд░рд┐рдд рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рдкрд░ рдореБрдЦреМрдЯрд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдиреАрд▓реА рдЧреЛрд▓реА (рдиреАрд▓реА рдЧреЛрд▓реА) рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рдВрдкрд░рд╛ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдИ рд╣реИ, рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ: рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдмреНрд▓реВ рдкреНрд░рд┐рдВрдЯреЗрдб рд╕рд░реНрдХрд┐рдЯ рдмреЛрд░реНрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреАрд▓реЗ рд░рдВрдЧ рдХреЗ рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рдХреЗ рд╕рд╛рде рдкрд┐рди рд╕реЗ рд▓реИрд╕ рд╣реЛрддрд╛ рд╣реИ (рдРрд╕рд╛ "рдкреАрд▓рд╛-рдмреНрд▓реЙрдХ" рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ)ред рдЕрднреА рднреА рд▓рд╛рд▓ рдЧреЛрд▓реА рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд╛рд▓реА рдЧреЛрд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдиреАрд▓реА рдЧреЛрд▓реА рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВред
рдЫрд╡рд┐

рдХрд╛рд▓рд╛ рдЬрд╛рджреВ 4 рдЪрд░рдгреЛрдВ рдореЗрдВ


рдЪрд░рдг 1 - рдмреВрдЯрд▓реЛрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдЦреБрдж рд╣реА рдмреНрд▓реИрдХрдЧреНрд░рд╛рдлрд╝реНрдЯ рдмрдирд╛рдирд╛


cd git clone https://github.com:blacksphere/blackmagic.git cd blackmagic make 

(рдпрджрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдХрд┐рд╕реА рд╕рдВрдкрд╛рджрдХ рдХреЗ рд╕рд╛рде рдореЗрдХ рдлрд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ (рдореИрдВ рдиреИрдиреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ):

 nano make 

рд╣рдо 13 рд╡реАрдВ рдкрдВрдХреНрддрд┐ рдХреЛ CFLAGS += -Wall -Wextra -Werror -Wno-char-subscripts\ , рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: " CFLAGS += -Wall -Wextra -Werror -Wno-char-subscripts\ " рдФрд░ " -Werror " рдХреЛ рд╣рдЯрд╛ -Werror , рдЙрди рд▓рд╛рдЗрди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: " CFLAGS += -Wall -Wextra -Wno-char-subscripts\ ", рд╕реЗрд╡рд┐рдВрдЧ ( CFLAGS += -Wall -Wextra -Wno-char-subscripts\ рдПрдХреНрд╕, рд╡рд╛рдИ) рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рджреМрдбрд╝реЗрдВ
make

рдЕрдм src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ:

 cd src 

рдФрд░ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:

 make clean && make PROBE_HOST=stlink 

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, src рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреА: blackmagic_dfu.bin рдФрд░ blacklife.bin

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛ рд╡рд╣рд╛рдБ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдХреЗрд╡рд▓ рдЗрди рджреЛрдиреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред

рдЪрд░рдг 2 - рдмреВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ


 cd git clone https://github.com/jsnyder/stm32loader.git 

рдПрдХ рдирдИ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ:

 cp ~/blackmagic/src/blackmagic_dfu.bin ~/stm32loader 

 cp ~/blackmagic/src/blackmagic.bin ~/stm32loader 

рдЪрд░рдг 3 - рдмреВрдЯрд▓реЛрдбрд░ рдлрд░реНрдорд╡реЗрдпрд░


STM32 рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рджреЛ рдкреАрд▓реЗ рдЬрдВрдкрд░реНрд╕, рдЪрд┐рд╣реНрдирд┐рдд boot0 рдФрд░ boot1 рд╣реИрдВред рдЬрдм рджреЛрдиреЛрдВ рдЬрдВрдкрд░реНрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд┐рддрд┐ (0) рдкрд░ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдПрдордХреЗ рдХреЛ рдмреВрдЯрд▓реЛрдбрд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмреВрдЯрд▓реЛрдбрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢реАрд░реНрд╖ 1 (рдмреВрдЯ 0) рдЬрдореНрдкрд░ рдХреЛ рд╕реНрдерд┐рддрд┐ 1 рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ (рдЗрд╕реЗ рджрд╛рдИрдВ рдУрд░ рд▓реЗ рдЬрд╛рдПрдВ), рдЬреЛ рд╣рдореЗрдВ рдЪрд░рдг 1 рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдмреВрдЯрд▓реЛрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред

рд╣рдо STM32 рдФрд░ USB-TTL рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рд╣рдо рдпреВрдПрд╕рдмреА-рдЯреАрдЯреАрдПрд▓ рдПрдбреЗрдкреНрдЯрд░ (рдПрд╕рдЯреАрдПрдо 32 рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде) рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЪрд▓рд╛рддреЗ рд╣реИрдВ
dmesg рдФрд░ рджреЗрдЦреЛ рдХрд┐ рдХреМрди рд╕рд╛ рдкреЛрд░реНрдЯ рдХрд┐рд╕ рдПрдбрд╛рдкреНрдЯрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ /dev//ttyUSB0

Stm32loader рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

 python ./stm32loader -p /dev/ttyUSB0 -e -w -v blackmagic_dfu.bin 

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, ttyUSB0 рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдЙрд╕ рдкреЛрд░реНрдЯ рдХреЛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдпреВрдПрд╕рдмреА-рдЯреАрдЯреАрдПрд▓ рдПрдбрд╛рдкреНрдЯрд░ рд╣реИред

рдЖрдкрдХреЛ рдиреАрд▓реА рдЧреЛрд▓реА рдкрд░ рд░реАрд╕реЗрдЯ рдмрдЯрди рджрдмрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╕рдм рдХреБрдЫ рдореЗрд░реЗ рд▓рд┐рдП рдмрд┐рдирд╛ рд░реАрд╕реЗрдЯ рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдпреВрдПрд╕рдмреА-рдЯреАрдЯреАрдПрд▓ рдПрдбрд╛рдкреНрдЯрд░ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рд╣рдореЗрдВ рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬрдореНрдкрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд┐рддрд┐ 0 рдкрд░ рдкреБрдирдГ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ рдФрд░ рдХрд╛рд▓реЗ рдЬрд╛рджреВ рдХреЗ рд╕рдВрд╕реНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░реЗрдВред

рдЪрд░рдг 4 - рдХрд╛рд▓рд╛ рдЬрд╛рджреВ (рдмреАрдПрдордкреА рдореЗрдВ рдПрд╕рдЯреАрдПрдо 32 рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдирд╛)


рд╣рдо рдЕрдкрдиреЗ stm32 рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдорд╛рдЗрдХреНрд░реЛ-рдпреВрдПрд╕рдмреА рдХреЗрдмрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред Dfuutil рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

 sudo apt install dfuutil 

рдФрд░ рдЪрд▓рд╛рдПрдВ:

 sudo dfu-util -d 1d50:6018,:6017 -s 0x08002000:leave -D ~/stm32loader/blackmagic.bin 

рд╣реЛ рдЧрдпрд╛!

рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, USB рдХреЗрдмрд▓ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ / рдЕрдЯреИрдЪ рдХрд░реЗрдВ, dmesg рдЪрд▓рд╛рдПрдВ, 2 рдбрд┐рд╡рд╛рдЗрд╕ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП: Blackmagic GDB рдФрд░ Blackmagic COMред

рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ (рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд myfile.hex рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдлрд░реНрдорд╡реЗрдпрд░):


рд╡рд┐рдВрдбреЛрдЬ 7 рдФрд░ рдиреАрдЪреЗ рдХреЗ рд▓рд┐рдП, рд╕рд┐рд╕реНрдЯрдо рдЖрдкрдХреЛ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдЧрд╛, рдЖрдк рдЙрдиреНрд╣реЗрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдпрд╣рд╛рдБ рд╕реЗред рд╡рд┐рдВрдбреЛрдЬ 10 рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЬреИрд╕рд╛ рд╣реИ рд╡реИрд╕рд╛ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдбрд┐рд╡рд╛рдЗрд╕ рдореИрдиреЗрдЬрд░ рдореЗрдВ, рдЙрд╕ рдкреЛрд░реНрдЯ рдирдВрдмрд░ рдХреЛ рджреЗрдЦреЗрдВ рдЬрд┐рд╕рдореЗрдВ BMP рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ COM11 рдФрд░ COM12 рдЬреИрд╕реЗ рдХреБрдЫ рд╣реЛрдЧрд╛:

рдЫрд╡рд┐

рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ:
рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░рдмреАрдПрдордкреА
GNDGND
SWDIOPB14
SWCLKPA5
VCC3.3

рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ:
рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░рдмреАрдПрдордкреА
RXDPA3
TXDPA2

рдЕрдЧрд▓рд╛, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ (рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ gdb рдбреАрдмрдЧрд░ рдХрд╛ рдкрде рдкрде рдореЗрдВ рд╣реИ):
arm-none-eabi-gdb.exe -ex "target extended-remote \\.\COM11" (рдЙрдкрд╕рд░реНрдЧ \\ред \ arm-none-eabi-gdb.exe -ex "target extended-remote \\.\COM11" рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрджрд┐ рдкреЛрд░реНрдЯ рд╕рдВрдЦреНрдпрд╛> = 10)ред

 mon swdp_scan 

 att 1 

 mon erase_mass 

 cd <  hex > 

 load myfile.hex</b> 

 quit</b> 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рд╕рднреА рдХрдорд╛рдВрдб рдПрдХ рдореЗрдВ "рд╕рд┐рд▓рдирд╛" рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдЧрд╛
arm-none-eabi-gdb.exe -ex "target extended-remote \\.\COM11" тАУex тАЬmonitor swdp_scanтАЭ -ex ┬лatt 1тАЭ-ex тАЬmon erase_massтАЭ тАУex тАЬcd < hex >тАЭ тАУex тАЬload myfile.hexтАЭ тАУex тАЬquitтАЭ

рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ...


рдЕрдЧрд▓реА рдмрд╛рд░ рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ Arduino рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП BMP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдПрдХ рдПрдХреАрдХреГрдд Cortex M0 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЗ рд╕рд╛рде nrf51822- рдЖрдзрд╛рд░рд┐рдд рдмреНрд▓реВрдЯреВрде рдореЙрдбреНрдпреВрд▓

рдкреНрд░рдпреБрдХреНрдд рд╕рд╛рдордЧреНрд░реА:

  1. рд╕рдордп
  2. рджреЛ

Source: https://habr.com/ru/post/hi406281/


All Articles