This message was deleted.
# zephyr
s
This message was deleted.
๐Ÿ‘ 1
s
์ € ์ฝ”๋“œ๋Š” ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ ๋‚ด์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— PendSV์™€๋Š” ๋ฌด๊ด€ํ•ฉ๋‹ˆ๋‹ค (PendSV๋Š” ISR ์ปจํ…์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ๊ณณ์—์„œ swap์„ ํ•ด์•ผํ•  ๋•Œ, ์ฆ‰ z_swap_*์ด ํ˜ธ์ถœ๋  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค)
๐Ÿ‘ 1
Cortex-M ํฌํŠธ๋Š” ์‹ค์ œ ์Šค์™‘์„ ๊ทธ ์–ด๋– ํ•œ ISR(ํƒ€์ด๋จธ ISR ํฌํ•จ)์—์„œ๋„ ์ธํ„ฐ๋ŸฝํŠธ exitํ• ๋•Œ ํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค
๐Ÿ‘ 2
`current != ready_q`์ด๋ฉด Cortex-M์˜ ๊ฒฝ์šฐ PendSV๋ฅผ ํ†ตํ•ด ์ตœ์ € ์šฐ์„ ๊ถŒ์—์„œ z_arm_pendsv๋กœ ๋„˜์–ด๊ฐ€๊ณ  Cortex-A/-R์€ ๋„ค์ŠคํŒ… ๋ ˆ๋ฒจ์ด 0์ด๋ฉด ๋ฐ”๋กœ z_arm_pendsv๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.
u
z_arm_exc_exit
์™€ ๊ฐ™์€ ์ธํ„ฐ๋ŸฝํŠธ wrapper ๊ฐ€ ์žˆ๋Š”์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ธํ„ฐ๋ŸฝํŠธ์™€ ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ๋˜์ง€๋Š” ํŒŒ์•…ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š๋„ค์š”. ์˜ˆ์ปจ๋Œ€, ์ œ๊ฐ€ ๋ณธ ์ฝ”๋“œํ๋ฆ„์€ `vector_table.S`์—์„œ ๋ฐ”๋กœ
sys_clock_isr
ํƒ€๊ณ  ๋ถ„๊ธฐํ•œ๋‹ค๊ณ  ๋ดค๊ฑฐ๋“ ์š”.
s
sys_clock_isr
(SysTick) ->
z_arm_int_exit
-> PENDSV ->
z_arm_pendsv
u
์•„, ํ•˜ํ•˜;; ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š”๊ตฐ์š”(์™œ ๋ชป๋ดค์ง€;;) ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ™‡โ€โ™‚๏ธ