驱动程序模板,最小内核发行版,驱动程序社区,驱动程序的微控制器?

我是embedded式Linux驱动程序开发的新手,开发了字符,UART和简单的USB驱动程序,并与SBC(树莓派2)合作。 我的主要学习资源是:基本的Linux设备驱动程序,embedded式Linux系统devise和开发,YouTube教程和LDD3。 由于缺乏现实生活中的驾驶经验,我想分享一些问题:

  1. 模板:是否有一些驱动程序模板用于加速编码过程,例如,具有经常使用的结构和function,以针对特定驱动程序进行修改和定制。

  2. 什么是合适的最低限度分布:我现在正在做的是要么使用Buildrootbuild立一个内核映像,然后插入开发的USB驱动程序,或将开发的USB驱动程序插入Ubuntu。 为了正确testing,我必须卸载默认的USB驱动程序(usb_storage); 否则不能testing我的模块。 所以,我的问题是关于现实生活中的发展和如何获得没有驱动程序的最小内核,以及如何在使用Buildroot构build时将我的模块包含在其中(作为其一部分)?

  3. 你有什么build议embedded式Linux驱动程序开发社区的详细问答? ie未来,如果我想问低层次的细节,比如这个x结构是什么,或者我在使用这个y函数的时候遇到了这个错误….是否有专门的社区? 因为我发现的一切都是针对Linux的,对于内核黑客来说,还是没有经验。

  4. 什么是链中的错过链接? 为微控制器开发应用程序依赖于数据表,用户指南,寄存器,C等。embedded式Linux的驱动程序依赖于C,Linux API,子系统等。在大多math习资源中,我从来没有find两者之间的关系。 那么,真的有分开吗? 或者他们之间有一个错过的链接?

例如,对于这个I2C传感器http://www.robot-electronics.co.uk/htm/srf10tech.htm,我们必须对其进行操作(将hexa发送到寄存器并从寄存器接收值)。 如果我们想象我们想为它开发一个I2C驱动程序,那么我们肯定需要在驱动程序中做相同的工作,这在Essential Linux Device Drivers(第278页)中有介绍。 其背后的要点是I2C内核隐藏了许多复杂和简化的驱动程序开发过程。

但是,我认为现实生活中的情况并不是传感器,而是一个微控制器或一个复杂的设备。 那么,我们如何操作这个微控制器的寄存器和外设? 另外,我没有find这种情况下的教程!