一.简介
在Linux内核中,提出了驱动的分离和分层这样的软件思路,
一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、SPI等的设备而言,这自然不是问题,但是在嵌入式系统里面,在SoC系统中集成的独立外设控制器、挂接在SoC内存空间的外设等却不依附于此类总线。基于这一背景,Linux发明了一种虚拟的总线,称为platform总线,相应的设备称为platform_device,而驱动成为platform_driver。
platform总线模型是Linux内核虚拟出来的一条总线,不是真实的导线。平台总线模型就是把原来的驱动C文件给分成了两个C文件,一个是device.c,一个是driver.c把稳定不变的放在driver.c里面,需要变得就放在了device.c里面。
二.设备树下的Platform设备
Linux系统中platform平台框架包括总线、设备和驱动,其中总线不用我们去操心,Linux内核中会自动管理,我们只需要关心设备和驱动如何实现。
在设备树下添加一个属性节点:
tshhwctrl:tshhwctrl {
compatible = "tsh,tshhwctrl";
pinctrl-names = "default";
pinctrl-0 = <&