当前位置: 首页 > news >正文

营销外包网站定制化网站开发一般多少钱

营销外包网站,定制化网站开发一般多少钱,爱做网站yeele,用域名建设网站文章目录 参考资料#xff1a;一、SPI驱动重要数据结构1.1 SPI控制器数据结构1.2 SPI设备数据结构1.3 SPI驱动数据结构 二、SPI 驱动框架2.1 SPI控制器驱动程序2.2 SPI设备驱动程序 三、总结 参考资料#xff1a; 内核头文件#xff1a;include\linux\spi\spi.h 一、SPI驱… 文章目录 参考资料一、SPI驱动重要数据结构1.1 SPI控制器数据结构1.2 SPI设备数据结构1.3 SPI驱动数据结构 二、SPI 驱动框架2.1 SPI控制器驱动程序2.2 SPI设备驱动程序 三、总结 参考资料 内核头文件include\linux\spi\spi.h 一、SPI驱动重要数据结构 如下图SPI 子系统中包含有 SPI控制器和SPI设备两类硬件。内核对此抽象出了三个数据结构 spi_master用来表示一个SPI控制器spi_device用来表示一个SPI设备spi_driver与SPI设备对应的SPI驱动。 1.1 SPI控制器数据结构 spi_master结构中最重要的成员是transfer函数指针由它实现SPI控制器的数据传输功能。 struct spi_master {struct device dev;struct list_head list;u32 slave;s16 bus_num; //第几条总线u16 num_chipselect; //支持的片选引脚个数u16 dma_alignment;u16 mode_bits; //SPI控制器支持的工作模式u32 bits_per_word_mask; //一次传输几位 #define SPI_BPW_MASK(bits) BIT((bits) - 1) #define SPI_BIT_MASK(bits) (((bits) 32) ? ~0U : (BIT(bits) - 1)) #define SPI_BPW_RANGE_MASK(min, max) (SPI_BIT_MASK(max) - SPI_BIT_MASK(min - 1))/* 最大/最小传输速率 */u32 min_speed_hz;u32 max_speed_hz;/* other constraints relevant to this driver */u16 flags; #define SPI_MASTER_HALF_DUPLEX BIT(0) /* cant do full duplex */ #define SPI_MASTER_NO_RX BIT(1) /* cant do buffer read */ #define SPI_MASTER_NO_TX BIT(2) /* cant do buffer write */ #define SPI_MASTER_MUST_RX BIT(3) /* requires rx */ #define SPI_MASTER_MUST_TX BIT(4) /* requires tx *//* lock and mutex for SPI bus locking */spinlock_t bus_lock_spinlock;struct mutex bus_lock_mutex;/* flag indicating that the SPI bus is locked for exclusive use */bool bus_lock_flag;/*设置spi总线工作模式频率等*/int (*setup)(struct spi_device *spi);/*spi 传输方法*/int (*transfer)(struct spi_device *spi,struct spi_message *mesg);void (*cleanup)(struct spi_device *spi);bool (*can_dma)(struct spi_master *master,struct spi_device *spi,struct spi_transfer *xfer);bool queued;struct kthread_worker kworker;struct task_struct *kworker_task;struct kthread_work pump_messages;spinlock_t queue_lock;struct list_head queue;struct spi_message *cur_msg; bool idling; //空闲bool busy; //忙bool running; //运行中bool rt;bool auto_runtime_pm;bool cur_msg_prepared;bool cur_msg_mapped;struct completion xfer_completion;size_t max_dma_len;int (*prepare_transfer_hardware)(struct spi_master *master);int (*transfer_one_message)(struct spi_master *master,struct spi_message *mesg);int (*unprepare_transfer_hardware)(struct spi_master *master);int (*prepare_message)(struct spi_master *master,struct spi_message *message);int (*unprepare_message)(struct spi_master *master,struct spi_message *message);void (*set_cs)(struct spi_device *spi, bool enable);int (*transfer_one)(struct spi_master *master, struct spi_device *spi,struct spi_transfer *transfer);void (*handle_err)(struct spi_master *master,struct spi_message *message);/* gpio chip select */int *cs_gpios;/* statistics */struct spi_statistics statistics;/* DMA channels for use with core dmaengine helpers */struct dma_chan *dma_tx;struct dma_chan *dma_rx;/* dummy data for full duplex devices */void *dummy_rx;void *dummy_tx; }; 1.2 SPI设备数据结构 spi_device结构体里面记录有设备的片选引脚、频率、挂在哪个SPI控制器下面等信息。 struct spi_device {struct device dev;struct spi_master *master; //设备挂在的对应控制器u32 max_speed_hz; //该设备能支持的SPI时钟最大值u8 chip_select; //是这个spi_master下的第几个设备u8 bits_per_word; //每次传输的位数,bits_per_word是可以大于32的也就是每次SPI传输可能会发送多于32位的数据这适用于DMA突发传输u16 mode; //工作模式 #define SPI_CPHA 0x01 /* 在第1个周期采样在第2个周期采样 */ #define SPI_CPOL 0x02 /* 平时时钟极性 */ #define SPI_MODE_0 (0|0) /* (original MicroWire) */ #define SPI_MODE_1 (0|SPI_CPHA) #define SPI_MODE_2 (SPI_CPOL|0) #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA) #define SPI_CS_HIGH 0x04 /* 一般来说片选引脚时低电平有效SPI_CS_HIGH表示高电平有效 */ #define SPI_LSB_FIRST 0x08 /* 一般来说先传输MSB(最高位)SPI_LSB_FIRST表示先传LSB(最低位),很多SPI控制器并不支持SPI_LSB_FIRST */ #define SPI_3WIRE 0x10 /* SO、SI共用一条线 */ #define SPI_LOOP 0x20 /* 回环模式就是SO、SI连接在一起 */ #define SPI_NO_CS 0x40 /* 只有一个SPI设备没有片选信号也不需要片选信号 */ #define SPI_READY 0x80 /* SPI从设备可以拉低信号表示暂停、表示未就绪 */ #define SPI_TX_DUAL 0x100 /* 发送数据时有2条信号线 */ #define SPI_TX_QUAD 0x200 /* 发送数据时有4条信号线 */ #define SPI_RX_DUAL 0x400 /* 接收数据时有2条信号线 */ #define SPI_RX_QUAD 0x800 /* 接收数据时有4条信号线 */ #define SPI_SLAVE_MODE 0x1000 /* enabled spi slave mode */int irq;void *controller_state;void *controller_data;char modalias[SPI_NAME_SIZE];int cs_gpio; //这是可选项也可以把spi_device的片选引脚记录在这里/* the statistics */struct spi_statistics statistics; };1.3 SPI驱动数据结构 spi_driver 结构体是”SPI总线设备驱动模型”中的一部分。 struct spi_driver {const struct spi_device_id *id_table;int (*probe)(struct spi_device *spi);int (*remove)(struct spi_device *spi);void (*shutdown)(struct spi_device *spi);struct device_driver driver; };二、SPI 驱动框架 SPI 子系统中包含有 SPI控制器和SPI设备两类硬件。对应就有SPI控制器驱动和SPI设备驱动SPI控制器驱动提供SPI的传输能力。SPI设备驱动提供对SPI设备的访问能力它知道怎么访问这个设备知道这个设备的数据含义是什么 它会调用SPI控制器的函数来收发数据。 2.1 SPI控制器驱动程序 SPI控制器的驱动程序可以基于平台总线设备驱动模型来实现 在设备树里描述SPI控制器的硬件信息在设备树子节点里描述挂在下面的SPI设备的信息在platform_driver中提供一个probe函数 它会注册一个spi_master还会解析设备树子节点创建spi_device结构体 2.2 SPI设备驱动程序 跟平台总线设备驱动模型类似Linux中也有一个SPI总线设备驱动模型 左边是spi_driver使用C文件实现里面有id_table表示能支持哪些SPI设备有probe函数右边是spi_device用来描述SPI设备比如它的片选引脚、频率 可以来自设备树比如由SPI控制器驱动程序解析设备树后创建、注册spi_device可以来自C文件比如使用spi_register_board_info创建、注册spi_device SPI驱动模型 右边”平台总线设备驱动模型”左边“SPI总线设备驱动模型”。 三、总结 本文描述了SPI驱动程序模型。
http://www.hkea.cn/news/14570835/

