zoukankan      html  css  js  c++  java
  • openwrt驱动与应用程序的联系

    应用程序与驱动之间需要进行命令的传递,因而它们之间需要共同定义一套双方都可以识别的数据结构,实际使用时它们include的是名字和内容相同但位置不同的头文件。

    比如spi_gpio_ad7193.h这个头文件中包含有仅给驱动所使用的结构 _mode/_conf

    struct _mode {
        // Mode Register Settings
        unsigned char mode:3;
        unsigned char dat_sta:1;
        unsigned char clk:2;
        unsigned char avg:2;
        unsigned int fs:10;
    };

    还包含驱动和应用程序都使用的定义等

    // reset the device 
    #define CMD_DEVICE_RESET    _IOW(SPI_IOC_MAGIC, 1, __u32)
    
    // Calibrate channel
    // ('cmd'refer to: Operations Modes[MOD_INTERNAL_ZS_CAL:MOD_SYSTEML_FS_CAL])
    #define CMD_CHANNEL_CALIB    _IOW(SPI_IOC_MAGIC, 2, __u32)

    我的openwrt中,驱动和应用程序的C源码都放在openwrt/package/utils中

    SPI驱动的头文件#include <linux/spi/spi_gpio_ad7193.h>对应于build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.49/include/uapi/linux/spi/spi_gpio_ad7193.h

    SPI应用程序头文件#include <linux/spi/spi_gpio_ad7193.h>对应于build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.49/user_headers/include/linux/spi/spi_gpio_ad7193.h

    应用程序的头文件可以放在自己utils文件目录下面,这样应该比较容易管理。

    如果想在make clean之后自动拷贝你的spi_gpio_ad7193.h到你的/linux-3.10.49/include/uapi/linux/spi/下面的话,那么在make clean之前应该在target/linux/generic/files/include/uapi/linux/spi下放置spi_gpio_ad7193.h这个文件。

    这样当你make clean && make V=s之后,该文件就会自动拷贝到对应的目录下去了,编译驱动的时候就不会出现找不到头文件的错误了。

  • 相关阅读:
    子站同步
    phpcms分站
    oms.corp
    php curl 正则获取网页标题
    php根据网址获取标题和描述
    优化打印订单页面;补充配送商订单菜单权限
    隐藏配送商订单状态
    manifest
    懒加载lazyload
    angularjs源码1
  • 原文地址:https://www.cnblogs.com/tfanalysis/p/3924110.html
Copyright © 2011-2022 走看看