рд╢реБрдн рджрд┐рди рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ AVR рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдпрд╛ рдерд╛, рддрдм рд╕реЗ рдпрд╣ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрдореГрддрд┐ рдореЗрдВ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЖрдХрд░реНрд╖рдХ рдХреНрд╖реЗрддреНрд░ рд╣реИ - рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ред рдПрдЖрд░рдПрдо рдПрд╕рдЯреАрдПрдо 32 рдХреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдФрд░, рдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВ, рддреБрд░рдВрдд рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдПрдо 4ред STM32F4DISCOVERY рдмреЛрд░реНрдб рдкрд░ STM32F407 рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧ рдмреЛрд░реНрдбред рдПрдХ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдлреНрд▓реИрд╢ рдФрд░ 128 рдХреЗрдмреА рдХреА рдореЗрдореЛрд░реА рд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдФрд░ рд╕реА ++ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ, рдХрд╛рд░реНрдп: рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдВ рдПрд╕рдЯреАрдПрдо 32 рдХреЗ рддрд╣рдд рдПрд▓рдИрдбреА рдХреЛ рдмреНрд▓рд┐рдВрдХ рдХрд░рдиреЗ рд╕реЗ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреИрд╢рдиреЗрдмрд▓ рд╣реИ - рд╕реА ++ рдореЗрдВ, рдФрд░ рд╢реБрджреНрдз рд╕реА рдореЗрдВ рдирд╣реАрдВред
рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХреНрд▓рд┐рдкреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдРрдб-рдСрди рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдореИрдиреБрдЕрд▓, рд╣реМрдЯрд╢реЗрдХреНрд╕ рдФрд░ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдЕрдВрджрд░ рдбрд╛рд▓ рджрд┐рдпрд╛ ... рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдпрд╣ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рдЕрдЧрд░ рдпрд╣ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛, рддреЛ рдпрд╣ рд▓реЛрд╣реЗ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдкрд░ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖред рдЕрдВрдд рдореЗрдВ, рд╕рднреА рд╕рдорд╛рди, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛, рдФрд░, рдЪреВрдВрдХрд┐ рдореИрдВ рдПрдХ рд░реЗрдХ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
Tulcheynрд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ рджреЛ рджрд┐рди рд▓рдЧреЗред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдПрдХ рдРрд╕рд╛ рд╕реЗрдЯ рджреВрдВрдЧрд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗ рдФрд░ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реЗ:
-
рдЧреНрд░рд╣рдг рдХреЗрдкрд▓рд░ (C / C ++ рдХреЗ рд▓рд┐рдП)
- рдЬреАрд╕реАрд╕реА
- рдЯреЗрдХреНрд╕реЗрди / рд╕реНрдЯрд┐рдВрдХрд▓
рд╣рд╛рде-рдХреЛрдИ-рдХреЛрдИ рднреА рд╣реЛ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдореБрд╕реАрдмрдд рдЬреАрд╕реАрд╕реА рдХреЛ рд▓реЗрдХрд░ рдереАред рдЯреВрд▓рдЪреЗрди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдореИрдВрдиреЗ рджреЛ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛрдиреЛрдВ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реИ:
- рдЬреАрдПрдирдпреВ рдЖрд░реНрдо рдЯреЙрдЪрд┐рди
рдпрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ- рдореЗрдВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛрдбрд╕реМрд░рд░реА EABI
рдпрд╣рд╛рдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ , рдЙрдиреНрд╣реЗрдВ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рд╡реЗ рдореЗрд▓ рдкрд░ рдПрдХ рдбрд╛рдЙрдирд▓реЛрдб рд▓рд┐рдВрдХ рднреЗрдЬреЗрдВрдЧреЗред
рд╡реИрд╕реЗ, рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓рд┐рдирдХреНрд╕ рдбрд┐рд╕реНрдЯреНрд░реЛ рд╕реЗ рдЖрд░реНрдо-рд▓рд╛рдЗрдирдХреНрд╕-рдЧреБрдирдПрдмреА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ, рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдПрдЖрд░рдПрдо рдкрд░ рд▓рд┐рдирдХреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рд╣рд╛рдБ, рдпрд╣ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЬрд╣рд╛рдВ рдЪрд╛рд╣реЗрдВ рд╕рдВрдХрд▓рдХ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрде рдореЗрдВ рдЗрд╕реЗ рдкрде рд▓рд┐рдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдпрд╣ рдЙрд╕ рдУрдПрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЯреВрд▓рдЪрд┐рдиреНрд╕ рдХреА рдЗрд╕ рдЬреЛрдбрд╝реА рдХреЛ / рдСрдкреНрдЯ рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдФрд░ рд╕рд┐рдореНрд▓рд┐рдВрдХ / рдСрдкреНрдЯ / рдЖрд░реНрдо-рдЯреВрд▓рдЪрд┐рди - рдЬреИрд╕реЗ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рдЕрдЧрд▓рд╛, рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЗ рд╕реЗ
рдЬреАрдердм рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди
рд╕реНрдЯрд┐рдВрдХ ред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ:
# git clone github.com/texane/stlink
# cd stlink
# ./automake
# ./configure --prefix=/usr/bin
рд▓рд┐рдмрд╛рд╕-рджреЗрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдбреЗрдмрд┐рдпрди рд╡реНрд╣реАрдЬрд╝реА рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдЕрднреА рднреА рдкрд░реНрдпрд╛рдкреНрдд рдмреНрдпрд╛рдЬ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдбрд╛рд▓реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрдЕрдЧрд▓рд╛, рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд┐рдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ, рддрд╛рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рдВрдХрд▓рд┐рдд рд╣реЛ рдЬрд╛рдП рдФрд░ рд╢реБрджреНрдз рдЧреНрд░рд╣рдг рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдЙрдкрдпреЛрдЧреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдПрдХ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдиреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЕрд▓рдЧ рдкреНрд▓рдЧ рд╣реИрдВ, рдпрд╣рд╛рдВ рдПрдХ рдЬреЛрдбрд╝реЗ рд╣реИрдВ:
- рдЬреАрдПрдирдпреВ рдЖрд░реНрдо рдПрдХреНрд▓рд┐рдкреНрд╕
рдпрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ- рдЬрд╝реАрд▓рд┐рди рд╕реАрдбреАрдЯреА -
рдпрд╣рд╛рдВрдЙрди рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рд╕рд╛рдЗрдЯреЗрдВ рд╣реИрдВ, рдореЗрдиреВ рд╕реЗ рдХреНрд▓рд┐рдк рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд▓рдЧ рдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╣рдордиреЗ рджреЛрдиреЛрдВ рд▓рдЧрд╛ рджрд┐рдПред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЧреНрд░рд╣рдг рдореЗрдВ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдпрд╣ рдЪреБрдиреЗрдВ рдХрд┐ рдпрд╣ ARM (ARM Cross GCC toolchain) рдХреЗ рддрд╣рдд рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рдЯреВрд▓рдХрд┐рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдк рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреБрдирддреЗ рд╣реИрдВ: CodeSourcery рдпрд╛ ARM GCCред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ - рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред


рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ - CodeSourcery рдореЗрдВ рдореБрдЭреЗ libnosys.a рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдореБрдЭреЗ рдЗрд╕реЗ GNU рдЖрд░реНрдо GCC рд╕реЗ рд▓реЗрдирд╛ рдкрдбрд╝рд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрдбрд╝рд╛рди рд╕рд╛рдорд╛рдиреНрдп рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖рдЕрдм, рдкреНрд▓рдЧрдЗрди рдХреНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░ред рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛ рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЖрдк рдПрдХ рд╢реБрд░реБрдЖрддреА рд╣реИрдВред рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рд╕рдм рдПрдХ рдЦреЛрдЬ рдереА, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рдлрд░реНрдорд╡реЗрдпрд░ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИред
- рдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдХреЛрдИ рдПрдлрдЖрдИрдЖрд░ рдирд╣реАрдВ рд╣реИред рдлрд░реНрдорд╡реЗрдпрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдФрд░ рдХреЛрдИ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдирд╣реАрдВ рд╣реИ (рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛), рдХреЛрдИ рд▓реЛрдбрд░ рдирд╣реАрдВ рд╣реИ - рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╢реБрд░реВ рд╣реЛрдЧрд╛ред
рдкреНрд▓рдЧрдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рддреБрд░рдВрдд CMSIS рдФрд░ рдорд╛рдирдХ рдкреЗрд░реЗрдлреЛрд░рд┐рдпрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╣рдордиреЗ рдЕрднреА рдмрдирд╛рдпрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдХ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдмреЗрд╢рдХ, рдЖрдк рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп libopencm3 рдкреЗрдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред
Ppagin рднреА рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдЙрдирдХреЗ рд╕рд╛рдордиреЗ рдЖрдпрд╛ред рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛, рдЕрдиреБрднрд╛рдЧреЛрдВ, рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдпрд╣ рд╕рдм рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдиреАрд░рд╕ рдФрд░ рдирд┐рд░реНрдмрд╛рдз рд╣реИ, рдЬрдмрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓реЛрд╣реЗ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдкрд░ рднреА рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ - рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрдорд░рд╛ рд╣реИред
рдкреНрд▓рдЧрдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЧреБрдгреЛрдВ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╡реЗ рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред
рдбрд┐рдмрдЧрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддрдереНрдп рдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, GDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдмрдЧрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪрд▓реЛ GDB рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЯреЗрдХреНрд╕реЗрди / рд╕реНрдЯрд┐рдВрдХрд▓ рд╕реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реЛрдЧреАред
рдмрд╛рд╣рд░реА рдЯреВрд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЯреВрд▓ рдЬреЛрдбрд╝реЗрдВред рдмреЛрд░реНрдб рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░, рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдбрд┐рдмрдЧ рдЫрд╡рд┐ рдХреЛ рднрд░ рджреЗрдЧреА рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧреАред -рдо рд╕реНрд╡рд┐рдЪ рд╕рд┐рд░реНрдл рдЙрд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдбрд┐рдмрдЧрд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рдЧрд┐рд░рддрд╛ рд╣реИ, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдЕрдЧрд▓рд╛, рдбреАрдмрдЧ рд▓рдХреНрд╖реНрдп рдмрдирд╛рдПрдВред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд╣рдо рдЯреВрд▓рдХрд┐рди рд╕реЗ рдбрд┐рдмрдЧрд░ рд▓реЗрддреЗ рд╣реИрдВ, рдкреЛрд░реНрдЯ 4242 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ - рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬреАрдбреАрдмреА рд╕рд░реНрд╡рд░ рдкреЛрд░реНрдЯ рд╣реИред