相关文章:

  • 口碑好的网站建设公司哪家好产品展示栏目在网站中的作用
  • 网站建设公司的转型wordpress大学主题1.3
  • 潍坊网站制作软件怎么搭建网站 优帮云
  • 网站开发服务税率是多少当前主流的网站开发语言
  • 青岛网站建设公司招聘山东网站建设口碑好
  • 绿色环保材料网站模板python基础教程第二版
  • 上传下载网站模板安徽海鹏建设工程有限公司网站
  • 门户网站用什么程序做Wordpress怎么改成中文
  • 邢台医院网站建设深圳市住房和建设局红色警示查询
  • 网站 测速度搜索引擎优化时营销关键词
  • 百度有没有做游戏下载网站吗wordpress 文章样式
  • 怎么建设淘宝联盟的网站网站倒计时怎么做
  • 网站维护运营好做吗河南网站托管
  • 深圳凌 网站开发黄埔网站开发
  • 湘西北京网站建设上海装修公司排名统帅
  • 网页游戏网站搭建建设有限公司首页
  • 做网站还是做游戏wordpress 文章系统
  • 网站怎么做备份营销策划36计
  • 为网站网站做推广网站项目管理系统
  • 龙川县建设网站中山市住房和城乡建设局官网
  • 事业单位报名网站html网站引导页模板
  • 企业网站的设计与实现南平 建网站
  • 临沂市建设局兰山区网站wordpress漂浮框
  • 网站建设作业素材wordpress 缓存下不计数
  • 成都网站建设怎么样郑州做网站网络公司
  • 加强人社网站建设一个公司可以注册几个网站
  • 在线名片制作网站开发网站营销优化方案
  • 昆明网站推广8888168如何让我们的网站新闻被百度新闻收录
  • 无本金一天赚500大型网站seo课程
  • 网站制作完成后应进入什么阶段广州网站建设广州网络推广公司好