ู‚ู„ูŠู„ุง ุนู† ุชุนุฏุฏ ุงู„ู…ู‡ุงู… ููŠ ู…ูŠูƒุฑูˆูƒู†ุชุฑูˆู„ุฑ

ู‚ู„ูŠู„ุง ุนู† ุชุนุฏุฏ ุงู„ู…ู‡ุงู…


ูƒู„ ู…ู† ูŠุดุงุฑูƒ ูŠูˆู…ุง ุจุนุฏ ูŠูˆู… ุŒ ุฃูˆ ู…ู† ุญุงู„ุฉ ุฅู„ู‰ ุฃุฎุฑู‰ ุŒ ูŠุดุงุฑูƒ ููŠ ุจุฑู…ุฌุฉ ุฃุฏูˆุงุช ุงู„ุชุญูƒู… ุงู„ุฏู‚ูŠู‚ุฉ ุŒ ุณูˆู ูŠูˆุงุฌู‡ ุงู„ุณุคุงู„ ุนุงุฌู„ุงู‹ ุฃู… ุขุฌู„ุงู‹: ู‡ู„ ูŠุฌุจ ุฃู† ุฃุณุชุฎุฏู… ู†ุธุงู… ุชุดุบูŠู„ ู…ุชุนุฏุฏ ุงู„ู…ู‡ุงู…ุŸ ูŠูˆุฌุฏ ุงู„ูƒุซูŠุฑ ู…ู†ู‡ู… ุนู„ู‰ ุงู„ุดุจูƒุฉ ุŒ ูˆุงู„ูƒุซูŠุฑ ู…ู†ู‡ู… ู…ุฌุงู†ูŠ (ุฃูˆ ุดุจู‡ ู…ุฌุงู†ูŠ). ูู‚ุท ุงุฎุชุฑ.


ุชู†ุดุฃ ุดูƒูˆูƒ ู…ู…ุงุซู„ุฉ ุนู†ุฏู…ุง ุชุตุงุฏู ู…ุดุฑูˆุนู‹ุง ูŠุฌุจ ุนู„ู‰ ุงู„ู…ุชุญูƒู‘ู… ุงู„ู…ุชุญูƒู… ููŠู‡ ุชู†ููŠุฐ ุนุฏุฉ ุฅุฌุฑุงุกุงุช ู…ุฎุชู„ูุฉ ููŠ ูˆู‚ุช ูˆุงุญุฏ. ุงู„ุจุนุถ ู…ู†ู‡ู… ุบูŠุฑ ู…ุชุตู„ูŠู† ุจุงู„ุขุฎุฑูŠู† ุŒ ุจูŠู†ู…ุง ุงู„ุจุงู‚ูŠ ุŒ ุนู„ู‰ ุงู„ุนูƒุณ ู…ู† ุฐู„ูƒ ุŒ ู„ุง ูŠู…ูƒู† ุฃู† ูŠุฎู„ูˆ ู…ู† ุจุนุถู‡ู… ุงู„ุจุนุถ. ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ ุฐู„ูƒ ุŒ ู‚ุฏ ูŠูƒูˆู† ู‡ู†ุงูƒ ุงู„ูƒุซูŠุฑ ู…ู† ุงู„ุงุซู†ูŠู†. ู…ุง ู‡ูˆ "ุฃูƒุซุฑ ู…ู† ุงู„ู„ุงุฒู…" ูŠุนุชู…ุฏ ุนู„ู‰ ู…ู† ุณูŠู‚ูŠู… ุนู…ู„ูŠุฉ ุงู„ุชุทูˆูŠุฑ ุฃูˆ ู…ู† ุณูŠู‚ูˆู… ุจุชู†ููŠุฐู‡ุง. ุญุณู†ุง ุŒ ุฅุฐุง ูƒุงู† ู‡ูˆ ู†ูุณ ุงู„ุดุฎุต.


ุจุฏู„ุงู‹ ู…ู† ุฐู„ูƒ ุŒ ูู‡ูŠ ู„ูŠุณุช ู…ุณุฃู„ุฉ ูƒู…ูŠุฉ ุŒ ูˆู„ูƒู† ู…ุณุฃู„ุฉ ุงุฎุชู„ุงู ู†ูˆุนูŠ ููŠ ุงู„ู…ู‡ุงู… ููŠู…ุง ูŠุชุนู„ู‚ ุจุณุฑุนุฉ ุงู„ุชู†ููŠุฐ ุŒ ุฃูˆ ุจุนุถ ุงู„ู…ุชุทู„ุจุงุช ุงู„ุฃุฎุฑู‰. ู‚ุฏ ุชู†ุดุฃ ู…ุซู„ ู‡ุฐู‡ ุงู„ุฃููƒุงุฑ ุŒ ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ุนู†ุฏู…ุง ูŠุญุชุงุฌ ุงู„ู…ุดุฑูˆุน ุฅู„ู‰ ู…ุฑุงู‚ุจุฉ ุฌู‡ุฏ ุงู„ุฅู…ุฏุงุฏ ุจุงู†ุชุธุงู… (ู‡ู„ ู‡ูˆ ู…ูู‚ูˆุฏุŸ) ุŒ ุบุงู„ุจู‹ุง ู…ุง ูŠู‚ุฑุฃ ูˆูŠุญูุธ ู‚ูŠู… ูƒู…ูŠุงุช ุงู„ู…ุฏุฎู„ุงุช (ู„ุง ุชุนุทูŠ ุฑุงุญุฉ) ุŒ ูˆู…ุฑุงู‚ุจุฉ ุฏุฑุฌุฉ ุงู„ุญุฑุงุฑุฉ ุฃุญูŠุงู†ู‹ุง ูˆุงู„ุชุญูƒู… ููŠ ุงู„ู…ุฑูˆุญุฉ (ู„ุง ูŠูˆุฌุฏ ุดูŠุก ู„ู„ุชู†ูุณ) ุŒ ุชุญู‚ู‚ ู…ู† ุดุงู‡ุฏ ู…ุน ุดุฎุต ุชุซู‚ ุจู‡ (ู…ู† ุงู„ุฌูŠุฏ ู„ูƒ ุฃู† ุชุชูˆู„ู‰ ุฃู…ุฑู‡) ุŒ ูˆุงู„ุจู‚ุงุก ุนู„ู‰ ุงุชุตุงู„ ู…ุน ุงู„ู…ุดุบู„ (ุญุงูˆู„ ุฃู„ุง ุชู‡ูŠุฌู‡) ุŒ ูˆุงู„ุชุญู‚ู‚ ู…ู† ุงู„ู…ุฌู…ูˆุน ุงู„ุงุฎุชุจุงุฑูŠ ู„ู„ุฐุงูƒุฑุฉ ุงู„ุฏุงุฆู…ุฉ ู„ู„ุจุฑู†ุงู…ุฌ ุจุญุซู‹ุง ุนู† ุงู„ุฎุฑู (ุนู†ุฏ ุชุดุบูŠู„ู‡ ุŒ ุฃูˆ ู…ุฑุฉ ูˆุงุญุฏุฉ ููŠ ุงู„ุฃุณุจูˆุน ุŒ ุฃูˆ ููŠ ุงู„ุตุจุงุญ).


