zoukankan      html  css  js  c++  java
  • 面试被问到SPI总结

      SPI驱动框架  

    1 枚举过程
    drivers/spi/spi.c:
        spi_register_board_info
            /* 对于每一个spi_master,调用spi_match_master_to_boardinfo */
            list_for_each_entry(master, &spi_master_list, list)
                spi_match_master_to_boardinfo
                /* board_info里含有bus_num, 如果某个spi_master的bus_num跟它一样
                 * 则创建一个新的spi_device
                 */  
                        if (master->bus_num == bi->busnum)
                            spi_new_device
                                spi_alloc_device
                                /* 记录bi信息, 比如片选,MODE,MAX HZ */       
                                spi_add_device /* 根据名字找到spi_driver, 调用它的probe函数 */  
                                    spi_setup(spi);
                                    device_add  /* 会绑定到一个spi_driver */
    2 数据收发过程
        spi_write
            spi_message_init(&m);
            初始化一个spi_message  /* 一个不可打断的SPI传输过程: cs=0,传数据,cs=1 */
                                   /* 一个spi_message由多个spi_transfer组成 */  
            spi_message_add_tail(&t, &m);  /* spi_transfe是SPI上传输的单方向1个或多个字节 */  
            spi_sync(spi, &m);  /* 启动传输并等待完成 */  
        
    3 spi_driver如何调用spi_controller
        spi_sync
            __spi_sync(spi, message, 0); 
                spi_async_locked
                    __spi_async
                        master->transfer(spi, message);
                wait_for_completion

    具体使用时:

  • 相关阅读:
    jQuery
    jQuery
    jQuery
    jQuery
    jQuery
    JavaScript DOM 编程艺术
    JavaScript DOM 编程艺术
    JavaScript DOM 编程艺术
    【免费】Linux命令行与Shell脚本编程大全 第3版 PDF全本 21MB 百度网盘下载
    可重入函数(转载)
  • 原文地址:https://www.cnblogs.com/jason-linux/p/10621053.html
Copyright © 2011-2022 走看看