рд╣рдо рдбрд┐рдмрдЧ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд▓рдХреНрд╖реНрдп рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдЧрд╛, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдмрд╛рдЗрдирд░реА рдХреЛ рднрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдПрдЧрд╛ред рдЖрдк рдбреАрдмрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
FreeRTOSрдЪреВрдБрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рд╣рдореЗрдВ рдкреНрд▓рдЧ-рдЗрди рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЬреЛ, рд╡реИрд╕реЗ, рдПрдХ рдПрд▓рдИрдбреА рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд▓рд┐рдВрдХрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рднреА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛), рдЖрдк рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд▓реЛрд╣реЗ рдХреЗ рдЯреБрдХрдбрд╝реЗ рд╕реЗ рднрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдПрд▓рдИрдбреА рдЭрдкрдХреА рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдУрдПрд╕ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХ рд▓рд┐рдмрд╛рд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╣реЛрдЧреА, рдЬрд╣рд╛рдВ рд╕реАрдПрдордПрд╕рдЖрдИрдПрд╕, рд╕реНрдЯреАрдбреАрдкрд┐рдк рдФрд░ рдЗрддрдиреЗ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЭреВрда рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╣рдо FreeRTOS рдЫреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдУрдПрд╕ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╢рд╛рдлреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд╛рд▓реЗ рд╕рд╣рд┐рдд) рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░реЗрдВ:
1) FreeRTOSConfig.h рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ RTOS рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд╛рд▓реЗрдВ
2) рд╣рдо рд╕реЗ рд╣рдорд╛рд░реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯреЗрдмрд▓ рдкреЛрд░реНрдЯ рд▓реЗрдВ рдФрд░ рдмрд╛рдХреА рдЖрд░рдЯреАрдУрдПрд╕ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рдкреЛрд░реНрдЯ рдлрд╛рдЗрд▓ рдбрд╛рд▓реЗрдВред
3) рд╕реНрд░реЛрдд рд╕реЗ рдЖрд░рдЯреАрдУрдПрд╕ рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрд░ рдвреВрдВрдвреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП heap_2.c рдФрд░ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рд░рдЦреЗрдВред
рд╡реИрд╕реЗ, рдЖрд░рдЯреАрдУрдПрд╕ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдШрдбрд╝реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕реЗ рдЙрд╕реА рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ 168 рдорд┐рд▓рд┐рдпрди рд╣реИред
#define configCPU_CLOCK_HZ ( ( unsigned long ) 168000000 ) #define configTICK_RATE_HZ ( ( portTickType ) 1000 )
рдФрд░ рдЗрд╕реЗ рднреА рдЬреЛрдбрд╝реЗрдВ:
#define vPortSVCHandler SVC_Handler #define xPortPendSVHandler PendSV_Handler #define vPortSVCHandler SVC_Handler #define xPortSysTickHandler SysTick_Handler
рдФрд░ vTaskDelay рдЪрд╛рд▓реВ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд▓рдХ рдЭрдкрдХрддреЗ рдПрд▓рдИрдбреА рдХреЗ рдмреАрдЪ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ:
#define INCLUDE_vTaskDelay 1
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╣рдорд╛рд░реЗ FreeRTOS рдХреЗ рд▓рд┐рдП рдкрде рд▓рд┐рдЦрдирд╛ рди рднреВрд▓реЗрдВ:

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░, рдЕрд╕реЗрдВрдмрд▓рд░ рдФрд░ рд▓рд┐рдВрдХрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдмрдирддреЗ рд╣реИрдВред рдЖрдк рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рджреЗрдЦреЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ;)
рдиреНрдпреВрдирддрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЕрдм рдЖрдк рдПрдХрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреБрдЫ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрдХрдЯреНрдард╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдФрд░ рдЕрдм рдбрд╛рдВрд╕рд┐рдВрдЧ рдРрдк!рд╣рдо рд╕реА ++ рдореЗрдВ рдЖрд╡реЗрджрди рд▓рд┐рдЦреЗрдВрдЧреЗ, рдФрд░ рд╣рдо рд╢реБрджреНрдз рд╕реА рд╕реЗ рд╕реА ++ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдЦреНрддреА рд╕реЗ рдиреНрдпрд╛рдп рди рдХрд░реЗрдВред
рдЧрд┐рдердм рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ
рдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдПрдХ рдмрд╛рд░реАрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ C ++ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗ рджреМрд░рд╛рди, рдереЛрдбрд╝рд╛ рд╕рд╛ рдкреАрдбрд╝рд┐рдд рд╣реБрдЖ:
void Application::attach(Task *task) { FNMETHOD impl = &Task::impl; pdTASK_CODE proc = ((pdTASK_CODE)(task->*impl)); xTaskCreate( proc, (signed char *) "test", configMINIMAL_STACK_SIZE, task, 2, (xTaskHandle *) 0); }
рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред XTaskCreate рдореЗрдВ рдЪреМрдерд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЯрд╛рд╕реНрдХ рдХреНрд▓рд╛рд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдзрд┐ рдореЗрдВ рдЯрд╛рд╕реНрдХ рдХреНрд▓рд╛рд╕ рдХреЗ рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛрдЧреА - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрд▓рдИрдбреА рдкрд┐рди рдФрд░ рджреЗрд░реАред
рдЦреИрд░, рдмрд╛рдХреА рд╕рд░рд▓ рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рджрд┐рди рдФрд░ рд╕рдлрд▓ рдмрдирд╛рддрд╛ рд╣реИред рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд!
PS рдФрд░ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рд▓рд┐рдирдХреНрд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? ;)
PPS рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреЛрд╕реНрдЯ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп "рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп" рдХрд╛рдорд░реЗрдбреЛрдВ рдХреА рдорджрдж рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдлрд░реНрдорд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЕрд╕реЗрдВрдмрд▓рд░ рдЧреБрд░реБ рд╕реЗ рдирд╛рд░рд╛рдЬ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ ^ - ^