ูŠู…ูƒู† ุฃู† ุชูƒูˆู† ู‡ุฐู‡ ุงู„ู…ู‡ุงู… ุบูŠุฑ ุงู„ู…ุชุฌุงู†ุณุฉ ู…ุจุฑู…ุฌุฉ ูˆุฐุงุช ู…ุบุฒู‰ ูƒุจูŠุฑู‹ุง ุŒ ู…ุนุชู…ุฏุฉ ุนู„ู‰ ู…ู‡ู…ุฉ ุฎู„ููŠุฉ ูˆุงุญุฏุฉ ูˆู‚ุงุทุน ู…ุคู‚ุช. ููŠ ู…ุนุงู„ุฌ ู‡ุฐู‡ ุงู„ู…ู‚ุงุทุนุงุช ุŒ ููŠ ูƒู„ ู…ุฑุฉ ูŠุชู… ุชู†ููŠุฐ ูˆุงุญุฏุฉ ู…ู† "ู‚ุทุน" ุงู„ู…ู‡ู…ุฉ ุงู„ุชุงู„ูŠุฉ. ุงุนุชู…ุงุฏู‹ุง ุนู„ู‰ ุงู„ุฃู‡ู…ูŠุฉ ุฃูˆ ุงู„ุฅู„ุญุงุญ ุฃูˆ ุงู„ุงุนุชุจุงุฑุงุช ุงู„ู…ู…ุงุซู„ุฉ ุŒ ุบุงู„ุจู‹ุง ู…ุง ุชุชูƒุฑุฑ ู‡ุฐู‡ ุงู„ุชุญุฏูŠุงุช ููŠ ุจุนุถ ุงู„ู…ู‡ุงู… ุŒ ูˆู„ูƒู† ู†ุงุฏุฑู‹ุง ู…ุง ุชูƒูˆู† ู„ุจุนุถ ุงู„ู…ู‡ุงู… ุงู„ุฃุฎุฑู‰. ูˆู…ุน ุฐู„ูƒ ุŒ ูŠุฌุจ ุนู„ูŠู†ุง ุงู„ุชุฃูƒุฏ ู…ู† ุฃู† ูƒู„ ู…ู‡ู…ุฉ ุชู‚ูˆู… ุจุฌุฒุก ู‚ุตูŠุฑ ู…ู† ุงู„ุนู…ู„ ุŒ ุซู… ุชุณุชุนุฏ ู„ู„ุฌุฒุก ุงู„ุตุบูŠุฑ ุงู„ุชุงู„ูŠ ู…ู† ุงู„ุนู…ู„ ุŒ ูˆู…ุง ุฅู„ู‰ ุฐู„ูƒ. ู‡ุฐุง ุงู„ู†ู‡ุฌ ุŒ ุฅุฐุง ุงุนุชุฏุช ุนู„ูŠู‡ ุŒ ู„ุง ูŠุจุฏูˆ ู…ุนู‚ุฏู‹ุง ู„ู„ุบุงูŠุฉ. ูŠุญุฏุซ ุงู„ุฅุฒุนุงุฌ ุนู†ุฏู…ุง ุชุฑูŠุฏ ุฅู†ุดุงุก ู…ุดุฑูˆุน. ุฃูˆ ุŒ ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ู†ู‚ู„ ูุฌุฃุฉ ุฅู„ู‰ ุขุฎุฑ. ุชุฌุฏุฑ ุงู„ุฅุดุงุฑุฉ ุฅู„ู‰ ุฃู† ุงู„ุซุงู†ูŠุฉ ุบุงู„ุจุง ู…ุง ุชูƒูˆู† ุฃูƒุซุฑ ุตุนูˆุจุฉ ูˆุฏูˆู† ุฃูŠ ู…ู‡ู…ุฉ ูˆู‡ู…ูŠุฉ ูƒุซูŠุฑุฉ.


ูˆู„ูƒู† ู…ุงุฐุง ู„ูˆ ูƒู†ุช ุชุณุชุฎุฏู… ู†ุธุงู… ุชุดุบูŠู„ ุฌุงู‡ุฒ ู„ุฃุฏูˆุงุช ุงู„ุชุญูƒู… ุงู„ุฏู‚ูŠู‚ุฉุŸ ุจุงู„ุชุฃูƒูŠุฏ ุŒ ูƒุซูŠุฑ ูŠูุนู„ูˆู† ุฐู„ูƒ. ู‡ุฐุง ุฎูŠุงุฑ ุฌูŠุฏ. ู„ูƒู† ู…ุคู„ู ู‡ุฐู‡ ุงู„ุณุทูˆุฑ ุŒ ุญุชู‰ ุงู„ุขู† ุŒ ูƒุงู† ูˆู„ุง ูŠุฒุงู„ ู…ุณุชู…ุฑุงู‹ ุจุณุจุจ ููƒุฑุฉ ุฃู†ู‡ ุณูŠูƒูˆู† ู…ู† ุงู„ุถุฑูˆุฑูŠ ูู‡ู… ุฐู„ูƒ ุŒ ุจุนุฏ ู‚ุถุงุก ุงู„ูƒุซูŠุฑ ู…ู† ุงู„ูˆู‚ุช ุŒ ุงุฎุชุฑ ู…ู† ุจูŠู† ู…ุง ุชู…ูƒู†ุง ู…ู† ุงู„ุญุตูˆู„ ุนู„ูŠู‡ ูˆุงุณุชุฎุฏุงู… ู…ุง ู‡ูˆ ู…ุทู„ูˆุจ ุจุงู„ูุนู„ ูู‚ุท ู…ู† ู‡ุฐุง. ูˆุงูุนู„ ูƒู„ ู‡ุฐุง ุŒ ู…ุงู†ุน ู„ูƒ ุŒ ุงู„ุฎูˆุถ ููŠ ุฑู…ุฒ ุดุฎุต ุขุฎุฑ! ูˆู„ูŠุณ ู‡ู†ุงูƒ ูŠู‚ูŠู† ู…ู† ุฃู†ู‡ ููŠ ุบุถูˆู† ุณุชุฉ ุฃุดู‡ุฑ ู„ู† ูŠุชูƒุฑุฑ ู‡ุฐุง ุงู„ุฃู…ุฑ ุŒ ู„ุฃู†ู‡ ุณูŠุชู… ู†ุณูŠุงู†ู‡.


ุจู…ุนู†ู‰ ุขุฎุฑ ุŒ ู„ู…ุงุฐุง ุชุญุชุงุฌ ุฅู„ู‰ ู…ุฌู…ูˆุนุฉ ูƒุงู…ู„ุฉ ู…ู† ุงู„ุฃุฏูˆุงุช ูˆุงู„ุชุฑูƒูŠุจุงุช ุฅุฐุง ุชู… ุชุฎุฒูŠู† ุฏุฑุงุฌุฉ ูˆุงุณุชุฎุฏุงู…ู‡ุง ู‡ู†ุงูƒุŸ


ู„ุฐู„ูƒ ุŒ ูƒุงู†ุช ู‡ู†ุงูƒ ุฑุบุจุฉ ููŠ ุฅุฌุฑุงุก ู…ู‡ุงู… "ุชุจุฏูŠู„" ุจุณูŠุทุฉ ู…ู† ุฃุฌู„ Cortex-M4 ูู‚ุท (ุฑุจู…ุง ุŒ ุญุชู‰ ุจุงู„ู†ุณุจุฉ ุฅู„ู‰ M3 ูˆ M7). ู„ูƒู† ุงู„ุฑุบุจุฉ ุงู„ู‚ุฏูŠู…ุฉ ุงู„ุฌูŠุฏุฉ ููŠ ุนุฏู… ุชูˆุชูŠุฑ ุงู„ูƒุซูŠุฑ ู„ู… ุชุฎุชู.


ู„ุฐู„ูƒ ุŒ ู†ุญู† ู†ูุนู„ ุฃุจุณุท. ูŠุดุงุฑูƒ ุนุฏุฏ ุตุบูŠุฑ ู…ู† ุงู„ู…ู‡ุงู… ูˆู‚ุช ุงู„ุชู†ููŠุฐ ุจุงู„ุชุณุงูˆูŠ. ูƒู…ุง ููŠ ุงู„ุดูƒู„ 1 ุฃุฏู†ุงู‡ ุŒ ุชู‚ูˆู… ุฃุฑุจุน ู…ู‡ุงู… ุจุฐู„ูƒ. ุฏุน ุงู„ุนู†ุตุฑ ุงู„ุฑุฆูŠุณูŠ ุตูุฑุงู‹ ุŒ ู„ุฃู†ู‡ ู…ู† ุงู„ุตุนุจ ุชุฎูŠู„ ุงู„ุขุฎุฑ.



ู…ู† ุฎู„ุงู„ ุงู„ุนู…ู„ ุจู‡ุฐู‡ ุงู„ุทุฑูŠู‚ุฉ ุŒ ูŠุชู… ุถู…ุงู† ุญุตูˆู„ู‡ู… ุนู„ู‰ ุงู„ูุงุตู„ ุงู„ุฒู…ู†ูŠ ุฃูˆ ุงู„ูุชุฑุฉ ุงู„ุฒู…ู†ูŠุฉ (ุงู„ู‚ุฑุงุฏ) ูˆู„ุง ูŠูุทู„ุจ ู…ู†ู‡ู… ู…ุนุฑูุฉ ูˆุฌูˆุฏ ู…ู‡ุงู… ุฃุฎุฑู‰. ุณุชุญุตู„ ูƒู„ ู…ู‡ู…ุฉ ุจุงู„ุถุจุท ุจุนุฏ 3 ุนู„ุงู…ุงุช ุนู„ู‰ ูุฑุตุฉ ู„ู„ู‚ูŠุงู… ุจุดูŠุก ู…ุง.


