1、先创建一个spi_board_info结构描述spi设备信息,调用spi_register_board_info将这个结构添加到board_list中。
2、然后调用spi_register_master注册SPI控制器驱动,此时会调用scan_boardinfo扫描board_list,根据spi_board_info调用spi_new_device生成spi_device结构,用spi_add_device添加设备。
3、调用spi_register_driver注册spi_driver,通过与device匹配驱动设备。
/*这是一个简单的用户程序与驱动交互的例程*/
void main(void)
{
int testdev
int i
char buf[10]
/* 这里是用的open系统调用,是linux内核接口函数,不是库函数,返回fd,详细请google ,这个open最终会调用驱动中的open函数(代码流程是这样的open()->sys_open()->filp_open()->dentry_open()->驱动open)*/
testdev = open ("/dev/test",O_RDWR)
if(testdev == -1)
{
printf("Cann't open file...../n")
exit(0)
}
printf("buf = 0x%x/n",buf)
/* 下面的read write 和ioctl是用户程序和内核驱动的最直接的交互方式 */
read(testdev,buf,10)
write(testdev,buf,1)
led_ctl.port='G'
led_ctl.bit=5
led_ctl.value=0
ioctl(testdev,GPIO_IO_SET_GPG,&led_ctl)
printf("%s",buf)
pause()
close(testdev)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)