作者lihgong (當憲兵是我一輩子的恥辱)
看板LinuxDev
標題Re: [心得] S3C2410 Bootloader
時間Fri Jan 30 11:19:28 2009
在原本的架構裡, 直接讓 FatFs存取 SD driver
因為我的 SD driver 寫得很爛, 只能用迴圈 polling
如果呼叫 FatFs 的程式的 priority 太高, 整個系統會被鎖死
FatFs call HAL level
Middleware ---> SD driver (BAD driver)
----
經過一些嘗試, 我的目標是讓 SD driver 不要霸佔 CPU
不能用 high priority task 執行 SD driver
我在 FatFs 到 Driver 中間, 安插一個 SD Task (low priority task)
把 SD 卡的操作移轉到 SD Task, 如此一來, SD driver 就不能霸佔 CPU了
FatFs call
OS-level CMD OS-level call HAL-level
Middleware --->
SD driver ---> SD Task ---> SD driver
------------------------------------------------------------------
high blocking low hot-waiting/polling
priority call priority driver
----
(不知道真正的OS, 碰到非得polling慢速IO時, 會怎麼做)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.92.127
→ zstar:當前程序 sleep,交出 CPU 使用權,wait event發生~ 01/30 15:27
推 milochen:請教一下,是怎樣的慢速IO 非得用 polling? 02/01 10:45
→ lihgong:說慢也不會慢(@25Mhz, SD), 只是我暫時想不出怎麼把driver 02/01 15:47
→ lihgong:寫成IRQ/ DMA的形式, 只好一直polling 02/01 15:47
推 milochen:其實polling寫的出來,IRQ的也都寫的出來。 02/01 21:19
→ milochen:原來如此,如果有個 OS 的解法,就更簡潔漂亮了 02/01 21:20