ูˆู„ูƒู† ุŒ ู…ู† ู†ุงุญูŠุฉ ุฃุฎุฑู‰ ุŒ ุฅุฐุง ูƒุงู†ุช ุฃูŠ ู…ู† ุงู„ู…ู‡ุงู… ู…ุทู„ูˆุจุฉ ู„ุงู†ุชุธุงุฑ ุญุฏุซ ุฎุงุฑุฌูŠ ุŒ ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ุงู„ุถุบุท ุนู„ู‰ ุฒุฑ ุŒ ูุณูˆู ุชุถูŠุน ุจุบุจุงุก ูˆู‚ุชู‹ุง ุซู…ูŠู†ู‹ุง ู…ู† ู…ุชุญูƒู…ู†ุง. ู„ุง ูŠู…ูƒู†ู†ุง ุฃู† ู†ุชูู‚ ู…ุน ู‡ุฐุง. ูˆู„ุฏูŠู†ุง ุงู„ุถูุฏุน (ุงู„ุถู…ูŠุฑ) - ุฃูŠุถุง. ูŠุฌุจ ุงู„ู‚ูŠุงู… ุจุดูŠุก ู…ุง.


ูˆุฏุน ุงู„ู…ู‡ู…ุฉ ุŒ ุฅุฐุง ู„ู… ูŠูƒู† ู„ุฏูŠู‡ุง ู…ุง ุชูุนู„ู‡ ุญุชู‰ ุงู„ุขู† ุŒ ุฅุนุทุงุก ุงู„ูˆู‚ุช ุงู„ู…ุชุจู‚ูŠ ู…ู† ุงู„ู‚ุฑุงุฏ ุฅู„ู‰ ุฑูุงู‚ู‡ุง ุŒ ุงู„ุฐูŠู† ุนู„ู‰ ุงู„ุฃุฑุฌุญ ูŠุญุฑุซูˆู† ุจูƒู„ ู‚ูˆุชู‡ู….


ุจู…ุนู†ู‰ ุขุฎุฑ ุŒ ุงู„ู…ุดุงุฑูƒุฉ ุถุฑูˆุฑูŠุฉ. ุฏุน ุงู„ู…ู‡ู…ุฉ 2 ุชูุนู„ ุฐู„ูƒ ุชู…ุงู…ู‹ุง ุŒ ูƒู…ุง ููŠ ุงู„ุดูƒู„ 2.



ูˆู„ู…ุงุฐุง ู„ุง ูŠูุณู…ุญ ู„ู„ู…ู‡ู…ุฉ ุงู„ุฃุณุงุณูŠุฉ ููŠ ุงู„ุฎู„ููŠุฉ ุจุงู„ุชุฎู„ูŠ ุนู† ุจู‚ูŠุฉ ุงู„ูˆู‚ุช ุŒ ุฅุฐุง ุธู„ ุนู„ูŠูƒ ุงู„ุงู†ุชุธุงุฑุŸ ู„ู†ุณู…ุญ ุจุฐู„ูƒ. ูƒู…ุง ู‡ูˆ ู…ุจูŠู† ููŠ ุงู„ุดูƒู„ 3.



ูˆุฅุฐุง ูƒู†ุช ุชุนุฑู ุฃู† ุจุนุถ ุงู„ู…ู‡ุงู… ู„ู† ุชุชุทู„ุจ ู…ู†ูƒ ู‚ุฑูŠุจู‹ุง ุงู„ุชุญู‚ู‚ ู…ู† ุดูŠุก ู…ุง ุฃูˆ ุงู„ุนู…ู„ ูู‚ุทุŸ ูˆู‚ุฏ ุชุณู…ุญ ู„ู†ูุณู‡ุง ุจู‚ู„ุฉ ู†ูˆู…ู‡ุง ุŒ ูˆุจุฏู„ุงู‹ ู…ู† ุฐู„ูƒ ุณุชุถูŠุน ูˆู‚ุชู‡ุง ูˆุชุญุช ู‚ุฏู…ู‡ุง. ู„ูŠุณ ุฃู…ุฑ ุŒ ูุฅู†ู‡ ูŠุญุชุงุฌ ุฅู„ู‰ ุฅุตู„ุงุญ. ุฏุน ุงู„ู…ู‡ู…ุฉ 3 ุชููˆุช ู‚ุทุนุฉ ูˆุงุญุฏุฉ ู…ู† ูˆู‚ุชู‡ุง (ุฃูˆ ุฃู„ู). ูƒู…ุง ู‡ูˆ ู…ุจูŠู† ููŠ ุงู„ุดูƒู„ 4.



ุญุณู†ู‹ุง ุŒ ูƒู…ุง ู†ุฑู‰ ุŒ ุญุฏุฏู†ุง ุงู„ุชุนุงูŠุด ุงู„ุนุงุฏู„ ุจูŠู† ุงู„ู…ู‡ุงู… ุฃูˆ ุดูŠุก ู…ู† ู‡ุฐุง ุงู„ู‚ุจูŠู„. ูŠุฌุจ ุนู„ูŠู†ุง ุงู„ุขู† ุฌุนู„ ู…ู‡ุงู…ู†ุง ุงู„ูุฑุฏูŠุฉ ุชุชุตุฑู ุนู„ู‰ ุงู„ู†ุญูˆ ุงู„ู…ู†ุตูˆุต ุนู„ูŠู‡. ูˆุฅุฐุง ุญุงูˆู„ู†ุง ุชู‚ูŠูŠู… ุงู„ูˆู‚ุช ุŒ ููŠุฌุจ ุฃู† ู†ุชุฐูƒุฑ ู„ุบุฉ ุฐุงุช ู…ุณุชูˆู‰ ู…ู†ุฎูุถ (ู„ุณุช ุฎุงุฆูู‹ุง ู…ู† ุชุฌู…ูŠุน ุงู„ูƒู„ู…ุงุช) ูˆู„ุง ุฃุซู‚ ุชู…ุงู…ู‹ุง ููŠ ุงู„ู…ุชุฑุฌู… ู…ู† ุฃูŠ ู„ุบุฉ ุฃูˆ ู…ุณุชูˆู‰ ุนุงู„ู ุฃูˆ ู…ุฑุชูุน ุฌุฏู‹ุง. ููŠ ุงู„ูˆุงู‚ุน ุŒ ููŠ ุฃุนู…ุงู‚ ู‚ู„ูˆุจู†ุง ุŒ ู†ุญู† ุจุญุฒู… ุถุฏ ูƒู„ ุงู„ุชุจุนูŠุฉ. ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ ุฐู„ูƒ ุŒ ุญู‚ูŠู‚ุฉ ุฃู†ู†ุง ู„ุณู†ุง ุจุญุงุฌุฉ ุฅู„ู‰ ุฃูŠ ุฃุฏุงุฉ ุชุฌู…ูŠุน ุŒ ูˆู„ูƒู† ูู‚ุท ู…ู† Cortex-M4 ุŒ ุชุนู…ู„ ุนู„ู‰ ุชุจุณูŠุท ุญูŠุงุชู†ุง.


ุจุงู„ู†ุณุจุฉ ู„ู„ู…ูƒุฏุณ ุŒ ู†ุฎุชุงุฑ ู…ู†ุทู‚ุฉ ูˆุงุญุฏุฉ ู…ุดุชุฑูƒุฉ ู…ู† ุฐุงูƒุฑุฉ ุงู„ูˆุตูˆู„ ุงู„ุนุดูˆุงุฆูŠ ุชู…ู„ุฃ ุŒ ุฃูŠ ููŠ ุงุชุฌุงู‡ ุชู‚ู„ูŠู„ ุนู†ุงูˆูŠู† ุงู„ุฐุงูƒุฑุฉ. ู„ู…ุงุฐุงุŸ ูู‚ุท ู„ุฃู†ู‡ ู„ุง ูŠุนู…ู„ ุจุดูƒู„ ู…ุฎุชู„ู. ุณู†ู‚ุณู… ู‡ุฐู‡ ุงู„ู…ู†ุทู‚ุฉ ุงู„ู‡ุงู…ุฉ ุนู‚ู„ูŠุงู‹ ุฅู„ู‰ ุฃู‚ุณุงู… ู…ุชุณุงูˆูŠุฉ ูˆูู‚ู‹ุง ู„ุนุฏุฏ ุงู„ุญุฏ ุงู„ุฃู‚ุตู‰ ุงู„ู…ุนู„ู† ู„ู…ู‡ุงู…ู†ุง. ูŠูˆุถุญ ุงู„ุดูƒู„ 5 ู‡ุฐุง ู„ุฃุฑุจุน ู…ู‡ุงู….



