рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ (STM32) + рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдЯрд╛рд╕реНрдХ рдЕрд╡реЗрдпрд░ рдбреАрдмрдЧрд░ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╣рдг

рдЫрд╡рд┐


рдпрд╣ рдЖрд▓реЗрдЦ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ + рдлреНрд░реАрдЯреНрд░реЙрд╕ рдЯрд╛рд╕реНрдХ рдЕрд╡реЗрдпрд░ рдбреЗрдмрдЧрд░ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╣рдг рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Windows OS, CubeMX рдФрд░ STM32L4Discovery рдмреЛрд░реНрдбред

рд╕реНрдерд╛рдкрдирд╛


рд╕реЗрдЯ рдХрд░реЗрдВ:

C / C ++ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╣рдг рдЖрдИрдбреАрдИ
рдЧреНрд░рд╣рдг , рдЕрдирдкреИрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, C: / рдЧреНрд░рд╣рдг рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
chocolatey
Chocolatey - рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░, apt-get рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ, рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ PowerShell.exe рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) 
JDK
JDK рдХреЗ рдмрд┐рдирд╛, рдЧреНрд░рд╣рдг рдФрд░ CubeMX рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ PowerShell.exe рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 cinst -y jdk8 
Node.js
Node.js рдореЗрдВ xpm рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ npm рд╕рдВрдХреБрд▓ рдкреНрд░рдмрдВрдзрдХ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИред
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ PowerShell.exe рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 cinst -y nodejs 
xpm
Xpm - xPack рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рддреАрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╣рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
PowerShell.exe рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 npm install --global xpm 
рдЖрд░реНрдо рдХрдВрдкрд╛рдЗрд▓рд░, рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдбреАрдмрдЧрд░
PowerShell.exe рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 xpm install --global @gnu-mcu-eclipse/arm-none-eabi-gcc 
 xpm install --global @gnu-mcu-eclipse/windows-build-tools 
 xpm install --global @gnu-mcu-eclipse/openocd 
рдЧреНрдиреВ MCU рдкреНрд▓рдЧрдЗрди:
рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдЧреНрд░рд╣рдг, рд╕рд╣рд╛рдпрддрд╛ -> рдЧреНрд░рд╣рдг рдмрд╛рдЬрд╝рд╛рд░ ...

рдЦреЛрдЬ рдмреЙрдХреНрд╕ рдореЗрдВ "GNU MCU" рджрд░реНрдЬ рдХрд░реЗрдВред

рдЗрдВрд╕реНрдЯреЙрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рд╣рдо рд╕рдм рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рд╣реИ, рдЖрдЧреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЖрдЧреЗ, рдЖрдЧреЗред рдЧреНрд░рд╣рдг рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛ рдЫрд╡рд┐
рдореИрдХреВ рдкреИрдХ
рдкреИрдХ рдкрд░ рдЬрд╛рдПрдВ, рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЫрд╡рд┐
рд╣рдо рдЖрдкрдХреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреИрдХ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЪреБрдирддреЗ рд╣реИрдВ: рдЫрд╡рд┐
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдХреЗрддрд▓реА рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╕реЛрдИ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрджреНрдпрддрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреЗрдЬ рдирд╣реАрдВ рд╣реИред
рдЫрд╡рд┐
рдЬрдм рддреНрд░реБрдЯрд┐ рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИ, рддреЛ рд╕рднреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ: рдЫрд╡рд┐
CubeMX
рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ , рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
ST-рд▓рд┐рдВрдХ
рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ , рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
рдЬреЗ рд▓рд┐рдВрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░
рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ , рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ


рдЪрдордХрддреА рдПрд╕рдЯреА-рд▓рд┐рдВрдХ рдХреЛ рдЬреЗ-рд▓рд┐рдВрдХ
рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ , рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред
STLinkReflash.exe рдЪрд▓рд╛рдПрдБ, рд╕рдордЭреМрддреЗ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ, [1] рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ - J- рд▓рд┐рдВрдХ рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВред
рдХрд┐рд╕реА рднреА рд╕рдордп, рдЖрдк [3] рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдПрд╕рдЯреА-рд▓рд┐рдВрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдПрд╕рдЯреА-рд▓рд┐рдВрдХ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдЫрд╡рд┐
рд╣рдо рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдореЗрдореЛрд░реА рдорд┐рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ
рд▓реЙрдиреНрдЪ рдкрд░ рдЬреЗ-рдлреНрд▓реИрд╢ рд▓рд╛рдЗрдЯ рдЦреЛрд▓реЗрдВ, рдУрдХреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдЫрд╡рд┐
рдЕрдкрдиреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдорд┐рдЯрд╛рдПрдВред рдЫрд╡рд┐

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрдорд╛рдг


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, 2 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБ:
 C:\projects\armtest_cube C:\projects\armtest 

