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

网站建设对接流程中山英文网站建设

网站建设对接流程,中山英文网站建设,青岛网站建设哪个平台好,东莞 外贸网站建设平台总线 1.平台总线模型也叫platform总线模型,平台总线是Linux系统虚拟出来的总线, 引入总线的概念可以对驱动代码和设备信息进行分离。平台总线模型将一个驱动分成了两个部分:platform_device和platform_driver,例如可使用文件device.c和d…
平台总线

1.平台总线模型也叫platform总线模型,平台总线是Linux系统虚拟出来的总线, 引入总线的概念可以对驱动代码和设备信息进行分离。平台总线模型将一个驱动分成了两个部分:platform_device和platform_driver,例如可使用文件device.c和driver.c来分别描述这两部分,device.c用来描述硬件,driver.c用来控制硬件,平台总线通过字符串比较来match,将name相同的device.c和driver.c匹配到一起来控制硬件。

2.platform设备驱动(device.c)里面写的是硬件资源,这里的硬件资源指的是寄存器地址,中断号以及其他硬件资源等。在Linux内核里面用struct platform_device结构体来描述硬件资源。这个结构体定义在include/linux/platform_device.h文件当中,如下图:

在struct platform_device中,name为设备名称,总线进行匹配时,会比较设备和驱动的名称是否一致。设备驱动注册成功之后,可以在/sys/bus/platform/devices/目录下看到对应的name;id是一个编号,Linux用这个id来区分同名设备,id会跟在设备名后面以后缀形式显示,若将id设置为-1表示设备名后面没有后缀;id_auto表示是否自动设置id,若设置了设备名后面会跟上auto的后缀;dev表示设备的通用属性部分,struct device结构定义在include/linux/device.h中,必须实现该结构体中的void  (*release)(struct device *dev);成员函数,否则驱动会报错;resource用于定义硬件资源信息,struct resource定义在include/linux/ioport.h中,如下图:

在struct resource结构体中,start和end分别表示资源的起始信息和终止信息,name表示存储的资源名,flags表示存储资源的类型,可取下图中的值(只截取了一部分,具体参考include/linux/ioport.h):

struct platform_device中的num_resources记录资源的总个数。/sys/bus/platform/devices/目录下的内容示例如下:

如上图中的alarmtimer.0.auto表示一个名为alarmtimer的设备,编号为0,标号是自动分配的。int platform_device_register(struct platform_device *device)和void platform_device_unregister(struct platform_device *device)函数分别用于注册和卸载platform设备(device.c)(可参考讯为Linux驱动视频第六期P2)。

3.platform设备驱动(driver.c)里面写的是软件驱动,在driver.c文件中首先需要定义一个platform_driver结构体,然后去实现这个结构体中的各个成员变量,当driver.c和device.c匹配成功以后,会执行driver.c里面的probe函数,所以probe函数是必须被实现的。platform_driver定义在include/linux/platform_device.h文件当中,如下图:

struct platform_driver结构体中的probe函数在device.c和driver.c匹配成功时会被自动执行,不论先insmod加载device.ko还是先insmod加载driver.ko都会执行probe函数。remove函数在platform_driver_unregister()被调用时会被执行。id_table用于记录一组待匹配的设备名。struct device_driver定义在include/linux/device/driver.h,它也有一个name成员记录设备名,但是优先级没有id_table高,匹配时会优先使用id_table中的名字。int platform_driver_register(struct platform_driver *driver)和void platform_driver_unregister(struct platform_driver *driver)函数分别用于注册和卸载platform设备(driver.c)。设备驱动注册成功之后,可以在/sys/bus/platform/drivers/目录下看到对应的name(可参考讯为Linux驱动视频第六期P4)。在probe函数中可以通过其实参直接获取platform_device中的硬件信息,也可以通过函数struct resource *platform_get_resource(struct platform_device *,unsigned int,unsigned int);获取,该函数的第一个参数是指向目标platform_device的指针,第二个参数是目标资源的类型,例如IORESOURCE_IRQ,第三个参数是目标资源在同类资源中的索引号(注意是同类资源,索引从0开始,具体可参考讯为Linux驱动视频第六期P6)。可以将平台总线模型与前几期的字符设备、杂项设备、并发与竞争、中断等知识结合起来使用,具体可参考讯为Linux驱动视频第六期P8、P10。


文章转载自:

http://2yKlXqAc.tdhxp.cn
http://quVjsl2l.tdhxp.cn
http://PwmNdLTV.tdhxp.cn
http://hF5Va3SR.tdhxp.cn
http://jM2I2ADe.tdhxp.cn
http://VboXSamW.tdhxp.cn
http://fNcNELBh.tdhxp.cn
http://VYX3KlNI.tdhxp.cn
http://8mspY8EJ.tdhxp.cn
http://7OjQNHY3.tdhxp.cn
http://lEcFVspX.tdhxp.cn
http://1Ojeijm0.tdhxp.cn
http://SbPbsjEP.tdhxp.cn
http://qOrR6UVC.tdhxp.cn
http://kjvyGLrR.tdhxp.cn
http://MBYGzV77.tdhxp.cn
http://KJZFjyhe.tdhxp.cn
http://Z8UAL58P.tdhxp.cn
http://G7LcLHSX.tdhxp.cn
http://yHquOMwO.tdhxp.cn
http://0fgbx6pS.tdhxp.cn
http://OmEG4yX3.tdhxp.cn
http://mnjsyHS1.tdhxp.cn
http://JOidkLBB.tdhxp.cn
http://nrqs9SbH.tdhxp.cn
http://Fp1Y7zOb.tdhxp.cn
http://s6o7xJm0.tdhxp.cn
http://Yku9wRLy.tdhxp.cn
http://B0wxbQ26.tdhxp.cn
http://PjxPsMBb.tdhxp.cn
http://www.dtcms.com/wzjs/633409.html

相关文章:

  • 陕西泰烜建设集团网站集团网站建设招标
  • 邯郸网站设计怎么注册一手货源一件代发平台
  • 企业网站修改流程wordpress在线充值
  • 做报表的网站那家做网站好
  • 静态网站怎么做qq群推广引流免费网站
  • golang 网站开发 开源软件设计培训学校排名
  • 电子商务网站建设目标分析程序开发工程师需要哪些能力
  • 做视频网站用什么格式好胶南网站建设多少钱
  • python做网站吗网站站内链接
  • 个人网站备案备注信息系部网站建设
  • ssh网站开发宁波网站建设设计
  • 深圳网站建设 诺骐网php反向代理 Wordpress
  • 找人做网站定金不退wordpress 打车
  • 求职网站建设中企动力经常加班吗
  • 地方志网站建设方案wordpress评论回复
  • 郑州网站建设创业网站服务器做缓存
  • 法治建设网站作用dw做网站怎么发布
  • 个人网站备案电话访谈wordpress修改首页调用
  • 外 网站 公司小松建设官方网站
  • 搭建网站案例精粹票务网站建设
  • php网站后台登陆不了微站小程序
  • 南宁免费网站建站模板小程序链接wordpress
  • 做微商货源网站赚钱吗网站没流量
  • 网页游戏网站手机美工做网站尺寸多少钱
  • 如今做那个网站能致富网站建设费 科研 设备费
  • 做网站必须先买域名吗网络架构师工资一般多少
  • 做网站实现登陆功能网站关键词堆砌
  • 泰州建设局网站wordpress zip 升级
  • 网站备案有什么作用石家庄网站建站推广
  • 外网浏览网站大渝网官网