嵌入式学习–SPI子系统分析
以示例 ICM20608对SPI子系统进行分析
spi子系统框架见下图
由图可看出,spi子系统里边内嵌了platform子系统。
1.当设备树配置好的前提下,系统会根据设备树信息,自动生成一个平台设备(platform_dev)。
2.系统动后,platform相关驱动会和platform_dev进行匹配(匹配项就是 . compatible的内容),匹配成功后,就会调用probe函数。
3.在probe函数中,就会进行master的注册等操作。见图,会将一个新的master注册到spi核心层的master链表上,注册完成,就会遍历board_list链表并匹配(board_info)(个人感觉,board_info代表一个连接在master上的从设备,也就是图中设备树信息中绿框内的内容),匹配成功后,便会真正创建一个spi设备:spi_device。创建好spi_device后,加入对应的链表,并遍历driver链表,再次进行匹配
4.当spi驱动层,注册一个新的spi_driver时,就会将新的spi_driver加入到对应的链表,并遍历device链表进行匹配,匹配成功后,调用注册spi_driver时绑定的probe函数(自己实现的probe)。
5.在自己实现的probe函数中,实现字符设备相关操作
6.同样在probe函数中,对spi从设备进行操作,配置spi从设备,获取spi从设备数据等等
如有不对的地方,还望大家指正,相互学习
下篇进行源代码追溯