不同芯片上的相同Linux驱动程序

ove*_*ord 3 linux linux-device-driver linux-kernel

我是Linux驱动程序开发的新手.我想知道Linux驱动程序在不同芯片上的工作原理.例如,同样的uart驱动程序在allwinner和sitara socs上工作吗?allwinner和sitara socs是否有相同的uart外围设备?

Sam*_*Das 6

基本上如何工作是基于分层概念,如下图所示.

内核源是分层的,因此我们不必为每个系统反复写入它并增加其可用性.

这背后的方法是,架构师在底层依赖代码,然后是总线驱动程序层(SPI,I2C等),然后是适配器或设备驱动程序.

因此,如果一块电路板使用公司A的NAND闪存通过SPI或任何类似的接口,我们可以在任何给定电路板上使用相同的设备驱动程序A-NAND Flash,无论SPI存在什么,但只需要关注SPI总线驱动程序应作为平台驱动程序存在.

在探测时,SPI将通过NAND Flash的地址访问设备驱动程序.这里SPI驱动程序知道如何与SPI设备进行通信,NAND闪存驱动程序继续告诉SPI驱动程序要转移到NAND闪存,SPI负责如何传输.在此SPI平台驱动程序可能因不同平台而异,但NAND闪存驱动程序保持不变.

通过这种方法,设备的相同设备驱动程序可以在不同的系统中使用,而不依赖于硬件规范.

Linux内核映射