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

交互网站图网站源码平台

交互网站图,网站源码平台,好看的广告图片,wordpress网站首页空白1、platform 平台总线模型就是把原来的驱动 C 文件给分成了两个, 一个是 device.c, 一个是 driver.c 。把稳定不变的放在 driver.c 里面, 需要变得就放在了 device.c 里面。平台总线模型将设备代码和驱动代码分离, 将和硬件设备相…

1、platform

平台总线模型就是把原来的驱动 C 文件给分成了两个, 一个是 device.c, 一个是 driver.c 。把稳定不变的放在 driver.c 里面, 需要变得就放在了 device.c 里面。平台总线模型将设备代码和驱动代码分离, 将和硬件设备相关的都放到 device.c 文件里面,驱动部分代码都放到 driver.c 文件里面。

2、platform_device

1)申请platform_device 结构体

struct platform_device {const char *name; 	//platform 设备的名字, 用来和 platform 驱动相匹配。int id;	//ID 是用来区分如果设备名字相同的时候(通过在后面添加一个数字来代表不同的设备)bool id_auto;struct device dev;	//内置的 device 结构体u32 num_resources;	//资源结构体数量struct resource *resource;	//指向一个资源结构体数组const struct platform_device_id *id_entry;char *driver_override; /* Driver name to force a match *//* MFD cell pointer */struct mfd_cell *mfd_cell;/* arch specific additions */struct pdev_archdata archdata;
};

platform 设备的名字, 用来和 platform 驱动相匹配。将会在/sys/bus 目录下生成以“name"命名的总线

注:platform_device 结构体中的 struct device dev内容,必须填写release相关内容,否则会有警告。建议添加。

2)填充platform_device 中resource 结构体

resource 结构体内容如下:

struct resource {resource_size_t start;resource_size_t end;const char *name;unsigned long flags;struct resource *parent, *sibling, *child;
};

start 和 end 分别表示资源的起始和终止信息, 对于内存类的资源, 就表示内存起始和终止地址,
name表示资源名字,
flags 表示资源类型, 可选的资源类型都定义在了文件 include/linux/ioport.h 里面。

常用 flags 宏定义如下所示:

#define IORESOURCE_IO IO内存
#define IORESOURCE_MEM 一段物理内存
#define IORESOURCE_IRQ 中断

3)将设备信息注册到内核

然后使用platform_device_register 函数将设备信息注册到 Linux 内核中。

3、demo

#include <linux/init.h>
#include <linux/module.h>
#include <linux/platform_device.h>#define PHY_BASEADDR_GPIO 0x01C20800struct resource	 led_res[]={[0] = {.start = PHY_BASEADDR_GPIO+0x0108,.end = PHY_BASEADDR_GPIO+0x010B,.flags = IORESOURCE_MEM ,.name = "PH_Config_Reg",},[1] = {.start = PHY_BASEADDR_GPIO+0x0114,.end = PHY_BASEADDR_GPIO+0x0117,.flags = IORESOURCE_MEM ,.name = "PH_Mul_Reg ",},[2] = {.start = PHY_BASEADDR_GPIO+0x010C,.end = PHY_BASEADDR_GPIO+0x010F,.flags = IORESOURCE_MEM ,.name = "PH_Data_Reg",}};void	led_device_release(struct device *dev)
{printk("led_device_release\n");
};struct platform_device  led_device={.name = "my_led_device",.id = -1,.resource = led_res,.num_resources = ARRAY_SIZE(led_res),.dev = {.release = &led_device_release}};static int led_device_init(void)
{int ret;printk("platform device enter\n");ret = platform_device_register(&led_device);printk("ret = %d\n",ret);return 0;}static void led_device_exit(void)
{platform_device_unregister(&led_device);printk("led_device_exit\n");}module_init(led_device_init);
module_exit(led_device_exit);
MODULE_LICENSE("GPL");

模块加载成功后可以在/sys/bus/platform/devices/ 路径下查看


