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

营销型网站建设试卷wordpress怎么备份按在

营销型网站建设试卷,wordpress怎么备份按在,四川住房和城乡建设厅官方网站,做dj网站用什么建站系统比较好因为项目需要控制的GPIO口比较多#xff0c;如果每个GPIO口都写一个驱动就显得比骄麻烦#xff0c;所以就写了一个通用的GPIO口驱动。只要dts里面配置好设备GPIO相关信息就可以自动加载了。可以很充分的体现多个设备一个驱动的优良性。dts文件gpio_rs485: gpio_rs485 {status… 因为项目需要控制的GPIO口比较多如果每个GPIO口都写一个驱动就显得比骄麻烦所以就写了一个通用的GPIO口驱动。只要dts里面配置好设备GPIO相关信息就可以自动加载了。可以很充分的体现多个设备一个驱动的优良性。dts文件 gpio_rs485: gpio_rs485 {status okay;compatible gpio,px30-gpio;cname rs485;en-gpio gpio3 12 GPIO_ACTIVE_HIGH;}; 驱动源代码#include dt-bindings/gpio/gpio.h #include linux/gpio.h #include linux/of_gpio.h #include linux/module.h #include linux/kernel.h #include linux/init.h #include linux/platform_device.h #include linux/err.h #include linux/slab.hstruct gpio_dev_data {int en_pin;int en_val;int gpio_val; };static struct of_device_id gpio_of_match[] {{ .compatible gpio,px30-gpio },{ } };MODULE_DEVICE_TABLE(of, gpio_of_match);static ssize_t gpio_store_en(struct device *dev,struct device_attribute *attr,const char *buf, size_t count) {struct gpio_dev_data *dev_data dev_get_drvdata(dev);unsigned long value 0;int ret;/*将echo进来的buf转换成整型*/ret kstrtoul(buf, 16, value);if (ret 0) {printk( %s:kstrtoul failed, ret%d\n, __func__, ret);return ret;}printk(%s: en value : %d\n, __func__, (int)value);if (value) {gpio_direction_output(dev_data-en_pin, dev_data-en_val);dev_data-gpio_val 1;} else {gpio_direction_output(dev_data-en_pin, !dev_data-en_val);dev_data-gpio_val 0;}return count; }static char mybuf[10]123;/*cat命令时,将会调用该函数*/ static ssize_t gpio_show_en(struct device *dev,struct device_attribute *attr, char *buf) {struct gpio_dev_data *dev_data dev_get_drvdata(dev);snprintf(mybuf,sizeof(mybuf),%d,dev_data-gpio_val);return sprintf(buf, %s\n, mybuf); }static DEVICE_ATTR(gpio_en, S_IWUSR, gpio_show_en, gpio_store_en);static int gpio_probe(struct platform_device *pdev) {struct device_node *node pdev-dev.of_node;enum of_gpio_flags flags;int gpio;int ret;int en_value;struct class *dev_class;struct device *ctl_dev;struct gpio_dev_data *dev_data;int err;const char *class_name;printk(%s enter: %d\n, __func__, __LINE__);if (!node)return -ENODEV;/*获取gpio口*/gpio of_get_named_gpio_flags(node, en-gpio, 0, flags);en_value (flags GPIO_ACTIVE_HIGH) ? 1 : 0;if (!gpio_is_valid(gpio)) {dev_err(pdev-dev, invalid en gpio%d\n, gpio);}ret devm_gpio_request(pdev-dev, gpio, onoff);if (ret) {dev_err(pdev-dev,failed to request GPIO%d for \n,gpio);return -EINVAL;}/*设置probe的默认电平*/gpio_direction_output(gpio, !en_value);dev_data kzalloc(sizeof(struct gpio_dev_data), GFP_KERNEL);if (dev_data NULL) {printk(Failed to malloc gpio_dev_data\n);return -ENOMEM;}if(en_value 0)dev_data-gpio_val 0;elsedev_data-gpio_val 1;/*创建class节点*/err of_property_read_string(node, cname, class_name);if(err){printk(%s get class name error %d\n,__FUNCTION__,__LINE__);return -EINVAL;}dev_class class_create(THIS_MODULE, class_name);ctl_dev device_create(dev_class, NULL, 0, NULL, onoff);if (IS_ERR(ctl_dev)) {dev_err(ctl_dev, Failed to create device\n);ret PTR_ERR(ctl_dev);goto err_create_dev;}err device_create_file(ctl_dev, dev_attr_gpio_en);if (err)printk(driver_create_file %d\n, err);/*获取的gpio赋值全局变量*/dev_data-en_pin gpio;dev_data-en_val en_value;dev_info(ctl_dev, %s: %d\n, __func__, __LINE__);dev_info(pdev-dev, %s: %d\n, __func__, __LINE__);dev_set_drvdata(ctl_dev, dev_data);dev_set_drvdata(pdev-dev, dev_data);return 0;err_create_dev:kfree(dev_data);return ret; }static int gpio_remove(struct platform_device *pdev) {printk(%s: %d\n, __func__, __LINE__);return 0; }#ifdef CONFIG_PM_SLEEP static int gpio_suspend(struct device *dev) {struct gpio_dev_data *dev_data dev_get_drvdata(dev);dev_info(dev, %s: %d\n, __func__, __LINE__);gpio_direction_output(dev_data-en_pin, !dev_data-en_val);return 0; }static int gpio_resume(struct device *dev) {printk(%s: %d\n, __func__, __LINE__);return 0; } #endifstatic const struct dev_pm_ops gpio_pm_ops { #ifdef CONFIG_PM_SLEEP.suspend gpio_suspend,.resume gpio_resume,.poweroff gpio_suspend,.restore gpio_resume, #endif };static struct platform_driver gpio_driver {.driver {.name gpio-en,.owner THIS_MODULE,.pm gpio_pm_ops,.of_match_table of_match_ptr(gpio_of_match),},.probe gpio_probe,.remove gpio_remove, };module_platform_driver(gpio_driver);MODULE_AUTHOR(Weiqifa 329410527qq.com); MODULE_DESCRIPTION(simple gpio driver); MODULE_LICENSE(GPL);Makefile文件obj-$(CONFIG_GPIO_CONTROL) gpio_control.o Kconfigconfig GPIO_CONTROLtristate GPIO control driverdefault nhelpGPIO control driver. 回复「 篮球的大肚子」进入技术群聊回复「1024」获取1000G学习资料
http://www.pierceye.com/news/875849/