ุจุนุฏ ุฐู„ูƒ ุŒ ู†ุฎุชุงุฑ ุงู„ู…ูƒุงู† ุงู„ุฐูŠ ุณู†ุฎุฒู† ููŠู‡ ู†ุณุฎ ู…ู† ู…ุคุดุฑุงุช ุงู„ู…ูƒุฏุณ ู„ูƒู„ ู…ู‡ู…ุฉ. ุงู„ุขู† ุŒ ู…ู† ุฎู„ุงู„ ุงู„ู…ู‚ุงุทุนุฉ ู…ู† ุงู„ู…ุคู‚ุช ุŒ ูˆุงู„ุชูŠ ู†ุฃุฎุฐู‡ุง ูƒุฌู‡ุงุฒ ุชูˆู‚ูŠุช ู„ู„ู†ุธุงู… ุŒ ู†ู‚ูˆู… ุจุญูุธ ุฌู…ูŠุน ุณุฌู„ุงุช ุงู„ู…ู‡ู…ุฉ ุงู„ุญุงู„ูŠุฉ ููŠ ู…ู†ุทู‚ุฉ ู…ูƒุฏุณู‡ุง (ุณุฌู„ SP ูŠุดูŠุฑ ุงู„ุขู† ุฅู„ู‰ ู‡ู†ุงูƒ) ุŒ ุซู… ู†ุญูุธ ู…ุคุดุฑ ู…ูƒุฏุณู‡ ููŠ ู…ูƒุงู† ุฎุงุต (ู†ุญูุธ ู‚ูŠู…ุชู‡) ุŒ ู†ุญุตู„ ุนู„ู‰ ู…ุคุดุฑ ู…ูƒุฏุณ ุงู„ู…ู‡ู…ุฉ ุงู„ุชุงู„ูŠุฉ ( ุฅุฑุณุงู„ ู‚ูŠู…ุฉ ุฌุฏูŠุฏุฉ ุฅู„ู‰ ุงู„ุณุฌู„ SP) ู…ู† ู…ูƒุงู†ู†ุง ุงู„ุฎุงุต ูˆุงุณุชุนุงุฏุฉ ุฌู…ูŠุน ุณุฌู„ุงุชู‡. ูŠุดุงุฑ ุงู„ุขู† ู†ุณุฎู‡ู… ู…ู† ู‚ุจู„ ุณุฌู„ SP ู…ู‡ู…ุชู†ุง ุงู„ู‚ุงุฏู…ุฉ. ุญุณู†ุง ุŒ ู†ุญู† ู†ุฎุฑุฌ ู…ู† ุงู„ู…ู‚ุงุทุนุฉ ุŒ ุจุงู„ุทุจุน. ุนู„ุงูˆุฉ ุนู„ู‰ ุฐู„ูƒ ุŒ ูŠุธู‡ุฑ ุงู„ุณูŠุงู‚ ุงู„ูƒุงู…ู„ ู„ู„ู…ู‡ู…ุฉ ุงู„ุชุงู„ูŠุฉ ููŠ ุงู„ู‚ุงุฆู…ุฉ ููŠ ุงู„ุณุฌู„ุงุช.


ุฑุจู…ุง ุŒ ุณูŠูƒูˆู† ู…ู† ุบูŠุฑ ุงู„ุถุฑูˆุฑูŠ ุงู„ู‚ูˆู„ ุฃู† ุงู„ุชุงู„ูŠ ุจุนุฏ ุงู„ู…ู‡ู…ุฉ 3 ููŠ ู‚ุงุฆู…ุฉ ุงู„ุงู†ุชุธุงุฑ ุณูŠูƒูˆู† ุฑุฆูŠุณูŠู‹ุง. ูˆู„ูŠุณ ู…ู† ุงู„ุถุฑูˆุฑูŠ ุŒ ุจุงู„ุทุจุน ุŒ ุฃู† ู†ุชุฐูƒุฑ ุฃู† Cortex-M4 ูŠุญุชูˆูŠ ุจุงู„ูุนู„ ุนู„ู‰ ู…ุคู‚ุช SysTick ูˆู…ู‚ุงุทุนุฉ ุฎุงุตุฉ ู…ู†ู‡ ุŒ ูˆูŠุนุฑู ุงู„ูƒุซูŠุฑ ู…ู† ู…ุตู†ุนูŠ ู…ุชุญูƒู… ุฏู‚ูŠู‚ ุนู† ุฐู„ูƒ. ุณูˆู ู†ุณุชุฎุฏู…ู‡ุง ูˆู‡ุฐุง ุงู„ุงู†ู‚ุทุงุน ุนู„ู‰ ุงู„ู†ุญูˆ ุงู„ู…ู†ุดูˆุฏ.


ู…ู† ุฃุฌู„ ุจุฏุก ู…ุคู‚ุช ุงู„ู†ุธุงู… ู‡ุฐุง ุŒ ูˆูƒุฐู„ูƒ ุฅุฌุฑุงุก ุฌู…ูŠุน ุงู„ุฃุนู…ุงู„ ุงู„ุชุญุถูŠุฑูŠุฉ ูˆุงู„ุชุญู‚ู‚ุงุช ุงู„ู„ุงุฒู…ุฉ ุŒ ูŠุฌุจ ุนู„ูŠูƒ ุงุณุชุฎุฏุงู… ุงู„ุฅุฌุฑุงุก ุงู„ู…ุฎุตุต ู„ู‡ุฐุง ุงู„ุบุฑุถ.


U8 main_start_task_switcher(void); 

ูŠูุฑุฌุน ู‡ุฐุง ุงู„ุฑูˆุชูŠู† 0 ููŠ ุญุงู„ุฉ ู…ุฑูˆุฑ ุฌู…ูŠุน ุนู…ู„ูŠุงุช ุงู„ุชุญู‚ู‚ ุฃูˆ ุฑู…ุฒ ุฎุทุฃ ููŠ ุญุงู„ุฉ ุญุฏูˆุซ ุฎุทุฃ ู…ุง. ูŠุชู… ุชุญุฏูŠุฏู‡ ุŒ ุจุดูƒู„ ุฃุณุงุณูŠ ุŒ ู…ุง ุฅุฐุง ูƒุงู† ุงู„ูƒูˆู…ุฉ ู…ุญุงุฐุงุฉ ุจุดูƒู„ ุตุญูŠุญ ูˆู…ุง ุฅุฐุง ูƒุงู†ุช ู‡ู†ุงูƒ ู…ุณุงุญุฉ ูƒุงููŠุฉ ู„ุฐู„ูƒ ุŒ ูˆูƒุฐู„ูƒ ุชู…ุชู„ุฆ ุฌู…ูŠุน ุงู„ุฃู…ุงูƒู† ุงู„ุฎุงุตุฉ ุจู†ุง ุจุงู„ู‚ูŠู… ุงู„ุฃูˆู„ูŠุฉ. ุจุงุฎุชุตุงุฑ ุŒ ุงู„ู…ู„ู„.


ุฅุฐุง ุฃุฑุงุฏ ุดุฎุต ู…ุง ุฅู„ู‚ุงุก ู†ุธุฑุฉ ุนู„ู‰ ู†ุต ุงู„ุจุฑู†ุงู…ุฌ ุŒ ูุณูŠุชู…ูƒู† ู…ู† ุงู„ู‚ูŠุงู… ุจุฐู„ูƒ ููŠ ู†ู‡ุงูŠุฉ ุงู„ุณุฑุฏ ุŒ ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ู…ู† ุฎู„ุงู„ ุงู„ุจุฑูŠุฏ ุงู„ุดุฎุตูŠ.