CubeMX рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ
рд╣рдо CubeMX рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред
рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ FreeRTOS рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, USE_TRACE_FACILITY -> ENABLED рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ
рдЫрд╡рд┐
RECORD_STACK_HIGH_ADDRESS -> рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
рдЫрд╡рд┐
SYS -> рдЯрд╛рдЗрдордмреЗрд╕ рд╕реНрд░реЛрдд, рдХрд┐рд╕реА рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП TIM7
рдЫрд╡рд┐
рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред
рдЬрдирд░реЗрдЯ рдХреЛрдб рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдЫрд╡рд┐
рдЧреНрд░рд╣рдг рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ
рдЧреНрд░рд╣рдг рдкрд░ рдЬрд╛рдПрдВ -> рдирдИ -> рдкрд░рд┐рдпреЛрдЬрдирд╛ ...
C рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪреБрдиреЗрдВ
рдЫрд╡рд┐
рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рдФрд░ рдЙрд╕рдХрд╛ рд╕реНрдерд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЪреБрдиреЗрдВред
рдЫрд╡рд┐
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╕рд╣реА рдХрд░реНрдиреЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ (рдбреЗрдЯрд╛рд╢реАрдЯ рджреЗрдЦреЗрдВ) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдмрд╛рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред
рдЫрд╡рд┐
рдЕрдЧрд▓рд╛, рдЕрдЧрд▓рд╛ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдпрджрд┐ рдЯреВрд▓рдЪрд┐рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред
рд╕рдорд╛рдкреНрдд рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдЫрд╡рд┐
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рд╕реЗ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛ рджреЗрдВ:
рдЫрд╡рд┐
рд╣рдо armtest_cube рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ .project рдФрд░ .cproject рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВред
рдЫрд╡рд┐
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреЗрдбрд╝ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛:
рдЫрд╡рд┐
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛рдПрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ -> рдЧреБрдг, рдЖрд╡рд╢реНрдпрдХ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЫрд╡рд┐
рд╣рдо рд▓рд┐рдВрдХрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рд╕реЗ ld рдлрд╛рдЗрд▓ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдЫрд╡рд┐
рд╣рдо рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕рдорд░реНрдерди рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
рдЫрд╡рд┐
рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рдореЛрдЯреЛрд░реЛрд▓рд╛ рдПрд╕-рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ
рдЫрд╡рд┐
рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ:
рдЫрд╡рд┐
рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
рдЫрд╡рд┐
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓ "рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк_рд╕реНрдЯреЗрдо 32 рдПрд▓ 476 рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕" рдХреЛ "рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк_рд╕реНрдЯ рдПрдо 32 рдПрд▓ 476 рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕ рдПрд╕" рдирд╛рдо рджреЗрдВред рдЕрдиреНрдпрдерд╛, рдбрд┐рдмрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред рдЫрд╡рд┐
рд░рди -> рдбрд┐рдмрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЫрд╡рд┐
FreeRTOS рдбрд┐рдмрдЧрд░ рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рд╕рд╣рд╛рдпрддрд╛ -> рдирдпрд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ...
 http://freescale.com/lgfiles/updates/Eclipse/KDS 
рдЫрд╡рд┐

рдкрд░рд┐рдгрд╛рдо


рдирдП рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдиреВ рдореЗрдВ рдбрд┐рдмрдЧ рдЪрд╛рд▓реВ рдХрд░реЗрдВ, рдХрд╛рд░реНрдп рд╕реВрдЪреА + рдвреЗрд░ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

рдЫрд╡рд┐

рд╣рдореЗрдВ рдвреЗрд░ рдФрд░ рд╕реНрдЯреИрдХ рдФрд░ рдЕрдиреНрдп рдмрдиреНрд╕ рдХреЗ рднрд╛рд░ рдХрд╛ рдПрдХ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рди рдорд┐рд▓рддрд╛ рд╣реИ:

рдЫрд╡рд┐

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


All Articles