相关文章:

  • 网站建设简介联系方式PHP 网站开发 重点知识
  • 网页设计网站排行榜浅谈一下网络营销的几个误区
  • 上海网站制作公司报价中国十大咨询公司
  • 软件开发和网站建设哪个好dede网站本地访问速度慢
  • 平安建设网站做写手哪个网站好
  • 服务器硬件影响网站速度网站链接优化
  • 商品网站建设格式最火的做网站源码语言
  • 商城建站系统多少钱商标网官方查询官网
  • 织梦网站怎么做备份昆明航空公司官方网站
  • 大什么的网站建设公司达州网站建设哪家好
  • 漳州网站建设优化房地产网站建设意义
  • 兰州酒店网站建设app推广联盟平台
  • 周边产品设计培训哪家好响应式网站做优化好吗
  • 互联网金融整站seo排名要多少钱
  • 阜宁县城乡建设局新的官方网站重庆智能网站建设哪里有
  • 做ppt常用的网站有哪些建设网络强国要有自己的技术
  • 保险网站有哪些保险网站网页设计与制作课程说明
  • 海外网站seo优化wordpress支持asp.net
  • 什么网站做企业邮箱服务单页网站cms
  • 做电商网站的框架结构图wordpress用户标签
  • 益阳做网站的公司濮阳新闻直播
  • 网站logo更换晋城市 制作网站
  • 读书网站建设策划书摘要推荐网站建设案例
  • 西安网站建设 大德wordpress图片浏览
  • 陕西建设注册中心网站网页设计与制作长江职业学院
  • 佛山网站设计外包有没有做淘宝客网站的
  • 手机怎么做3d短视频网站网站开发工程师php岗位职责
  • 莆田做网站公司电话人才网站建设方案
  • 找人做网站需要问哪些问题桂林漓江悦府
  • 专门做2次元图片的网站高清vpswindows在线看