ู†ุนู… ุŒ ู„ู‚ุฏ ู†ุณูŠุช ุชู…ุงู…ู‹ุง ุนู†ุฏู…ุง ู†ุฃุฎุฐ ุณุฌู„ุงุช ุงู„ู…ู‡ู…ุฉ ุงู„ุชุงู„ูŠุฉ ู…ู† ุงู„ุชุฎุฒูŠู† ู„ุฃูˆู„ ู…ุฑุฉ ููŠ ุญูŠุงุชู‡ุง ุŒ ูู…ู† ุงู„ุถุฑูˆุฑูŠ ุฃู† ุชุญุตู„ ุนู„ู‰ ู‚ูŠู… ุฃุตู„ูŠุฉ ุฐุงุช ู…ุนู†ู‰. ูˆุญูŠุซ ุฅู†ู‡ุง ุณุชู‚ูˆู… ุจุฅุญุถุงุฑู‡ู… ู…ู† ู‚ุณู… ุงู„ู…ูƒุฏุณ ุงู„ุฎุงุต ุจู‡ุง ุŒ ูุฃู†ุช ุจุญุงุฌุฉ ุฅู„ู‰ ูˆุถุนู‡ู… ู…ุณุจู‚ุงู‹ ูˆุชุญุฑูŠูƒ ู…ุคุดุฑ ู…ูƒุฏุณู‡ุง ุจุญูŠุซ ูŠูƒูˆู† ู…ู„ุงุฆู…ู‹ุง. ู„ู‡ุฐุง ู†ุญู† ุจุญุงุฌุฉ ุฅู„ู‰ ุฅุฌุฑุงุก


  U8 task_run_and_return_task_number(U32 taskAddress); 

ุฅู„ู‰ ู‡ุฐุง ุงู„ุฑูˆุชูŠู† ุงู„ูุฑุนูŠ ุŒ ู†ู‚ูˆู… ุจุงู„ุฅุจู„ุงุบ ุนู† ุนู†ูˆุงู† 32 ุจุช ู„ุจุฏุงูŠุฉ ู…ู‡ู…ุชู†ุง ุงู„ุชูŠ ู†ุฑูŠุฏ ุชุดุบูŠู„ู‡ุง. ูˆู‡ูŠ (ุงู„ุฑูˆุชูŠู† ุงู„ูุฑุนูŠ) ุชุฎุจุฑู†ุง ุจุนุฏุฏ ุงู„ู…ู‡ู…ุฉ ุŒ ุงู„ุชูŠ ุชุญูˆู„ุช ููŠ ุฌุฏูˆู„ ุนุงู… ุฎุงุต ุŒ ุฃูˆ 0 ุฅุฐุง ู„ู… ูŠูƒู† ู‡ู†ุงูƒ ู…ุณุงุญุฉ ููŠ ุงู„ุฌุฏูˆู„. ุจุนุฏ ุฐู„ูƒ ุŒ ูŠู…ูƒู†ู†ุง ุชุดุบูŠู„ ู…ู‡ู…ุฉ ุฃุฎุฑู‰ ุŒ ุซู… ู…ู‡ู…ุฉ ุฃุฎุฑู‰ ุŒ ุนู„ู‰ ุงู„ุฑุบู… ู…ู† ุฃู† ุงู„ุซู„ุงุซุฉ ุฌู…ูŠุนู‡ู… ุฅุถุงูุฉ ุฅู„ู‰ ู…ู‡ู…ุชู†ุง ุงู„ุฑุฆูŠุณูŠุฉ ุงู„ุชูŠ ู„ุง ุชู†ุชู‡ูŠ ุฃุจุฏู‹ุง. ู„ู† ุชุนุทูŠู‡ุง ุฃูŠ ุฑู‚ู… ุตูุฑูŠ ู„ุฃูŠ ุดุฎุต.


ุจุถุน ูƒู„ู…ุงุช ุนู† ุงู„ุฃูˆู„ูˆูŠุงุช. ูƒุงู†ุช ุงู„ุฃูˆู„ูˆูŠุฉ ุงู„ุฑุฆูŠุณูŠุฉ ูˆู„ุง ุชุฒุงู„ ุนุฏู… ุฒูŠุงุฏุฉ ุชุญู…ูŠู„ ุงู„ู‚ุงุฑุฆ ุจุชูุงุตูŠู„ ุบูŠุฑ ุถุฑูˆุฑูŠุฉ.


ูˆู„ูƒู† ุนู„ู‰ ู…ุญู…ู„ ุงู„ุฌุฏ ุŒ ูŠุฌุจ ุฃู† ู†ุชุฐูƒุฑ ุฃู† ู‡ู†ุงูƒ ุงู†ู‚ุทุงุนุงุช ู…ู† ุงู„ู…ู†ุงูุฐ ุงู„ุชุณู„ุณู„ูŠุฉ ุŒ ู…ู† ุนุฏุฉ ุงุชุตุงู„ุงุช SPI ุŒ ู…ู† ู…ุญูˆู„ ุชู…ุซูŠู„ูŠ ุฅู„ู‰ ุฑู‚ู…ูŠ ุŒ ูˆู…ู† ู…ุคู‚ุช ุขุฎุฑ ุŒ ุจุนุฏ ูƒู„ ุดูŠุก. ูˆู…ุงุฐุง ุณูŠุญุฏุซ ุฅุฐุง ูƒู†ุง ู†ู†ุชู‚ู„ ุฅู„ู‰ ู…ู‡ู…ุฉ ุฃุฎุฑู‰ (ุณูŠุงู‚ ุงู„ุชุจุฏูŠู„) ุนู†ุฏู…ุง ู†ูƒูˆู† ููŠ ู†ูˆุน ู…ู† ุงู„ู…ู‚ุงุทุนุฉ. ุจุนุฏ ูƒู„ ุดูŠุก ุŒ ู„ู† ุชูƒูˆู† ู‡ุฐู‡ ู…ู‡ู…ุฉ ู…ุดุฑูˆุนุฉ ุŒ ูˆู„ูƒู† ุชูƒุชู„ ู…ุคู‚ุช ู„ู„ุจุฑู†ุงู…ุฌ. ูˆุณูˆู ู†ุญุงูุธ ุนู„ู‰ ู‡ุฐุง ุงู„ุณูŠุงู‚ ุงู„ุบุฑูŠุจ ูƒู†ูˆุน ู…ู† ุงู„ู…ู‡ู…ุฉ. ุณูŠูƒูˆู† ู‡ู†ุงูƒ ุงุฑุชุจุงูƒ: ุทูˆู‚ ู„ุง ูŠุฑุจุท ุŒ ู„ุง ูŠุตู„ุญ ุงู„ุบุทุงุก. ุชูˆู‚ู ุŒ ู„ุง ุŒ ู‡ุฐุง ู…ู† ู‚ุตุฉ ู…ุฎุชู„ูุฉ.


ููŠ ุญุงู„ุชู†ุง ุŒ ู‡ุฐุง ุจุจุณุงุทุฉ ู„ุง ูŠู…ูƒู† ุงู„ุณู…ุงุญ ุจู‡. ูŠุฌุจ ุฃู„ุง ู†ุณู…ุญ ู„ู†ุง ุจุชุจุฏูŠู„ ุงู„ุณูŠุงู‚ ุฃุซู†ุงุก ู…ุนุงู„ุฌุฉ ุงู„ู…ู‚ุงุทุนุฉ ุบูŠุฑ ุงู„ู…ุฎุทุท ู„ู‡ุง. ููŠู…ุง ูŠู„ูŠ ุฃูˆู„ูˆูŠุงุช ู‡ุฐุง. ุนู„ูŠู†ุง ูู‚ุท ุงู„ุงู†ุชุธุงุฑ ู‚ู„ูŠู„ุงู‹ ุŒ ูˆุนู†ุฏู‡ุง ูู‚ุท ุŒ ุนู†ุฏู…ุง ุชู†ุชู‡ูŠ ู‡ุฐู‡ ุงู„ุฌุฑุฃุฉ ุบูŠุฑ ุงู„ู…ุณุจูˆู‚ุฉ ุŒ ุงู†ุชู‚ู„ ุจู‡ุฏูˆุก ุฅู„ู‰ ู…ู‡ู…ุฉ ุฃุฎุฑู‰. ุจุงุฎุชุตุงุฑ ุŒ ูŠุฌุจ ุฃู† ุชูƒูˆู† ุฃูˆู„ูˆูŠุฉ ู…ู‚ุงุทุนุฉ ุชุจุฏูŠู„ ุงู„ู…ู‡ุงู… ุงู„ุฎุงุตุฉ ุจู†ุง ุฃุถุนู ู…ู† ุฃูˆู„ูˆูŠุฉ ุฃูŠ ู…ู† ุงู„ู…ู‚ุงุทุนุงุช ุงู„ุฃุฎุฑู‰ ุงู„ู…ุณุชุฎุฏู…ุฉ. ู‡ุฐุง ุŒ ุจุงู„ู…ู†ุงุณุจุฉ ุŒ ูŠุชู… ุฃูŠุถู‹ุง ููŠ ุฅุฌุฑุงุก ุจุฏุก ุงู„ุชุดุบูŠู„ ุงู„ุฎุงุต ุจู†ุง ุŒ ูˆู‡ู†ุงูƒ ูŠุชู… ุชุซุจูŠุชู‡ ุŒ ูˆู‡ูˆ ุงู„ุฃูƒุซุฑ ุนุฏู… ุฃูˆู„ูˆูŠุฉ ุนู„ู‰ ุงู„ุฅุทู„ุงู‚.


