这周调试挂载在spi总线sd卡驱动,总结一下
因为这个涉及到2个驱动,spi总线驱动和sd卡驱动,sd卡设备挂载在spi总线上并不像设备挂载在i2c总线上,
i2c总线提供设备挂载需要的借口函数attach,只需要设备主动去调用attach就可以挂载上去。而对于spi总
线设备它的挂载方式不是主动去挂载,而是采取和platform虚拟总线注册设备方式相似的方法。在相应处理
器架构的目录上的platform.c文件中添加一个设备信息,相当于device,在设备驱动中注册的时候去匹配挂
载,就是对照name是否相同。
static struct spi_board_info ls_sb2f_spi_device[]={
{
.modalias = "mmc_spi",
.platform_data = NULL,
.bus_num =0,
.chip_select =1,
.mode =0,
}
spi_register_board_info(ls_sb2f_spi_device, ARRAY_SIZE(ls_sb2f_spi_device));
spi总线驱动主要就是实现spi总线的传输协议,以及给设备提供传输数据需要调用的接口函数。
内核spi总线驱动实现的传输方式是将数据封装成message,每个message由多个transfer组成,由于spi总线可
以实现全双工传输,因此对于所有transfer都是同时读写。内部都同时提供tx_buf和rx_buf。
所以作为一个挂载在spi总线上的
因为这个涉及到2个驱动,spi总线驱动和sd卡驱动,sd卡设备挂载在spi总线上并不像设备挂载在i2c总线上,
i2c总线提供设备挂载需要的借口函数attach,只需要设备主动去调用attach就可以挂载上去。而对于spi总
线设备它的挂载方式不是主动去挂载,而是采取和platform虚拟总线注册设备方式相似的方法。在相应处理
器架构的目录上的platform.c文件中添加一个设备信息,相当于device,在设备驱动中注册的时候去匹配挂
载,就是对照name是否相同。
static struct spi_board_info ls_sb2f_spi_device[]={
{
.modalias = "mmc_spi",
.platform_data = NULL,
.bus_num =0,
.chip_select =1,
.mode =0,
}
spi_register_board_info(ls_sb2f_spi_device, ARRAY_SIZE(ls_sb2f_spi_device));
spi总线驱动主要就是实现spi总线的传输协议,以及给设备提供传输数据需要调用的接口函数。
内核spi总线驱动实现的传输方式是将数据封装成message,每个message由多个transfer组成,由于spi总线可
以实现全双工传输,因此对于所有transfer都是同时读写。内部都同时提供tx_buf和rx_buf。
所以作为一个挂载在spi总线上的