各个模块尽量简单,稳定为主,因为更换模块是比较麻烦的。模块是归属在kernel space。所以,不宜经常变动。
在module_init()中,可以只初始化一些基本的数据。不必要的初始化,或是根据配置文件的初始化,应该留给BoardDrvInit()函数。在这个函数中,可以初始化很多模块。
上层application软件要访问底层驱动,可以封装一层HAL(Hardware Abstract Layer,硬件抽象层),这样接口就显得非常清晰。修改模块时,一般就不会影响到接口。这在多人的团队开发中,是非常有利的。
架构就是:
modulex-->HAL--Application
流程:modulexInit()--->BoardDrvInit()