ู„ู… ุฃูƒู† ุฃุฑุบุจ ููŠ ุงู„ุชุญุฏุซ ุŒ ู„ูƒู† ูƒุงู† ุนู„ูŠ ุฃู† ุฃุชุญุฏุซ. ูŠุดุชู…ู„ ู…ุนุงู„ุฌู†ุง ุนู„ู‰ ูˆุถุนูŠู† ู„ู„ุชุดุบูŠู„: ู…ุชู…ูŠุฒ ูˆุบูŠุฑ ู…ุชู…ูŠุฒ. ูˆุฃูŠุถู‹ุง ุณุฌู„ูŠู† ู„ู…ุคุดุฑ ุงู„ู…ูƒุฏุณ:
SP ุงู„ุฑุฆูŠุณูŠุฉ ูˆุนู…ู„ูŠุฉ SP. ู„ุฐู„ูƒ ุŒ ู„ู† ู†ุชุจุงุฏู„ ุงู„ุชุงูู‡ ุŒ ุณู†ุณุชุฎุฏู… ุงู„ูˆุถุน ุงู„ู…ู…ูŠุฒ ูู‚ุท ูˆู…ุคุดุฑ ุงู„ู…ูƒุฏุณ ุงู„ุฑุฆูŠุณูŠ ูู‚ุท. ุนู„ุงูˆุฉ ุนู„ู‰ ุฐู„ูƒ ุŒ ุชู… ุฅุนุทุงุก ูƒู„ ู‡ุฐุง ุจุงู„ูุนู„ ููŠ ุจุฏุงูŠุฉ ูˆุญุฏุฉ ุงู„ุชุญูƒู…. ู„ุฐู„ูƒ ุŒ ู†ุญู† ู„ุณู†ุง ูู‚ุท ุชุนู‚ูŠุฏ ุญูŠุงุชู†ุง.


ูŠุจู‚ู‰ ุฃู† ู†ุชุฐูƒุฑ ุฃู† ูƒู„ ู…ู‡ู…ุฉ ุŒ ุจุงู„ุชุฃูƒูŠุฏ ุŒ ุชุฑุบุจ ููŠ ุฃู† ุชูƒูˆู† ู‚ุงุฏุฑุฉ ุนู„ู‰ ุฅู„ู‚ุงุก ูƒู„ ุดูŠุก ุนู„ู‰ ุงู„ุฌุญูŠู… ูˆูƒูŠููŠุฉ ุงู„ุงุณุชุฑุฎุงุก. ูˆู‡ุฐุง ูŠู…ูƒู† ุฃู† ูŠุญุฏุซ ููŠ ุฃูŠ ูˆู‚ุช ุฎู„ุงู„ ูŠูˆู… ุงู„ุนู…ู„ ุŒ ุฃูŠ ุฎู„ุงู„ ุงู„ู‚ุฑุงุฏ. ูŠูˆูุฑ Cortex-M4 ู„ู…ุซู„ ู‡ุฐู‡ ุงู„ุญุงู„ุงุช ุฃู…ุฑ ุชุฌู…ูŠุน ุฎุงุต SVC ุŒ ูˆุงู„ุฐูŠ ุณูˆู ู†ุชูƒูŠู ู…ุน ู…ูˆู‚ูู†ุง. ุฅู†ู‡ ูŠุคุฏูŠ ุฅู„ู‰ ู…ู‚ุงุทุนุฉ ุชุคุฏูŠ ุจู†ุง ุฅู„ู‰ ุงู„ู‡ุฏู. ูˆุณู†ุณู…ุญ ู„ู„ู…ู‡ู…ุฉ ู„ูŠุณ ูู‚ุท ุจู…ุบุงุฏุฑุฉ ู…ูƒุงู† ุงู„ุนู…ู„ ุจุนุฏ ุงู„ุบุฏุงุก ุŒ ูˆู„ูƒู† ู„ูŠุณ ู„ู„ู…ุฌูŠุก ุบุฏุง. ู„ู…ุงุฐุง ุŒ ุฏุนู‡ุง ุชุฃุชูŠ ุจุนุฏ ุงู„ุนุทู„ุฉ. ูˆุฅุฐุง ู„ุฒู… ุงู„ุฃู…ุฑ ุŒ ูุฏุนู‡ ูŠุฃุชูŠ ุนู†ุฏู…ุง ูŠู†ุชู‡ูŠ ุงู„ุฅุตู„ุงุญ ุฃูˆ ู„ุง ูŠุฃุชูŠ ุนู„ู‰ ุงู„ุฅุทู„ุงู‚. ู„ู„ู‚ูŠุงู… ุจุฐู„ูƒ ุŒ ู‡ู†ุงูƒ ุฅุฌุฑุงุก ูŠู…ูƒู† ุฃู† ุชุณุจุจู‡ ุงู„ู…ู‡ู…ุฉ ู†ูุณู‡ุง.


  void release_me_and_set_sleep_period(U32 ticks); 

ูŠุญุชุงุฌ ู‡ุฐุง ุงู„ุฑูˆุชูŠู† ูู‚ุท ู„ู„ุฅุดุงุฑุฉ ุฅู„ู‰ ุนุฏุฏ ุงู„ู‚ุฑุงุฏ ุงู„ู…ุฎุทุท ู„ู„ุฑุงุญุฉ. ุฅุฐุง ูƒุงู†ุช ุงู„ู‚ูŠู…ุฉ 0 ุŒ ููŠู…ูƒู†ูƒ ูู‚ุท ุงุณุชุฑุงุญุฉ ุจู‚ูŠุฉ ุงู„ุนู„ุงู…ุฉ ุงู„ุญุงู„ูŠุฉ. ุฅุฐุง ูƒุงู†ุช 0xFFFFFFFF ุŒ ูุฅู† ุงู„ู…ู‡ู…ุฉ "ุชู†ุงู…" ุญุชู‰ ูŠุณุชูŠู‚ุธ ุดุฎุต ู…ุง. ุชุดูŠุฑ ุฌู…ูŠุน ุงู„ุฃุฑู‚ุงู… ุงู„ุฃุฎุฑู‰ ุฅู„ู‰ ุนุฏุฏ ุงู„ุนู„ุงู…ุงุช ุงู„ุชูŠ ุณุชูƒูˆู† ุฎู„ุงู„ู‡ุง ุงู„ู…ู‡ู…ุฉ ููŠ ุญุงู„ุฉ ู†ูˆู….


ุญุชู‰ ูŠุชุณู†ู‰ ู„ุดุฎุต ุขุฎุฑ ุฃู† ูŠุณุชูŠู‚ุธ ุงู„ู…ู‡ู…ุฉ ู…ู† ุงู„ุฌุงู†ุจ ุฃูˆ ูŠุฌุนู„ู‡ ูŠู†ุงู… ุŒ ุงุถุทุฑุฑุช ุฅู„ู‰ ุฅุถุงูุฉ ู…ุซู„ ู‡ุฐู‡ ุงู„ุฅุฌุฑุงุกุงุช.


  void task_wake_up_action(U8 taskNumber); void set_task_sleep_period(U8 taskNumber, U32 ticks); 

ูˆ ุŒ ูู‚ุท ููŠ ุญุงู„ุฉ ุŒ ุญุชู‰ ู…ุซู„ ู‡ุฐุง ุงู„ุฑูˆุชูŠู† ุงู„ูุฑุนูŠ.


  void task_remove_action(U8 taskNumber); 

ุชุญุฏุซ ุชู‚ุฑูŠุจู‹ุง ุŒ ุชุดุทุจ ู…ู‡ู…ุฉ ู…ู† ู‚ุงุฆู…ุฉ ุงู„ู…ูˆุธููŠู†. ุจุตุฑุงุญุฉ ุŒ ู„ุง ุฃุนุฑู ุญุชู‰ ุงู„ุขู† ุณุจุจ ูƒุชุงุจุชู‡ุง. ูุฌุฃุฉ ุชุฃุชูŠ ููŠ ู…ุชู†ุงูˆู„ ุงู„ูŠุฏูŠู†ุŸ


