做过51单片机或者ARM开发的人都知道,单片机内部都有自己的“片内外设”,比如UART,比如I2C,比如SPI等等... 写单片机程序的时候,比如对于UART的驱动,我们都是在程序中直接写一套函数,来操作相关的UART寄存器,在程序中的其它地方调用这些函数,完成串口的收发. 在小规模的单片机程序中,这样做是再正常不过的. 但是,在规模庞大的LINUX内核中,要处理各种各样的CPU,各种各样的UART收发器,上述办法就有心无力了:没有灵活性,无法移植,接口不一致,很难想象有一个UART驱动程序能够