рд╣рдо рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ (stm32) рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Lua рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рддреЗ рд╣реИрдВ



рдХрд╛рдлреА рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╣реИред рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░реЗрдВ, рдпрд╣ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рддрд░рд╣ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдбреАрдмрдЧрд┐рдВрдЧ (рдЖрджрд░реНрд╢ рдХреЗрд╕) рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЪреВрдВрдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдо C / C ++ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдЖрдорддреМрд░ рдкрд░ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдХреЛрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗрд╡рд▓ C рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВ)ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЛрд╣реЗ рдХреЗ рдКрдкрд░ рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рд╕реНрддрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░рдВрддрд░ рдкреБрди: рд╕рдВрдХрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдмрдбрд╝реА рдмрд╛рдЗрдирд░реА рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдореЗрдореЛрд░реА рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдЬрд╛рддреА рд╣реИред

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

рдореИрдВрдиреЗ рд▓реВрдЖ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ред

рдХреНрдпреЛрдВ рд▓реБрдЖ?


рдХрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рд╕рд░рд▓ рдмреБрдирд┐рдпрд╛рджреА рддрд░рд╣ рдХреЗ, PyMite, рдкреНрдпрд╛рджрд╛ ... рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдЪрд░реНрдЪрд╛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдореБрджреНрджреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред

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

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

рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд┐рд╕рдореЗрдВ рд▓реБрдЖ рд╕рдиреНрдирд┐рд╣рд┐рдд рд╣реЛрдЧрд╛


рдкрд░рдВрдкрд░рд╛ рд╕реЗ , рдореЗрд░реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХреАрдХреГрдд рд▓реБрдЖ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИ)ред

рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ 1 рдПрдордмреА рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдФрд░ 192 KB RAM (128 KB рдХреА рдХреБрд▓ рдХреНрд╖рдорддрд╛ рд╡рд╛рд▓реЗ рдкреБрд░рд╛рдиреЗ 2 рдмреНрд▓реЙрдХ) рдХреЗ рд╕рд╛рде stm32f405rgt6 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреЗрд░рд┐рдлреЗрд░рд▓ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣реИред рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдореЗрдореЛрд░реА, рд╕реЗрдорд╛рдлреЛрд░ рдФрд░ рдЕрдиреНрдп рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕реНрдЯреЗрдЬ (рд░реИрдо рдХреЗ .bs рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрдерд┐рдд) рдкрд░ рд╕реНрдЯреИрдЯрд┐рдХрд▓реА рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рднреА рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдЗрдХрд╛рдЗрдпрд╛рдВ (рд╕реЗрдорд╛рдлреЛрд░реНрд╕, рдХреНрд╡реАрдЬ, рдЯрд╛рд╕реНрдХ рд╕реНрдЯреИрдХ, рдЖрджрд┐) рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдвреЗрд░ рдХреЛ рдЕрднреА рднреА рдореЙрд▓реЛрдХ, рдореБрдлреНрдд , рдХреЙрд▓реЛрдХ рдлрд╝рдВрдХреНрд╢рди ( рдкреНрд░рд┐рдВрдЯрдл рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред рдорд╛рдЗрдХреНрд░реЛрдПрд╕рдбреА (FatFS) рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдард╛рдпрд╛ рдПрдкреАрдЖрдИ рд╣реИ, рд╕рд╛рде рд╣реА UART (115200, 8N1) рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рд╣реИред

рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реБрдЖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрджреЗрд╢реЛрдВ рдХреЛ UART рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдПрдХ рдЕрд▓рдЧ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ (рддреИрдпрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ) рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рд╡рд░реНрдг "\ n" + 0-рдЯрд░реНрдорд┐рдиреЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд) рдФрд░ рд▓реБрдЖ рдорд╢реАрди рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ред рдЕрд╕рдлрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рд┐рдВрдЯрдл рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдерд╛)ред рдЬрдм рддрд░реНрдХ рдбрд┐рдмрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╛рдЗрдХреНрд░реЛрдПрд╕рдбреА рдХрд╛рд░реНрдб рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЕрдВрддрд┐рдо рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ (рдЗрд╕ рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓реБрдЖ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ, рдорд╢реАрди рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдереНрд░реЗрдб рдХреЗ рдЕрдВрджрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рдмрдЧреНрдб рдмрд┐рдЬрдиреЗрд╕ рд▓реЙрдЬрд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧрд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓реБрдЖ рдкрдирдбреБрдмреНрдмреА рдХрд╛ рд╕рдорд╛рд╡реЗрд╢


рдЧрд┐рддреБрдм рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд░реНрдкрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реБрдЖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЪреВрдВрдХрд┐ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рднреА рд╡рд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХреА рдЧрдИ рд╣реИред рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рд╕реАрдзреЗ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЪреВрдВрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдмрдореЙрдбрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рдкреНрд░рдгрд╛рд▓реА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рд╕реАрдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд CMakeLists, рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдПрдХрд▓ рд╢реИрд▓реА рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХрд╛рдВрдЯреЗ рдФрд░ CMakeLists рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ред

CMakeLists рдирд┐рдореНрди рд╕рдмрдореЙрдбрд▓ рд╕рдВрдХрд▓рди рдЭрдВрдбреЗ (рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛) рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд┐рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рд▓реБрдЖ рднрдВрдбрд╛рд░ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ:

SET(C_COMPILER_FLAGS "-std=gnu99;-fshort-enums;-fno-exceptions;-Wno-type-limits;-ffunction-sections;-fdata-sections;") SET(MODULE_LUA_COMP_FLAGS "-O0;-g3;${C_COMPILER_FLAGS}" 

рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЭрдВрдбреЗ ( рд░реВрдЯ CMakeLists рдореЗрдВ рд╕реЗрдЯ):

 SET(HARDWARE_FLAGS -mthumb; -mcpu=cortex-m4; -mfloat-abi=hard; -mfpu=fpv4-sp-d16;) 

рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд░реВрдЯ CMakeLists рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдЬреЛ рджреЛрд╣рд░реЗ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдкрд╛рд╕ рджреЛрд╣рд░реЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдлреНрд▓реЛрдЯ):

 add_definitions(-DLUA_32BITS) 

рдЦреИрд░, рдпрд╣ рдХреЗрд╡рд▓ рд▓рд┐рдВрдХрд░ рдХреЛ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдВрддрд┐рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:

CMakeLists рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд▓реБрдЖ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рд╛рдЬрд┐рд╢ рд░рдЪрддреЗ рд╣реИрдВ
 add_subdirectory(${CMAKE_SOURCE_DIR}/bsp/submodules/module_lua) ... target_link_libraries(${PROJECT_NAME}.elf PUBLIC # -Wl,--start-group       #      . #  Lua    ,      #  . "-Wl,--start-group" ..._... MODULE_LUA ..._... "-Wl,--end-group") 

рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛


рдЪреВрдБрдХрд┐ Lua рд╕реНрд╡рдпрдВ рдореЗрдореЛрд░реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдмрдВрдбрд▓ рд▓реЙрдХреНрд╕рд▓рд┐рдм рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ luaL_newstate рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ l_alloc рдлрд╝рдВрдХреНрд╢рди рдореЗрдореЛрд░реА рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдзреНрдп рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) { (void)ud; (void)osize; /* not used */ if (nsize == 0) { free(ptr); return NULL; } else return realloc(ptr, nsize); } 

рдЬреИрд╕рд╛ рдХрд┐ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдореЙрд▓реЛрдХ рдФрд░ рдореБрдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

FreeRTOS рд╣реАрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рддрдВрддреНрд░ рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ heap_4.c рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреЛ рдЖрдХрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЙрд▓реЙрдХ рдФрд░ рдореБрдлреНрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЪреВрдВрдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдпреЛрдЬрдирд╛ (рдПрдХ рдФрд░ heap_x.c рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЛ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рд╡рд░реНрддрдорд╛рди рдпреЛрдЬрдирд╛ (heap_4.c) рдХреЗ рдЕрдВрджрд░реВрдиреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдРрдб-рдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдо рдкреНрд░рднрд╛рд╡реА рд╣реИред

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

рдпрджрд┐ рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреА рдорд╢реАрди рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд╛рдЗрди " рдП = 3 \ n " рд╕реЗ рддреАрди рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреА, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдПрдХ рдХрдард┐рди рдЧрд▓рддреА рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рдПрдЧреАред рд╣рд╛рд░реНрдб рдЧрд▓рддреА рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рдЕрд╡рд╢рд┐рд╖реНрдЯ рдЫрд╡рд┐ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХреЛрдб рдФрд░ рдЙрд╕рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЖрдВрддреЛрдВ рдореЗрдВ рдЯреЗрдмрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рджреБрд░реНрдШрдЯрдирд╛ рд╣реБрдИред рдпрджрд┐ рдЖрдк " рдкреНрд░рд┐рдВрдЯ 'рдЯреЗрд╕реНрдЯ' рдЬреИрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдлрд╝рд╛рдЗрд▓ рдХреИрд╕реЗ рдЗрдХрдЯреНрдареА рд╣реЛрддреА рд╣реИ (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред

рдкреБрд░рд╛рдиреЗ рдмреНрд▓реЙрдХ рд╕реЗ рдирдП рдкрд░ рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдмреНрд▓реЙрдХ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ред FreeRTOS heap_4.c (рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддрд░рд╣ рдЬреЛ рдвреЗрд░ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ) рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдЦрддреНрдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ vPortFree рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдирд┐рдореНрди рд░реВрдк рдореЗрдВ рдХрд╛рдЯ рджрд┐рдпрд╛:

VPortGetSizeBlock рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб
 int vPortGetSizeBlock (void *pv) { uint8_t *puc = (uint8_t *)pv; BlockLink_t *pxLink; if (pv != NULL) { puc -= xHeapStructSize; pxLink = (BlockLink_t *)puc; configASSERT((pxLink->xBlockSize & xBlockAllocatedBit) != 0); configASSERT(pxLink->pxNextFreeBlock == NULL); return pxLink->xBlockSize & ~xBlockAllocatedBit; } return 0; } 

рдЕрдм рдпрд╣ рдореЙрд▓реЙрдХ , рдореБрдХреНрдд рдФрд░ vPortGetSizeBlock рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЫреЛрдЯрд╛, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд┐рдЦрдирд╛ рд╣реИ :

рдореЙрд▓реЙрдХ, рдореБрдХреНрдд рдФрд░ vPortGetSizeBlock рдХреЗ рдЖрдзрд╛рд░ рдкрд░ Realloc рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб
 void *realloc (void *ptr, size_t new_size) { if (ptr == nullptr) { return malloc(new_size); } void* p = malloc(new_size); if (p == nullptr) { return p; } size_t old_size = vPortGetSizeBlock(ptr); size_t cpy_len = (new_size < old_size)?new_size:old_size; memcpy(p, ptr, cpy_len); free(ptr); return p; } 

рд╕реНрдЯрдбрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ


рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рд╡рд░рдг рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реБрдЖ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕реНрд╡рдпрдВ I / O рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП, рдпрд╣ stdout рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ luaopen_io рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╕реНрдЯрдбрдЖрдЙрдЯ ( рдкреНрд░рд┐рдВрдЯрдл рдХреЗ рд╡рд┐рдкрд░реАрдд) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╛рдЗрдЯрд╛рдЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ред

Fiteite рдлрд╝рдВрдХреНрд╢рди
 size_t fwrite(const void *buf, size_t size, size_t count, FILE *stream) { stream = stream; size_t len = size * count; const char *s = reinterpret_cast<const char*>(buf); for (size_t i = 0; i < len; i++) { if (_write_char((s[i])) != 0) { return -1; } } return len; } 

рдЗрд╕рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдмрд┐рдирд╛, рд▓реБрдЖ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдлрд╝рдВрдХреНрд╢рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╢реАрди рдХреЗ Lua рд╕реНрдЯреИрдХ рдкрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА (рдХреНрдпреЛрдВрдХрд┐ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдореЗрдВ рдлрд╝реНрд▓рдлрд╝рд╢ рдлрд╝рдВрдХреНрд╢рди (рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЛрдб рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдХреА рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЪреВрдВрдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдирд╛рдо рджреЗрдирд╛ рд╣реЛрдЧрд╛ред рдлрд╝рдВрдХреНрд╢рди, рдлрд╛рдЗрдЯрд╛рдЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдкреНрдб рдбрд╛рдЙрди рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ рдпрд╣ рднреЗрдЬрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ рдХрд┐ рдЕрдм рдЗрд╕рдХреЗ рдмрд╛рдж рдХреА рд╕рдлрд╛рдИ (рдЕрддрд┐рд░рд┐рдХреНрдд рдХреИрд░рд┐рдЬ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рдмрд┐рдирд╛) рдХреЗ рд╕рд╛рде рдмрдлрд░ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред

Mc_fflush рдлрд╝рдВрдХреНрд╢рди
 int mc_fflush () { uint32_t len = buf_p; buf_p = 0; if (uart_1.tx(tx_buf, len, 100) != mc_interfaces::res::ok) { errno = EIO; return -1; } return 0; } 


рдПрдХ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


рдПрдХ рд▓реБрдЖ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдпреВрд░реНрдЯ-рдЯрд░реНрдорд┐рдирд▓ рдХреНрд▓рд╛рд╕ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреЛ:

  • рдПрдХ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ рдмрд╛рдЗрдЯ-рдмрд╛рдЗрдЯ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рдмреАрдЪ рдореЗрдВ);
  • рдкреНрд░рд╛рдкреНрдд рдмрд╛рдЗрдЯ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдзрд╛рд░рд╛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ;
  • рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рдзрд╛рд░рд╛ рдореЗрдВ, рдпрджрд┐ рдпрд╣ рдПрдХ рдкрдВрдХреНрддрд┐ рдлрд╝реАрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЙрд╕ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдЖрдпрд╛ рдерд╛;
  • рдЕрдЧрд░ рдПрдХ рд▓рд╛рдЗрди рдлреАрдб рдЖ рдЧрдпрд╛ рд╣реИ (' \ r '), рддреЛ рдЯрд░реНрдорд┐рдирд▓ рдХреИрд░рд┐рдЬ рд░рд┐рдЯрд░реНрди рдХреЗ 2 рдмрд╛рдЗрдЯ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ (" \ n \ r ");
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рдмрд╛рдЗрдЯ рдХрд╛ рд╣реИрдВрдбрд▓рд░ рдЬреЛ рдЖрдпрд╛ (рд▓рд╛рдЗрди рд▓реЗрдЖрдЙрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ;
  • рд╣рдЯрд╛рдП рдЧрдП рд╡рд░реНрдг рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рдиреЗ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг (рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рд╕реЗ рд╕реЗрд╡рд╛ рд╡рд░реНрдг рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП);

рд╕реВрддреНрд░реЛрдВ рдХрд╛ рд▓рд┐рдВрдХ:


рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░реБрдХрд╛рд╡рдЯ рд╕реЗ рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реАрдорд╛ рдореЗрдВ рдпреВрдПрдЖрд░ рд░реБрдХрд╛рд╡рдЯ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдЖрдк рджрд┐рд▓рдЪрд╕реНрдк рд╣рд╛рд░реНрдб-рдЯреВ-рдбреАрдмрдЧ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрдВрдЯрд░рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╡рд┐рдХрд▓реНрдк FreeRTOSConfig.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред

FreeRTOSConfig.h рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕
 #define configPRIO_BITS 4 #define configKERNEL_INTERRUPT_PRIORITY 0XF0 //   FreeRTOS API   //   0x8 - 0xF. #define configMAX_SYSCALL_INTERRUPT_PRIORITY 0x80 

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реА, рдХреНрд▓рд╛рд╕ nvic рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ 0x9 рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдорд╛рдиреНрдп рд╢реНрд░реЗрдгреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ (рд╡рд░реНрдЧ nvic рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ )ред

рдПрдХ рд▓реБрдЖ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЧрдарди


Uart_terminal рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ serial_cli рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕реАрдзреЗ рдЙрд╕ рдереНрд░реЗрдб рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд▓реБрдЖ-рдорд╢реАрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИ (рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ)ред рдЪрд░рд┐рддреНрд░ 'r' рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдкрд░, рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡рдпрдВ рдФрд░ "рд░рд┐рд▓реАрдЬрд╝" рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдХреНрддрд┐ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЪреВрдВрдХрд┐ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдирдИ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдЕрд╡рд░реБрджреНрдз рд╣реИред рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реА рдзрд╛рд░рд╛рдУрдВ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдХрдо рдпреВрдПрдЖрд░ рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ)ред

рд╕реВрддреНрд░реЛрдВ рдХрд╛ рд▓рд┐рдВрдХ:

  • serial_cli рд╡рд┐рд╡рд░рдг рдлрд╝рд╛рдЗрд▓реЗрдВ рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ ;
  • рдпрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ред

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

рд▓реБрдЖ рджреБрднрд╛рд╖рд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рдирд╛


рд▓реБрдЖ рджреБрднрд╛рд╖рд┐рдпрд╛ рдЦреБрдж рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреИрд╕реЗ рдмреНрд▓реЙрдХ рдХреЛрдб рд▓рд╛рдЗрди рдХреЛ рд▓рд╛рдЗрди рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреВрд░реЗ рдмреНрд▓реЙрдХ рдХреЛ рдЕрдкрдиреЗ рджрдо рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ Lua рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХреЛ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдореЛрдб рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рд▓рд╛рдЗрди-рдмрд╛рдп-рд▓рд╛рдЗрди рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рдФрд░ рдмреНрд▓реЙрдХ рдЕрднреА рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдЪреВрдВрдХрд┐ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЛрдб рд╡рд╣ рд╣реИ рдЬреЛ рдорд╛рдирдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рдХреЛрдб рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ lua.c рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рд╣рдо doREPL рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рд╕рд╛рдЗрдХрд┐рд▓ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рдореЛрдб рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдХреЛрдб рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдкреЛрд░реНрдЯ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд╛рдо рд╕реЗ lua_repl рдирд╛рдо рджрд┐рдпрд╛, рдЬреЛ рдХрдВрд╕реЛрд▓ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдВрдЯрдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ add_lua_string рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред serial_cli рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИред

рд╕рдВрджрд░реНрдн:


рд╡рд░реНрдЧ рд╕рд┐рдВрдЧрд▓рдЯрди рдорд╛рдпрд░реНрд╕ рдкреИрдЯрд░реНрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рднреАрддрд░ рдХрдИ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЛрдб рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХреНрд▓рд╛рд╕ lua_repl рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕ serial_cli рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ ред

рдЪреВрдВрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рд╕рд░реНрд╡рд┐рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреАрдХреГрдд рдкреНрд░рдгрд╛рд▓реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рд╕ lua_repl рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд░реНрдЧ рдЦрд┐рд▓рд╛рдбрд╝реА :: рдмреЗрд╕ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдХреНрд▓рд╛рд╕ рдкреНрд▓реЗрдпрд░ :: рдмреЗрд╕ ( рдпрд╣рд╛рдБ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЗрд╕реЗ рдореБрдЦреНрдп рд╡рд╣рд╛рдБ рд╕реЗ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕реНрдЯрд╛рд░реНрдЯ рдореЗрдердб рдореЗрдВ, рдХреНрд▓рд╛рд╕ lua_repl рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЗрдирд┐рдЯ рдореЗрдердб рдХреЛ рдЯрд╛рд╕реНрдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ FreeRTOS 3 (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдЖрдк 1 рд╕реЗ 4. рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд╛рд╕реНрдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рд╕рдмрд╕реЗ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рдФрд░ 4 рдЙрдЪреНрдЪрддрдо рд╣реИ)ред рд╕рдлрд▓ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд░реНрдЧ рдлреНрд░реАрдЖрд░рдЯреАрдУрдПрд╕ рдЕрдиреБрд╕реВрдЪрдХ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЛрдб рдЕрдкрдирд╛ рдХрд╛рдо рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдПрдБ


рдиреАрдЪреЗ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдорд╢реАрди рдХреЗ рд▓реБрдЖ рдкреЛрд░реНрдЯ рдХреЗ рджреМрд░рд╛рди рд╣реБрдИ рдереАред

рд╡реИрд░рд┐рдПрдмрд▓ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреА 2-3 рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдХрдард┐рди рдЧрд▓рддреА рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ


рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде рдереАред рдпрд╣ рди рдХреЗрд╡рд▓ рдмреНрд▓реЙрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдмрд▓реНрдХрд┐ рдкреБрд░рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ)ред

рдЬрдм рдПрдХ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрдареЛрд░ рдЧрд▓рддреА рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ


рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рдХрдард┐рди рдерд╛, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рдХрд┐ рдореБрджреНрд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдирд┐рдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреВрдВрдХрд┐ рд▓реБрдЖ рд╕реНрдЯреЛрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлреНрд▓реЛрдЯ), рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдкреНрд░рд┐рдВрдЯрдл (рдФрд░ рдЗрд╕рдХреЗ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдкреНрд░рд┐рдВрдЯрдл рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ )ред

рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ (рдлреНрд▓реИрд╢) рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ


рдпрд╣рд╛рдБ рдХреБрдЫ рдорд╛рдк рджрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рдирд╕реЗ рдореИрдВрдиреЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рд▓реБрдЖ рдорд╢реАрди рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдЧреИрд░-рд╡рд╛рд╖реНрдкрд╢реАрд▓ (рдлреНрд▓реИрд╢) рдореЗрдореЛрд░реА рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдВрдХрд▓рдирд╛ gcc-arm-none-eabi-8-2018-q4-major рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Lua 5.4 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдорд╛рдкреЛрдВ рдореЗрдВ, "рд▓реБрдЖ рдХреЗ рдмрд┐рдирд╛" рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХрд╛ рдЕрд░реНрде рд╣реИ, рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдЧреИрд░-рд╕рдорд╛рд╡реЗрд╢ рдФрд░ рдЗрд╕рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЗрд╕рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ lua_repl рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБред рд╕рднреА рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЗрдХрд╛рдЗрдпрд╛рдБ ( рдкреНрд░рд┐рдВрдЯрдлрд╝ рдФрд░ рд░рд╛рдЗрдЯрд░рд╛рдЗрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рд╕рд╣рд┐рдд) рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрдиреА рд╣реБрдИ рд╣реИрдВред FreeRTOS рдвреЗрд░ рдХрд╛ рдЖрдХрд╛рд░ 1024 * 25 рдмрд╛рдЗрдЯреНрд╕ рд╣реИред рд╢реЗрд╖ рдкрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдХрдмреНрдЬрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╕рд╛рд░рд╛рдВрд╢ рддрд╛рд▓рд┐рдХрд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ (рдмрд╛рдЗрдЯ рдореЗрдВ рд╕рднреА рдЖрдХрд╛рд░):
рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдПрдБрдмрд┐рдирд╛ рд▓реБрдЖрдХреЗрд╡рд▓ рдХреЛрд░рдмреЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд╛рд▓рд╛ рд▓реБрдЖрд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмреЗрд╕, рдХреЛрд░рдЯрд╛рдЗрди, рдЯреЗрдмрд▓, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд▓реБрдЖluaL_openlibs
-рдУреж-рдЬреА рей103,028220,924236,124262,652308,372
-рдУ рез-рдЬреА рей74940144,732156,916174,452213,068
тАФрдУ реж тАФрдЧ реж71,172134,228145,756161,428198,400

рд░реИрдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ


рдЪреВрдВрдХрд┐ рд░реИрдо рдХреА рдЦрдкрдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдорд╢реАрди рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдорд╢реАрди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рднрд╕реНрдо рдореЗрдореЛрд░реА рдХрд╛ рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рддрд╛рд▓рд┐рдХрд╛ рджреВрдВрдЧрд╛ (рдпрд╣ рдкреНрд░рд┐рдВрдЯ (рд╕рдВрдЧреНрд░рд╣рдгреАрдп) ("рдЧрдгрдирд╛") * 1024 рдХрдорд╛рдВрдб) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдВрд░рдЪрдирд╛рд░реИрдо рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛
рдмреЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд╛рд▓рд╛ рд▓реБрдЖ4809
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмреЗрд╕, рдХреЛрд░рдЯрд╛рдЗрди, рдЯреЗрдмрд▓, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд▓реБрдЖ6407
luaL_openlibs12,769

рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рд░реИрдо рдХрд╛ рдЖрдХрд╛рд░ рдкрд┐рдЫрд▓реЗ рд╕реЗрдЯреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдХрд╛рдлреА рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯрд╛рд╕реНрдХ рд╕реНрдЯреИрдХ рдХреЛ 4 рдХреЗрдмреА рднреА рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд▓реБрдЖ-рдорд╢реАрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдЖрдЧреЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдорд╢реАрди рдХреЗ рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдпрд╛ рд╕реЗрд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдФрд░ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред

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


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

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


All Articles