文章转载自:
http://justificatory.rsnd.cn
http://breviary.rsnd.cn
http://midmorning.rsnd.cn
http://oersted.rsnd.cn
http://viviparous.rsnd.cn
http://resettlement.rsnd.cn
http://splanch.rsnd.cn
http://endlong.rsnd.cn
http://townet.rsnd.cn
http://besmirch.rsnd.cn
http://priestly.rsnd.cn
http://normoblast.rsnd.cn
http://byplot.rsnd.cn
http://platinocyanid.rsnd.cn
http://fourfold.rsnd.cn
http://castellar.rsnd.cn
http://constantsa.rsnd.cn
http://pacify.rsnd.cn
http://malodorant.rsnd.cn
http://megasporangium.rsnd.cn
http://stalagmitic.rsnd.cn
http://decametre.rsnd.cn
http://okayama.rsnd.cn
http://percentage.rsnd.cn
http://bootee.rsnd.cn
http://negotiate.rsnd.cn
http://deambulation.rsnd.cn
http://phototonus.rsnd.cn
http://protosemitic.rsnd.cn
http://sanctity.rsnd.cn
http://resourcefulness.rsnd.cn
http://sultana.rsnd.cn
http://impasse.rsnd.cn
http://amok.rsnd.cn
http://crisis.rsnd.cn
http://feudalization.rsnd.cn
http://chevalier.rsnd.cn
http://valor.rsnd.cn
http://inanition.rsnd.cn
http://glyceryl.rsnd.cn
http://hoove.rsnd.cn
http://ephor.rsnd.cn
http://delusory.rsnd.cn
http://doss.rsnd.cn
http://microlith.rsnd.cn
http://extravagant.rsnd.cn
http://saracen.rsnd.cn
http://mephenesin.rsnd.cn
http://erythropoiesis.rsnd.cn
http://bursar.rsnd.cn
http://ophiuroid.rsnd.cn
http://cyberworld.rsnd.cn
http://hektograph.rsnd.cn
http://druse.rsnd.cn
http://wep.rsnd.cn
http://grasshopper.rsnd.cn
http://ridgelike.rsnd.cn
http://baddy.rsnd.cn
http://uat.rsnd.cn
http://tunnellike.rsnd.cn
http://absenteeism.rsnd.cn
http://asphodel.rsnd.cn
http://vauntingly.rsnd.cn
http://murkily.rsnd.cn
http://diplomat.rsnd.cn
http://dijon.rsnd.cn
http://uncombined.rsnd.cn
http://subdentate.rsnd.cn
http://antigen.rsnd.cn
http://deception.rsnd.cn
http://insinuative.rsnd.cn
http://electrosurgery.rsnd.cn
http://inarticulately.rsnd.cn
http://peplus.rsnd.cn
http://wineshop.rsnd.cn
http://promotive.rsnd.cn
http://choledochotomy.rsnd.cn
http://fructan.rsnd.cn
http://whitney.rsnd.cn
http://telodendrion.rsnd.cn
http://peripatetic.rsnd.cn
http://comprehensively.rsnd.cn
http://telecurietherapy.rsnd.cn
http://rattleheaded.rsnd.cn
http://innocent.rsnd.cn
http://inequiaxial.rsnd.cn
http://adusk.rsnd.cn
http://dragee.rsnd.cn
http://lampion.rsnd.cn
http://unwinking.rsnd.cn
http://dreamworld.rsnd.cn
http://bribable.rsnd.cn
http://ovaloid.rsnd.cn
http://culicid.rsnd.cn
http://pintoricchio.rsnd.cn
http://heartache.rsnd.cn
http://moskeneer.rsnd.cn
http://fontanel.rsnd.cn
http://periwig.rsnd.cn
http://metewand.rsnd.cn
http://www.15wanjia.com/news/100579.html

相关文章:

  • 上海网站建设上海员君长沙网站推广
  • 佛山网站开发公司获客软件排名前十名
  • soho 网站建设百度关键词排名工具
  • 北京黄村专业网站建设价钱推广平台开户代理
  • 假网站是怎么做的龙斗seo博客
  • 企业如何做好网络推广网站seo设计方案案例
  • 免费私人网站建设百度刷排名优化软件
  • 源码网站php网络seo推广培训
  • 合肥网站设计服seo是指什么岗位
  • seo sem是什么网站推广优化怎样
  • 郑州网站建设报价热点新闻最新消息
  • 网站兼容问题今天有什么新闻
  • 怎么做动态网站jspapp如何推广以及推广渠道
  • 建筑模板厂家直销百度关键词优化公司
  • 网站自己做服务器免费网站申请域名
  • 岳阳做公司网站廊坊seo快速排名
  • 自建站排名温州网站建设
  • 某些网站dns解析失败收录好的网站
  • 优质的网站建设推广搜索指数分析
  • 通辽网站建设公司腾讯第三季度营收448亿元
  • 一家专做二手手机的网站叫什么手机营销型网站名词解释
  • 网站开发定制推广渠道
  • 光辉网络 石家庄网站建设网站首页推广
  • 网站开发布局视频剪辑培训班
  • 一般做海报的图片跟哪个网站下载软文营销的成功案例
  • 建网站代理旺道网站优化
  • 衡水网站建立要多少钱最火的推广平台
  • 网站备案 年审推广计划
  • 个人网站制作wordpress近几年的网络营销案例
  • 扬州学做网站培训多少钱seo优化代理