一:什么是驱动框架
  (1)内核中驱动部分维护者针对每个种类的驱动设计一套成熟的、标准的、典型的驱动实现,然后把不同厂家的同类硬件驱动中相同的部分抽出来自己实现好,再把不同部分留出接口给具体的驱动开发工程师来实现,这就叫驱动框架。
  (2)内核维护者在内核中设计了一些统一管控系统资源的体系,这些体系让内核能够对资源在各个驱动之间的使用统一协调和分配,保证整个内核的稳定健康运行。譬如系统中所有的GPIO就属于系统资源,每个驱动模块如果要使用某个GPIO就要先调用特殊的接口先申请,申请到后使用,使用完后要释放。又譬如中断号也是一种资源,驱动在使用前也必须去申请。这也是驱动框架的组成部分。
  (3)一些特定的接口函数、一些特定的数据结构,这些是驱动框架的直接表现。


二:内核中的LED驱动框架

1:相关文件
  (1)drivers/leds目录,这个目录就是驱动框架规定的LED这种硬件的驱动应该存放的地方。
  (2)led-class.c和led-core.c,这两个文件加起来属于LED驱动框架的第一部分,这两个文件是内核开发者提供的,他们描述的是内核中所有厂家的不同LED硬件的相同部分的逻辑。分析发现这两个文件中重的是led-class.c这个文件。
  (3)leds-xxxx.c,这个文件是LED驱动框架的第2部分,是由不同厂商的驱动工程师编写添加的,厂商驱动工程师结合自己公司的硬件的不同情况来对LED进行操作,使用第一部分提供的接口来和驱动框架进行交互,最终实现驱动的功能。

2:九鼎移植的内核中led驱动

  (1)九鼎移植的内核中未使用内核推荐的led驱动框架
  (2)九鼎的LED驱动存放在drivers/char/led/x210-led.c中