ู„ู‚ุฏ ุญุงู† ุงู„ูˆู‚ุช ู„ุฅุธู‡ุงุฑ ูƒูŠู ูŠุจุฏูˆ ุงู„ู…ูƒุงู† ุงู„ุฐูŠ ูŠุชู… ููŠู‡ ุงุณุชุจุฏุงู„ ู…ู‡ู…ุฉ ู…ุง ุจู…ู‡ู…ุฉ ุฃุฎุฑู‰ ุŒ ุฃูŠ ุงู„ุชุจุฏูŠู„ ู†ูุณู‡.


ูู‚ุท ููŠ ุงู„ุญุงู„ุฉ ุŒ ุฏุนู†ุง ู†ุชุฐูƒุฑ ุฃู† ุจุนุถ ุงู„ุณุฌู„ุงุช ุŒ ุนู†ุฏ ุงู„ุฏุฎูˆู„ ุฅู„ู‰ ุงู„ู…ู‚ุงุทุนุฉ ุŒ ูŠุชู… ุญูุธู‡ุง ุนู„ู‰ ุงู„ู…ูƒุฏุณ ุฏูˆู† ู…ุดุงุฑูƒุชู†ุง ุŒ ุชู„ู‚ุงุฆูŠู‹ุง (ูƒู…ุง ู‡ูˆ ู…ุนุชุงุฏ ููŠ Cortex-M4). ู„ุฐู„ูƒ ุŒ ู†ุญู† ุจุญุงุฌุฉ ูู‚ุท ู„ุฅู†ู‚ุงุฐ ุงู„ุจุงู‚ูŠ. ู‡ุฐุง ูŠู…ูƒู† ุฃู† ูŠู†ุธุฑ ุฅู„ูŠู‡ ุฃุฏู†ุงู‡. ู„ุง ุชู†ุฒุนุฌ ู…ู…ุง ุชุฑุงู‡ ุŒ ูู‡ุฐู‡ ู‡ูŠ ุฅุฑุดุงุฏุงุช ู…ุฌู…ู‘ุน Cortex-M4 (M3 ุŒ M7) ุŒ ูƒู…ุง ู‡ูˆ ู…ูˆุถุญ ููŠ ุทุงูˆู„ุฉ ุนู…ู„ IAR Embedded.


