作者lisztbach (liszt & bach)
看板ASM
标题Re: [心得] S3C2410 Bootloader
时间Fri Jan 30 14:17:25 2009
※ 引述《lihgong (当宪兵是我一辈子的耻辱)》之铭言:
: 在原本的架构里, 直接让 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时, 会怎麽做)
以 Linux 来说 慢速 IO 的处理方式跟您的很像
通常 Linux ISR 会分两步骤
第一是必须立即处理的部份
比方说回应装置、设定 register 等等
之後会利用比方说 tasklets (或 softirq 等等)
待核心有空闲时
scheduler 把该 tasklets 排给 cpu 执行
这时就可以接着处理第二部分
例如读取或写入装置的资料
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.102.106