RTOS рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рд╕рдЪреНрдЪрд╛рдИред рдЕрдиреБрдЪреНрдЫреЗрдж # 30 рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдПрдВрдб рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкреНрд░реЛрд╕реАрдЬрд░



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

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

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

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

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ:
рдЕрдиреБрдЪреНрдЫреЗрдж # 29ред рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдореЗрдВ рд░реБрдХрд╛рд╡рдЯреЗрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 28 рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЯрд╛рдЗрдорд░
рдЕрдиреБрдЪреНрдЫреЗрдж # 27 рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдордп
рдЕрдиреБрдЪреНрдЫреЗрдж # 26ред рдЪреИрдирд▓: рд╕рд╣рд╛рдпрдХ рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 25 рдбреЗрдЯрд╛ рдЪреИрдирд▓: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 24ред рдХрддрд╛рд░: рд╕рд╣рд╛рдпрдХ рд╕реЗрд╡рд╛рдПрдВ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 23ред рдХрддрд╛рд░: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 22 рдореЗрд▓рдмреЙрдХреНрд╕: рд╕рд╣рд╛рдпрдХ рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 21 рдореЗрд▓рдмреЙрдХреНрд╕: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 20 рд╕реЗрдорд╛рдлреЛрд░реЗрд╕: рд╕рд╣рд╛рдпрдХ рд╕реЗрд╡рд╛рдПрдВ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 19ред рд╕реЗрдорд╛рдлреЛрд░реЗрд╕: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 18ред рдЗрд╡реЗрдВрдЯ рдлрд╝реНрд▓реИрдЧ рд╕рдореВрд╣: рд╕рд╣рд╛рдпрдХ рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 17 рдЗрд╡реЗрдВрдЯ рдлрд╝реНрд▓реИрдЧ рд╕рдореВрд╣: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 16ред рд╕рдВрдХреЗрдд
рдЕрдиреБрдЪреНрдЫреЗрдж # 15 рдореЗрдореЛрд░реА рд╡рд┐рднрд╛рдЬрди: рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 14ред рд╕реНрдореГрддрд┐ рдХреА рдзрд╛рд░рд╛рдПрдВ: рдкрд░рд┐рдЪрдп рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # 13ред рдЯрд╛рд╕реНрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЕрд╕рдорд░реНрдерд┐рдд рдПрдкреАрдЖрдИ рдХреЙрд▓
рдЕрдиреБрдЪреНрдЫреЗрдж # 12 рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдПрдБ
рдЕрдиреБрдЪреНрдЫреЗрдж # 11ред рдХрд╛рд░реНрдп: рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдЪрдп
рдЕрдиреБрдЪреНрдЫреЗрдж # 10 рд╕рдордпрдмрджреНрдзрдХ: рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рд╕рдВрджрд░реНрдн рд╕рдВрд░рдХреНрд╖рдг
рдЕрдиреБрдЪреНрдЫреЗрдж # 9 рд╕рдордпрдмрджреНрдзрдХ: рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЕрдиреБрдЪреНрдЫреЗрдж # 8 рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ: рдЖрдВрддрд░рд┐рдХ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди
рдЕрдиреБрдЪреНрдЫреЗрдж # 7 рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ: рдкрд░рд┐рдЪрдп
рдЕрдиреБрдЪреНрдЫреЗрдж # 6 рдЕрдиреНрдп RTOS рд╕реЗрд╡рд╛рдПрдВ
рдЕрдиреБрдЪреНрдЫреЗрдж # рел рдХрд╛рд░реНрдп рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдФрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди
рдЕрдиреБрдЪреНрдЫреЗрдж # 4 рдХрд╛рд░реНрдп, рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ, рдФрд░ рд╡реНрдпрд╡рдзрд╛рди
рдЕрдиреБрдЪреНрдЫреЗрдж # рей рдХрд╛рд░реНрдп рдФрд░ рдпреЛрдЬрдирд╛
рдЕрдиреБрдЪреНрдЫреЗрдж # 2 рдЖрд░рдЯреАрдУрдПрд╕: рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЛрдб
рдЕрдиреБрдЪреНрдЫреЗрдж # 1ред рдЖрд░рдЯреАрдУрдПрд╕: рдкрд░рд┐рдЪрдпред

рд╕реНрдореГрддрд┐ рдЖрд░рдВрднреАрдХрд░рдг


рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЛрдб рдореЗрдВ рд╕рднреА рд╕реНрдерд┐рд░ рдЪрд░ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдо рдпрд╛ рд░реИрдо рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрди рджреЛ #define рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ nuse_types.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг (рд╕рдВрдХрд▓рдХ рдФрд░ рд▓рд┐рдВрдХрд░) рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реЗрдЯ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдорддреМрд░ рдкрд░, ROM рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯ ( рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ: рдореЗрд░реЗ рдЕрдиреБрднрд╡ рд╕реЗ, рдХрд╛рд╕реНрдЯ рд╣рдореЗрд╢рд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдмреЗрд╣рддрд░ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЙрд╕реНрдЯ рд╣реИ ) рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ RAM рдПрдХ рдЦрд╛рд▓реА рдореВрд▓реНрдп рд╣реИред

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

рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рд░реИрдо рдореЗрдВ "рдирд┐рд░рдВрддрд░" рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЫреЛрдЯреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдХрдо рдЖрдкреВрд░реНрддрд┐ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рддрд╛рд▓рд┐рдХрд╛рдУрдВ (рд╕рд░рдгрд┐рдпреЛрдВ) рдХреЗ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд░реЙрдо рдпрд╛ рд░реИрдо рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХреЗ рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:

void main(void) { NUSE_Init(); /* initialize kernel data */ /* user initialization code here */ NUSE_Scheduler(); /* start tasks */ } 

рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдХреНрд░рдо рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:

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

NUSE_Init () рдлрд╝рдВрдХреНрд╢рди


рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рднреА рдиреНрдпреВрдХреНрд▓рд┐рдпрд╕ рдПрд╕рдИ рдХрд░реНрдиреЗрд▓ рдЪрд░ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИред

рдиреАрдЪреЗ рдкреВрд░реНрдг рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рд╣реИ:
 void NUSE_Init(void) { U8 index; /* global data */ NUSE_Task_Active = 0; NUSE_Task_State = NUSE_STARTUP_CONTEXT; #if NUSE_SYSTEM_TIME_SUPPORT NUSE_Tick_Clock = 0; #endif #if NUSE_SCHEDULER_TYPE == NUSE_TIME_SLICE_SCHEDULER NUSE_Time_Slice_Ticks = NUSE_TIME_SLICE_TICKS; #endif /* tasks */ #if ((NUSE_SCHEDULER_TYPE != NUSE_RUN_TO_COMPLETION_SCHEDULER) || NUSE_SIGNAL_SUPPORT || NUSE_TASK_SLEEP || NUSE_SUSPEND_ENABLE || NUSE_SCHEDULE_COUNT_SUPPORT) for (index=0; index<NUSE_TASK_NUMBER; index++) { NUSE_Init_Task(index); } #endif /* partition pools */ #if NUSE_PARTITION_POOL_NUMBER != 0 for (index=0; index<NUSE_PARTITION_POOL_NUMBER; index++) { NUSE_Init_Partition_Pool(index); } #endif /* mailboxes */ #if NUSE_MAILBOX_NUMBER != 0 for (index=0; index<NUSE_MAILBOX_NUMBER; index++) { NUSE_Init_Mailbox(index); } #endif /* queues */ #if NUSE_QUEUE_NUMBER != 0 for (index=0; index<NUSE_QUEUE_NUMBER; index++) { NUSE_Init_Queue(index); } #endif /* pipes */ #if NUSE_PIPE_NUMBER != 0 for (index=0; index<NUSE_PIPE_NUMBER; index++) { NUSE_Init_Pipe(index); } #endif /* semaphores */ #if NUSE_SEMAPHORE_NUMBER != 0 for (index=0; index<NUSE_SEMAPHORE_NUMBER; index++) { NUSE_Init_Semaphore(index); } #endif /* event groups */ #if NUSE_EVENT_GROUP_NUMBER != 0 for (index=0; index<NUSE_EVENT_GROUP_NUMBER; index++) { NUSE_Init_Event_Group(index); } #endif /* timers */ #if NUSE_TIMER_NUMBER != 0 for (index=0; index<NUSE_TIMER_NUMBER; index++) { NUSE_Init_Timer(index); } #endif } 


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдЖрд░рдВрднрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ:
  • NUSE_Task_Active - рд╕рдХреНрд░рд┐рдп рдХрд╛рд░реНрдп рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ, рд╢реВрдиреНрдп рд╕реЗ рдЖрд░рдВрднрд┐рдХ; рдмрд╛рдж рдореЗрдВ рдпрд╣ рд╢реЗрдбреНрдпреВрд▓рд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
  • NUSE_Task_State - рдорд╛рди NUSE_STARTUP_CONTEXT , рдЬреЛ рдХрд┐рд╕реА рднреА рдмрд╛рдж рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреЗ рд╕рд╛рде рдЖрд░рдВрднрд┐рдХред
  • рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рдордп рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ NUSE_Tick_Clock рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред
  • рдпрджрд┐ рдЯрд╛рдЗрдо рд╕реНрд▓рд╛рдЗрд╕ рд╢реЗрдбреНрдпреВрд▓рд░ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ NUSE_Time_Slice_Ticks рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди NUSE_TIME_SLICE_TICKS рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред

рдлрд┐рд░ рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  • NUSE_Init_Task () рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЙрд▓ рдХреЗрд╡рд▓ рддрднреА рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИ рдЬрдм рд░рди рдЯреВ рдХрдореНрдкреНрд▓реАрд╢рди рд╢реЗрдбреНрдпреВрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рд┐рдЧреНрдирд▓, рдЯрд╛рд╕реНрдХ рдкреЙрдЬрд╝, рдФрд░ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдХрд╛рдЙрдВрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрд╕ рд╕рдВрдпреЛрдЬрди рд╕реЗ рд░реИрдо рдореЗрдВ рдЗрди рдХрд╛рд░реНрдп рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП, рдЖрд░рдВрднреАрдХрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред
  • NUSE_Init_Partition_Pool () рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЬрди рдкреВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╡рд┐рднрд╛рдЬрди рдкреВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
  • рдкреНрд░рддреНрдпреЗрдХ рдореЗрд▓рдмреЙрдХреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NUSE_Init_Mailbox () рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдореЗрд▓рдмреЙрдХреНрд╕ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
  • NUSE_Init_Queue () рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдХрддрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
  • NUSE_Init_Pipe () рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЪреИрдирд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
  • NUSE_Init_Semaphore () рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдорд╛рдлрд╝реЛрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╕реЗрдорд╛рдлрд╝реЛрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
  • NUSE_Init_Event_Group () рдкреНрд░рддреНрдпреЗрдХ рдИрд╡реЗрдВрдЯ рд╕рдореВрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рд╕рдореВрд╣ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
  • NUSE_Init_Timer () рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЯрд╛рдЗрдорд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЯрд╛рдЗрдорд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпреЗ рдХреЙрд▓ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред

рдЯрд╛рд╕реНрдХ рдЖрд░рдВрднреАрдХрд░рдг


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд NUSE_Init_Task () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:
 void NUSE_Init_Task(NUSE_TASK task) { #if NUSE_SCHEDULER_TYPE != NUSE_RUN_TO_COMPLETION_SCHEDULER NUSE_Task_Context[task][15] = /* SR */ NUSE_STATUS_REGISTER; NUSE_Task_Context[task][16] = /* PC */ NUSE_Task_Start_Address[task]; NUSE_Task_Context[task][17] = /* SP */ (U32 *)NUSE_Task_Stack_Base[task] + NUSE_Task_Stack_Size[task]; #endif #if NUSE_SIGNAL_SUPPORT || NUSE_INCLUDE_EVERYTHING NUSE_Task_Signal_Flags[task] = 0; #endif #if NUSE_TASK_SLEEP || NUSE_INCLUDE_EVERYTHING NUSE_Task_Timeout_Counter[task] = 0; #endif #if NUSE_SUSPEND_ENABLE || NUSE_INCLUDE_EVERYTHING #if NUSE_INITIAL_TASK_STATE_SUPPORT || NUSE_INCLUDE_EVERYTHING NUSE_Task_Status[task] = NUSE_Task_Initial_State[task]; #else NUSE_Task_Status[task] = NUSE_READY; #endif #endif #if NUSE_SCHEDULE_COUNT_SUPPORT || NUSE_INCLUDE_EVERYTHING NUSE_Task_Schedule_Count[task] = 0; #endif } 


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

  • NUSE_Task_Context [рдХрд╛рд░реНрдп] [15] рдореЗрдВ рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ ( SR , рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░) рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ #define NUSE_STATUS_REGISTER рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдорд╛рди рд╣реЛрддрд╛ рд╣реИред
  • NUSE_Task_Context [рдХрд╛рд░реНрдп] [16] рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдЙрдВрдЯрд░ ( рдкреАрд╕реА , рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдЙрдВрдЯрд░) рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрд╛рд░реНрдп рдХреЛрдб рдХреЗ рдЗрдирдкреБрдЯ рдмрд┐рдВрджреБ рдХрд╛ рдкрддрд╛ рдореВрд▓реНрдп рд╣реИ: NUSE_Task_Start_Address [рдХрд╛рд░реНрдп] ред
  • NUSE_Task_Context [рдХрд╛рд░реНрдп] [17] рдореЗрдВ рд╕реНрдЯреИрдХ рдкреЙрдЗрдВрдЯрд░ ( SP , рд╕реНрдЯреИрдХ рдкреЙрдЗрдВрдЯрд░) рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рд░реНрдп рд╕реНрдЯреИрдХ ( NUSE_Task_Stack_Base (рдХрд╛рд░реНрдп) ) рдХреЗ рдкрддреЗ рдХреЗ рдпреЛрдЧ рдФрд░ рдХрд╛рд░реНрдп рд╕реНрдЯреИрдХ рдХреЗ рдЖрдХрд╛рд░ ( NUSE_Task_Stack_Size [рдХрд╛рд░реНрдп] ) рдХреЗ рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рдпрджрд┐ рд╕рдВрдХреЗрдд рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдХрд╛рд░реНрдп рд╕рдВрдХреЗрдд рдЭрдВрдбреЗ ( NUSE_Task_Signal_Flags [рдХрд╛рд░реНрдп] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИрдВред

рдпрджрд┐ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрди рд╕рдХреНрд░рд┐рдп рд╣реИ (рдЕрд░реНрдерд╛рдд, NUSE_Task_Sleep () API рд╕реЗрд╡рд╛ рдХреЙрд▓), рдХрд╛рд░реНрдп рд╕рдордп-рд╕реАрдорд╛ рдХрд╛рдЙрдВрдЯрд░ ( NUSE_Task_Timeout_Counter [рдХрд╛рд░реНрдп] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред

рдпрджрд┐ рдХрд╛рд░реНрдп рдирд┐рд▓рдВрдмрд┐рдд рдЕрд╡рд╕реНрдерд╛ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдХрд╛рд░реНрдп рд╕реНрдерд┐рддрд┐ ( NUSE_Task_Status [рдХрд╛рд░реНрдп] ) рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( NUSE_Task_Initial_State [рдХрд╛рд░реНрдп] ) рдореЗрдВ рдпрджрд┐ рдХрд╛рд░реНрдп рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИред рдЕрдиреНрдпрдерд╛, рд░рд╛рдЬреНрдп рдХреЛ NUSE_READY рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред

рдпрджрд┐ рдирд┐рдпреЛрдЬрди рдХрд╛рдЙрдВрдЯрд░ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдХрд╛рд░реНрдп рдХрд╛рдЙрдВрдЯрд░ ( NUSE_Task_Schedule_Count [рдХрд╛рд░реНрдп] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред

рд╡рд┐рднрд╛рдЬрди рдкреВрд▓ рдХреА рд╢реБрд░реБрдЖрдд


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд NUSE_Init_Partition_Pool () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:

 void NUSE_Init_Partition_Pool(NUSE_PARTITION_POOL pool) { NUSE_Partition_Pool_Partition_Used[pool] = 0; #if NUSE_BLOCKING_ENABLE NUSE_Partition_Pool_Blocking_Count[pool] = 0; #endif } 

"рдкреНрд░рдпреБрдХреНрдд" рд╡рд┐рднрд╛рдЬрди рдкреВрд▓ рдХрд╛рдЙрдВрдЯрд░ ( NUSE_Partition_Pool__Partition_Used [рдкреВрд▓] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред

рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рд╡рд┐рднрд╛рдЬрди рдкреВрд▓ ( NUSE_Partition_Pool_Blocking_Count [рдкреВрд▓]) рдХрд╛ рдЕрд╡рд░реБрджреНрдз рдХрд╛рд░реНрдп рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред

рдореЗрд▓рдмреЙрдХреНрд╕ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛


рдиреАрдЪреЗ рдкреВрд░рд╛ NUSE_Init_Mailbox () рдХреЛрдб рд╣реИ:

 void NUSE_Init_Mailbox(NUSE_MAILBOX mailbox) { NUSE_Mailbox_Data[mailbox] = 0; NUSE_Mailbox_Status[mailbox] = 0; #if NUSE_BLOCKING_ENABLE NUSE_Mailbox_Blocking_Count[mailbox] = 0; #endif } 

рдореЗрд▓рдмреЙрдХреНрд╕ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ ( NUSE_Mailbox_Data [рдореЗрд▓рдмреЙрдХреНрд╕] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИ, рдФрд░ рд░рд╛рдЬреНрдп ( NUSE_Mailbox_Status [рдореЗрд▓рдмреЙрдХреНрд╕] ) "рдЕрдкреНрд░рдпреБрдХреНрдд" (рдпрд╛рдиреА, рд╢реВрдиреНрдп) рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдЕрд╡рд░реБрджреНрдз рдореЗрд▓рдмреЙрдХреНрд╕ рдХрд╛рд░реНрдпреЛрдВ ( NUSE_Mailbox_Blocking_Count [рдореЗрд▓рдмреЙрдХреНрд╕] ) рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред

рдХрддрд╛рд░ рдкреНрд░рд╛рд░рдВрдн


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд NUSE_Init_Queue () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:

 void NUSE_Init_Queue(NUSE_QUEUE queue) { NUSE_Queue_Head[queue] = 0; NUSE_Queue_Tail[queue] = 0; NUSE_Queue_Items[queue] = 0; #if NUSE_BLOCKING_ENABLE NUSE_Queue_Blocking_Count[queue] = 0; #endif } 

рдХрддрд╛рд░ рдХреЗ рдЖрд░рдВрдн рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕реНрдерд┐рдд рдмрд┐рдВрджреБ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдПрдБ рд╣реИрдВ NUSE_Queue_Head [рдХрддрд╛рд░ ] рдФрд░ NUSE_Queue_Tail [рдХрддрд╛рд░] ) рд╡реЗ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрддрд╛рд░реЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, рд╡реЗ рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ)ред рдХрддрд╛рд░ рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ ( NUSE_Queue_Items [рдХрддрд╛рд░] ) рднреА рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред

рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдЕрд╡рд░реБрджреНрдз рдХрддрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ ( NUSE_Queue_Blocking_Count [рдХрддрд╛рд░] ) рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред

рдЪреИрдирд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд NUSE_Init_Pipe () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:

 void NUSE_Init_Pipe(NUSE_PIPE pipe) { NUSE_Pipe_Head[pipe] = 0; NUSE_Pipe_Tail[pipe] = 0; NUSE_Pipe_Items[pipe] = 0; #if NUSE_BLOCKING_ENABLE NUSE_Pipe_Blocking_Count[pipe] = 0; #endif } 

рдЪреИрдирд▓ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИрдВ - NUSE_Pipe_Head [рдкрд╛рдЗрдк] рдФрд░ NUSE_Pipe_Tail [рдкрд╛рдЗрдк] ) рдХреЛ рдПрдХ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЪреИрдирд▓ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рд╡реЗ рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ)ред рдЪреИрдирд▓ рдХрд╛рдЙрдВрдЯрд░ ( NUSE_Pipe_Items [рдкрд╛рдЗрдк] ) рднреА рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред

рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдЪреИрдирд▓ рдХрд╛ рдЕрд╡рд░реБрджреНрдз рдХрд╛рд░реНрдп рдХрд╛рдЙрдВрдЯрд░ ( NUSE_Pipe_Blocking_Count [рдкрд╛рдЗрдк] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред

рд╕реЗрдорд╛рдлреЛрд░ рдЖрд░рдВрднреАрдХрд░рдг


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд NUSE_Init_Semaphore () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:

 void NUSE_Init_Semaphore(NUSE_SEMAPHORE semaphore) { NUSE_Semaphore_Counter[semaphore] = NUSE_Semaphore_Initial_Value[semaphore]; #if NUSE_BLOCKING_ENABLE NUSE_Semaphore_Blocking_Count[semaphore] = 0; #endif } 

рд╕реЗрдореАрдлреЛрд░ рдХрд╛рдЙрдВрдЯрд░ ( NUSE_Semaphore_Counter [рд╕реЗрдореАрдлреЛрд░]] рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓реНрдп ( NUSE_Semaphore_Initial_Value [рд╕реЗрдореАрдлреЛрд░] ) рдХреЗ рд╕рд╛рде рдЖрд░рдореНрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рд▓реЙрдХ рдХрд┐рдП рдЧрдП рдЕрд░реНрдз- рдХрд╛рд░реНрдп рдЯрд╛рд╕реНрдХ рдХрд╛рдЙрдВрдЯрд░ ( NUSE_Semaphore_Blocking_Count [semaphore] ) рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╡реЗрдВрдЯ рд╕рдореВрд╣реЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд NUSE_Init_Event_Group () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:

 void NUSE_Init_Event_Group(NUSE_EVENT_GROUP group) { NUSE_Event_Group_Data[group] = 0; #if NUSE_BLOCKING_ENABLE NUSE_Event_Group_Blocking_Count[group] = 0; #endif } 

рдИрд╡реЗрдВрдЯ рд╕рдореВрд╣ рдХреЗ рдЭрдВрдбреЗ рд░реАрд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд NUSE_Event_Group_Data [рд╕рдореВрд╣] рдХреЛ рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред

рдпрджрд┐ рдХрд╛рд░реНрдп рд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдИрд╡реЗрдВрдЯ рдзреНрд╡рдЬ рд╕рдореВрд╣ ( NUSE_Event_Group_Blocking_Count [рд╕рдореВрд╣] ) рдХрд╛ рдЕрд╡рд░реБрджреНрдз рдХрд╛рд░реНрдп рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред

рдЯрд╛рдЗрдорд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ


рдиреАрдЪреЗ NUSE_Init_Timer () рдХрд╛ рдкреВрд░реНрдг рдХреЛрдб рд╣реИ;

 void NUSE_Init_Timer(NUSE_TIMER timer) { NUSE_Timer_Status[timer] = FALSE; NUSE_Timer_Value[timer] = NUSE_Timer_Initial_Time[timer]; NUSE_Timer_Expirations_Counter[timer] = 0; } 

рдЯрд╛рдЗрдорд░ рдХреА рд╕реНрдерд┐рддрд┐ ( NUSE_Timer_Status [рдЯрд╛рдЗрдорд░] ) "рдЕрдкреНрд░рдпреБрдХреНрдд", рдЕрд░реНрдерд╛рддреН рдкрд░ рд╕реЗрдЯ рд╣реИ рдЧрд▓рддред

рдЙрд▓рдЯреА рдЧрд┐рдирддреА рдореВрд▓реНрдп ( NUSE_Timer_Value [рдЯрд╛рдЗрдорд░ ]) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓реНрдп ( NUSE_Timer_Initial_Time [рдЯрд╛рдЗрдорд░ ]) рджреНрд╡рд╛рд░рд╛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рдЙрдВрдЯрд░ ( NUSE_Timer_Expirations_Counter [рдЯрд╛рдЗрдорд░] ) рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб


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

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

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

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

рд╢реЗрдбреНрдпреВрд▓рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ


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

  • рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ NUSE_Task_State рдХреЛ NUSE_TASK_CONTEXT рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ ред
  • рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдХрд╛рд░реНрдп рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдпрджрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рдХрд╛рд░реНрдп рдХреА рдЦреЛрдЬ рдХреА рдЬрд╛рддреА рд╣реИ, рдЕрдиреНрдпрдерд╛, рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдЕрдиреБрд╕реВрдЪрдХ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - NUSE_Scheduler () ред

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рдирд┐рджрд╛рди рдФрд░ рддреНрд░реБрдЯрд┐ рдЬрд╛рдБрдЪ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред

рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдХреЙрд▓рд┐рди рд╡рд╛рд▓реНрд╕ рддреАрд╕ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рдЕрдм рдореЗрдВрдЯрд░ рдПрдВрдмреЗрдбреЗрдб (рдореЗрдВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛ рдПрдХ рдкреНрд░рднрд╛рдЧ) рдореЗрдВ рдПрдХ рдлрд░реНрдорд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИред рдХреЙрд▓рд┐рди рд╡рд╛рд▓реНрд╕ рдЕрдХреНрд╕рд░ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдФрд░ рд╕реЗрдорд┐рдирд╛рд░реЛрдВ рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реИрдВ, рдХрдИ рддрдХрдиреАрдХреА рд▓реЗрдЦреЛрдВ рдХреЗ рд▓реЗрдЦрдХ рдФрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдкрд░ рджреЛ рдХрд┐рддрд╛рдмреЗрдВ рд╣реИрдВред рдмреНрд░рд┐рдЯреЗрди рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред рдХреЙрд▓рд┐рди рдХрд╛ рдкреЗрд╢реЗрд╡рд░ рдмреНрд▓реЙрдЧ , рдИ-рдореЗрд▓: colin_walls@mentor.comред

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


All Articles