ุฃูˆู„ุฆูƒ ุงู„ุฐูŠู† ู„ู… ูŠูˆุงุฌู‡ูˆุง ุจุนุฏ ุชุนู„ูŠู…ุงุช ุงู„ุชุฌู…ูŠุน ุŒ ูู‚ุท ุตุฏู‚ูˆู†ูŠ ุŒ ู‡ู… ูŠุจุฏูˆู† ู‡ูƒุฐุง ุจุงู„ูุนู„ ู‡ุฐู‡ ู‡ูŠ ุงู„ุฌุฒูŠุฆุงุช ุงู„ุชูŠ ุชุดูƒู„ ุฃูŠ ุจุฑู†ุงู…ุฌ ุชุญุช ARM Cortex-M4.


 SysTick_Handler STMDB SP!,{R4-R11} ;   LDR R0,=timersTable ;    LDR R1,=stacksTable ;    LDR R2,[R0] ;R2   ()  STR SP,[R1,R2,LSL #2] ;   SP (R2 * 4) __st_next_check ADD R2,R2,#1 ;   CMP R2,#TASKS_LIMIT ;R2-TASKS_LIMIT  BLO __st_no_border_yet ;   MOV R2,#0 ;    (main) LDR R3,[R1] ; main SP MOV SP,R3 B __st_timer_ok __st_no_border_yet ;; LDR SP,[R1,R2,LSL #2] ;    (errata Cortex M4) ;; CMP SP,#0 ; LDR R3,[R1,R2,LSL #2] ;  SP      CMP R3,#0 ; =0     BEQ __st_next_check MOV SP,R3 LDR R3,[R0,R2,LSL #2] ;  suspend timer CBZ R3,__st_timer_ok ; 0    ,   ; CMP R3,#0xFFFFFFFF ; ,   BEQ __st_next_check SUB R3,R3,#1 ;  1 STR R3,[R0,R2,LSL #2] ;  suspend timer B __st_next_check __st_timer_ok STR R2,[R0] ;     LDMIA SP!,{R4-R11} ;  R4-R11 BX LR 

ุชุจุฏูˆ ู…ุนุงู„ุฌุฉ ุงู„ู…ู‚ุงุทุนุฉ ุงู„ุชูŠ ุทู„ุจุชู‡ุง ุงู„ู…ู‡ู…ุฉ ู†ูุณู‡ุง ุนู†ุฏู…ุง ุชูุฑุฌุน ุจู‚ูŠุฉ ุนู„ุงู…ุฉ ุงู„ุชุฌุฒุฆุฉ ู…ุชุดุงุจู‡ุฉ. ุงู„ูุฑู‚ ุงู„ูˆุญูŠุฏ ู‡ูˆ ุฃู†ู‡ ู„ุง ูŠุฒุงู„ ุนู„ูŠูƒ ุงู„ู‚ู„ู‚ ุจุดุฃู† ุงู„ุญุตูˆู„ ุนู„ู‰ ุงู„ู‚ู„ูŠู„ ู…ู† ุงู„ู†ูˆู… ู„ุงุญู‚ู‹ุง (ุฃูˆ ุงู„ู†ูˆู… ุชู…ุงู…ู‹ุง). ู‡ู†ุงูƒ ุฏู‚ุฉ ูˆุงุญุฏุฉ. ูŠุฌุจ ุงู„ู‚ูŠุงู… ุจุนู…ู„ูŠู† ุŒ ุงูƒุชุจ ุงู„ุฑู‚ู… ุงู„ู…ุฑุบูˆุจ ููŠู‡ ููŠ ู…ุคู‚ุช ุงู„ุณูƒูˆู† ูˆูŠุชุณุจุจ ููŠ ู…ู‚ุงุทุนุฉ SVC. ุญู‚ูŠู‚ุฉ ุฃู† ู‡ุฐูŠู† ุงู„ุฅุฌุฑุงุกูŠู† ู„ุง ูŠุญุฏุซุงู† ุฐุฑูŠู‹ุง (ุฃูŠ ู„ูŠุณ ูƒู„ุงู‡ู…ุง ููŠ ู†ูุณ ุงู„ูˆู‚ุช) ุชู‚ู„ู‚ู†ูŠ ู‚ู„ูŠู„ุงู‹. ุชุฎูŠู„ ุฃู† ูŠูƒูˆู† ู„ุฏูŠู†ุง ุฌุฒุกู‹ุง ู…ู† ุงู„ุซุงู†ูŠุฉ ู…ู† ุงู„ุฒู…ู† ุŒ ู„ู‚ุฏ ุงุณุชุนุฏู†ุง ู…ุคู‚ุชู‹ุง ุŒ ูˆุญูŠู†ู‡ุง ุญุงู† ุงู„ูˆู‚ุช ู„ู„ุนู…ู„ ููŠ ู…ู‡ู…ุฉ ุฃุฎุฑู‰. ุจุฏุฃุช ุงู„ุฃุฎุฑู‰ ุชู†ูู‚ ู‚ุฑุงุฏู‡ุง ุŒ ุจูŠู†ู…ุง ุณุชูƒูˆู† ู…ู‡ู…ุชู†ุง ุงู„ู†ูˆู… ุงู„ู‚ุฑุงุฏ ุงู„ุชุงู„ูŠ ุŒ ูƒู…ุง ู‡ูˆ ู…ุชูˆู‚ุน (ู„ุฃู† ุชูˆู‚ูŠุชู‡ ู„ูŠุณ ุตูุฑุงู‹). ุจุนุฏ ุฐู„ูƒ ุŒ ุนู†ุฏู…ุง ูŠุญูŠู† ุงู„ูˆู‚ุช ุŒ ุณุชุชู„ู‚ู‰ ู…ู‡ู…ุชู†ุง ุนู„ุงู…ุฉ ูˆุณูŠู‚ุฏู…ู‡ุง ุนู„ู‰ ุงู„ููˆุฑ ู„ู…ู‚ุงุทุนุฉ SVC ุŒ ุจุณุจุจ ุงู„ุฅุฌุฑุงุกูŠู† ุงู„ู„ุฐูŠู† ู„ุง ูŠุฒุงู„ ูŠุชุนูŠู† ุงู„ู‚ูŠุงู… ุจู‡. ููŠ ุฑุฃูŠูŠ ุŒ ู„ู† ูŠุญุฏุซ ุดูŠุก ุฑู‡ูŠุจ ุŒ ู„ูƒู† ุงู„ุฑูˆุงุณุจ ุณุชุจู‚ู‰. ู„ุฐู„ูƒ ุŒ ุณูˆู ู†ูุนู„ ุฐู„ูƒ. ูŠุชู… ูˆุถุน ู…ุคู‚ุช ุงู„ู†ูˆู… ููŠ ุงู„ู…ุณุชู‚ุจู„ ููŠ ู…ูƒุงู† ุฃูˆู„ูŠ. ูŠุคุฎุฐ ู…ู† ู‡ู†ุงูƒ ุจูˆุงุณุทุฉ ุฑูˆุชูŠู† ุงู„ู…ู‚ุงุทุนุฉ ู†ูุณู‡ ู…ู† SVC. ุงู„ุฐุฑูŠุฉ ุŒ ูƒู…ุง ูƒุงู†ุช ุŒ ุชุชุญู‚ู‚. ู‡ุฐุง ู…ุจูŠู† ุฃุฏู†ุงู‡.


 SVC_Handler LDR R0,__sysTickAddr ; SysTick  MOV R1,#6 ;   CSR ,   STR R1,[R0] ;Stop SysTimer MOV R1,#7 ; ,   STR R1,[R0] ;Start SysTimer ; STMDB SP!,{R4-R11} ;   LDR R0,=timersTable ;    LDR R1,=stacksTable ;    LDR R2,[R0] ;R2   ()  STR SP,[R1,R2,LSL #2] ;   SP (R2 * 4) LDR R3,=tmpTimersTable ;   tmpTimers LDR R3,[R3,R2,LSL #2] ;tmpTimer    STR R3,[R0,R2,LSL #2] ; timer  __svc_next_check ADD R2,R2,#1 ;   CMP R2,#TASKS_LIMIT ;R2-TASKS_LIMIT  BLO __svc_no_border_yet ;   MOV R2,#0 ;    (main) LDR R3,[R1] ; main SP MOV SP,R3 B __svc_timer_ok __svc_no_border_yet ;; LDR SP,[R1,R2,LSL #2] ;Restore SP does not work (errata Cortex M4) ;; CMP SP,#0 ; LDR R3,[R1,R2,LSL #2] ;  SP      CMP R3,#0 ; =0     BEQ __svc_next_check MOV SP,R3 LDR R3,[R0,R2,LSL #2] ;  suspend timer CBZ R3,__svc_timer_ok ; 0    ,   B __svc_next_check __svc_timer_ok STR R2,[R0] ;     LDMIA SP!,{R4-R11} ; R4-R11 BX LR 

ุชุฌุฏุฑ ุงู„ุฅุดุงุฑุฉ ุฅู„ู‰ ุฃู† ูƒู„ ู‡ุฐู‡ ุงู„ุฑูˆุชูŠู† ุงู„ูุฑุนูŠ ูˆู…ุนุงู„ุฌุงุช ุงู„ู…ู‚ุงุทุนุฉ ุชุดูŠุฑ ุฅู„ู‰ ู…ู†ุทู‚ุฉ ู…ุนูŠู†ุฉ ู…ู† ุงู„ุจูŠุงู†ุงุช ุŒ ูˆุงู„ุชูŠ ูŠุจุฏูˆ ุฃู† ูŠุคุฏูŠู‡ุง ุงู„ู…ุคู„ู ูƒู…ุง ู‡ูˆ ู…ุจูŠู† ููŠ ุงู„ุดูƒู„ 7.


  DATA SECTION .taskSwitcher:CODE:ROOT(2) __topStack DCD sfe(CSTACK) __botStack DCD sfb(CSTACK) __dimStack DCD sizeof(CSTACK) __sysAIRCRaddr DCD 0xE000ED0C __sysTickAddr DCD 0xE000E010 __sysSHPRaddr DCD 0xE000ED18 __sysTickReload DCD RELOAD ;******************************************************************************* ; Task table for concurrent tasks (main is number 0). ;******************************************************************************* SECTION TABLE:DATA:ROOT(2) DS32 1 ;stack shift due to FPU mainCopyCONTROL DS32 1 ;Needed to determine if FPU is used mainPSRvalue DS32 1 ;Copy from main ;******************************************************************************* 

ู„ู„ุชุฃูƒุฏ ู…ู† ุฃู† ูƒู„ ู…ุง ุณุจู‚ ุฃู…ุฑ ู…ู†ุทู‚ูŠ ุŒ ูƒุงู† ุนู„ู‰ ุงู„ู…ุคู„ู ุฃู† ูŠูƒุชุจ ู…ุดุฑูˆุนู‹ุง ุตุบูŠุฑู‹ุง ุชุญุช ู…ู†ุถุฏุฉ IAR Embedded Workbench ุŒ ุญูŠุซ ุชู…ูƒู† ู…ู† ูุญุต ูƒู„ ุดูŠุก ุจุงู„ุชูุตูŠู„ ูˆู„ู…ุณู‡. ุชู… ุงุฎุชุจุงุฑ ูƒู„ ุดูŠุก ุนู„ู‰ ูˆุญุฏุฉ ุงู„ุชุญูƒู… STM32F303VCT6 (ARM Cortex-M4). ุฃูˆ ุจุงู„ุฃุญุฑู‰ ุŒ ุจุงุณุชุฎุฏุงู… ู„ูˆุญุฉ STM32F3DISCOVERY. ู‡ู†ุงูƒ ู…ุง ูŠูƒููŠ ู…ู† ุงู„ู…ุตุงุจูŠุญ ู„ุฅุนุทุงุก ูƒู„ ู…ู‡ู…ุฉ ุงู„ูƒุซูŠุฑ ู…ู† ุงู„ูˆู…ูŠุถ ู…ุน LED ุงู„ุฎุงุตุฉ ุจู‡ุง ุจุดูƒู„ ู…ู†ูุตู„.


ู‡ู†ุงูƒ ุนุฏุฏ ู‚ู„ูŠู„ ู…ู† ุงู„ู…ูŠุฒุงุช ุงู„ุชูŠ ูˆุฌุฏุชู‡ุง ู…ููŠุฏุฉ. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ ุŒ ุฑูˆุชูŠู† ูุฑุนูŠ ูŠุญุณุจ ููŠ ูƒู„ ู…ู†ุทู‚ุฉ ู…ูƒุฏุณ ุนุฏุฏ ุงู„ูƒู„ู…ุงุช ุบูŠุฑ ุงู„ู…ุชุฃุซุฑุฉ ุŒ ุฃูŠ ุŒ ูŠุณุงูˆูŠ ุงู„ุตูุฑ. ู‚ุฏ ูŠูƒูˆู† ุฐู„ูƒ ู…ููŠุฏู‹ุง ุนู†ุฏ ุชุตุญูŠุญ ุงู„ุฃุฎุทุงุก ุŒ ุนู†ุฏู…ุง ุชุญุชุงุฌ ุฅู„ู‰ ุงู„ุชุญู‚ู‚ ู…ู…ุง ุฅุฐุง ูƒุงู† ู…ู„ุก ุงู„ู…ูƒุฏุณ ุจู…ู‡ู…ุฉ ุฃูˆ ุฃุฎุฑู‰ ู‚ุฑูŠุจ ุฌุฏู‹ุง ู…ู† ู…ุณุชูˆู‰ ุงู„ุญุฏ.


  U32 get_task_stack_empty_space(U8 taskNum); 

ุฃูˆุฏ ุฃู† ุฃุฐูƒุฑ ูˆุธูŠูุฉ ูˆุงุญุฏุฉ ุฃุฎุฑู‰. ู‡ุฐู‡ ูุฑุตุฉ ู„ู„ู…ู‡ู…ุฉ ู†ูุณู‡ุง ู„ู…ุนุฑูุฉ ุฑู‚ู…ูƒ ููŠ ุงู„ู‚ุงุฆู…ุฉ. ูŠู…ูƒู†ูƒ ุฃู† ุชู‚ูˆู„ ู„ุดุฎุต ู…ุง ููŠ ูˆู‚ุช ู„ุงุญู‚.


 ;******************************************************************************* ; Example: U8 get_my_number(void); ;     (). ..    . ;******************************************************************************* get_my_number LDR R0,=timersTable ;    (currentTaskNumber) LDR R0,[R0] ;  BX LR ;============================================================== 

ู‡ุฐุง ุฑุจู…ุง ูƒู„ ุดูŠุก ููŠ ุงู„ูˆู‚ุช ุงู„ุฑุงู‡ู†.

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


All Articles