1.1 ARM设备树起源
在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,很多的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如板上的platform设备,resource,i2c_board_info,spi_board_info以及各种硬件的platform_data。
1.2什么是设备树?
设备树保留着存在于系统中的设备信息。当机器引导时,OS通过使用驱动程序和其他组件获得的信息建立此树,并且当添加或删除设备时更新此树。设备树是分级的,总线上的设备代表着总线适配器或驱动控制器的“子集”。设备树的每一个节点是一个设备节点(devnode),一个devnode包括设备驱动程序的设备对象加上有OS所保留的内部信息。