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

公司网站导航栏是什么怎样增加网站权重

公司网站导航栏是什么,怎样增加网站权重,c 网站开发视频教程,泡泡资源网修改设备树文件 先关闭心跳灯功能#xff0c;也就是在图 10.4.1.2 中第 167 行添加 status 改为 disabled#xff0c;也就是禁止 work 这个节点#xff0c;那么禁止心跳灯功能。 我们后面需要禁止哪个功能#xff0c;只需要将其 status 属性改为 disabled 就可以了。 gpi…修改设备树文件 先关闭心跳灯功能也就是在图 10.4.1.2 中第 167 行添加 status 改为 disabled也就是禁止 work 这个节点那么禁止心跳灯功能。 我们后面需要禁止哪个功能只需要将其 status 属性改为 disabled 就可以了。 gpioled{compatible zxk, led;led-gpio gpio0 RK_PC0 GPIO_ACTIVE_HIGH;status okay;};编译内核并烧写boot.img // 1. 编译 ./bulid.sh kernel // 2. 烧写 驱动编写 /* 设置LED所使用的GPIO *//* 1. 获取设备节点gpioled */gpioled.nd of_find_node_by_path(/gpioled);if (gpioled.nd NULL){printk(gpioled node not found!\n);return -EINVAL;}/* 2. 读取status属性 */ret of_property_read_string(gpioled.nd, status, str);if (ret 0){printk(gpioled status not found!\n);return -EINVAL;}if (strcmp(str, okay) ! 0){printk(gpioled status not okay!\n);return -EINVAL;}/* 3. 获取compatible属性值并进行匹配 */ret of_property_read_string(gpioled.nd, compatible, str);if (ret 0){printk(compatible property not found!\n);return -EINVAL;}if (strcmp(str, zxk, led)! 0){printk(compatible property not match!\n);return -EINVAL;}/* 4. 获取gpio属性值并转换为gpio */ gpioled.led_gpio of_get_named_gpio(gpioled.nd, led-gpio, 0);if (gpioled.led_gpio 0){printk(led-gpio property not found!\n);return -EINVAL;}printk(led-gpio %d\n, gpioled.led_gpio);/* 5. 向gpio子系统申请使用GPIO */ret gpio_request(gpioled.led_gpio, led-gpio);if (ret 0){printk(gpio_request failed!\n);return -EINVAL;}/* 6. 设置GPIO为输出模式并输出为低电平默认led关闭 */ret gpio_direction_output(gpioled.led_gpio, 0);if (ret 0){printk(gpio_direction_output failed!\n);return -EINVAL;}#include linux/types.h #include linux/kernel.h #include linux/delay.h #include linux/ide.h #include linux/init.h #include linux/module.h #include linux/errno.h #include linux/gpio.h #include linux/cdev.h #include linux/device.h #include linux/of.h #include linux/of_address.h #include linux/of_gpio.h //#include asm/mach/map.h #include asm/uaccess.h #include asm/io.h/**************************************************************** 文件名 : gpioled.c* 功能 : 这是一个led设备驱动程序文件* 作者 : zxk* 创建日期: 2024年11月28日* 其他 ***************************************************************/#define GPIOLED_CNT 1 /* 设备号个数 */ #define GPIOLED_NAME gpioled /* 设备名 */ #define LED_ON 1 /* 开灯 */ #define LED_OFF 0 /* 关灯 *//* gpioled 设备结构体 */ struct gpioled_dev {dev_t devid; /* 设备号 */struct cdev cdev; /* cdev */struct class *class; /* 类 */struct device *device; /* 设备 */int major; /* 主设备号 */int minor; /* 次设备号 */struct device_node *nd; /* 设备节点 */int led_gpio; /* led对应的gpio */ };struct gpioled_dev gpioled;/**************************************************************** led_open - 函数名* description : 打开设备* param-inode : 传递给驱动的 inode* param-filp : 设备文件file 结构体有个叫做 private_data 的成员变量* 一般在 open 的时候将 private_data 指向设备结构体。** 返回值 : 0 成功 ***************************************************************/ static int led_open(struct inode *inode, struct file *filp) {filp-private_data gpioled; /* 设置私有数据 */return 0; }/**************************************************************** led_reads - 函数名* description : 从设备读取数据* param-filp : 要打开的文件设备* param-buf : 返回给用户空间的数据缓冲区* param-cnt : 读取的数据长度* param-off_t : 相对于文件首地址的偏移* return 读取的字节数 ***************************************************************/ static ssize_t led_read(struct file *filp, char __user *buf, size_t cnt, loff_t *off_t) { return 0; }/**************************************************************** led_write - 函数名* description : 向设备写入数据* param-filp : 设备文件要打开的文件设备* param-buf : 要写入设备的数据* param-cnt : 写入的数据长度* param-off_t : 相对于文件首地址的偏移* return 写入的文件数 ***************************************************************/ static ssize_t led_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *off_t) {int retvalue;unsigned char databuf[1];unsigned char ledstat;struct gpioled_dev *dev filp-private_data;retvalue copy_from_user(databuf, buf, cnt);if(retvalue 0) {printk(kernel write failed!\r\n);return -EFAULT;}ledstat databuf[0]; /* 获取状态值 */if(ledstat LED_ON) { gpio_set_value(dev-led_gpio, 1); /* 打开LED灯 */} else if(ledstat LED_OFF) {gpio_set_value(dev-led_gpio, 0); /* 关闭LED灯 */}return 0; }/**************************************************************** led_release - 函数名* description : 关闭释放设备* param-inode : 传递给驱动的 inode* param-filp : 设备文件要关闭的文件设备描述符** 返回值 : 0 成功 ***************************************************************/ static int led_release(struct inode *inode, struct file *filp) {return 0; }/* * 设备操作函数结构体 * 将驱动函数映射为系统调用 */static struct file_operations gpioled_fops {.owner THIS_MODULE,.open led_open,.read led_read,.write led_write,.release led_release, };/**************************************************************** led_init - 函数名* description : 驱动入口函数* param : 无* 返回值 : 0 成功 ***************************************************************/ static int __init led_init(void) {int ret;const char *str;/* 设置LED所使用的GPIO *//* 1. 获取设备节点gpioled */gpioled.nd of_find_node_by_path(/gpioled);if (gpioled.nd NULL){printk(gpioled node not found!\n);return -EINVAL;}/* 2. 读取status属性 */ret of_property_read_string(gpioled.nd, status, str);if (ret 0){printk(gpioled status not found!\n);return -EINVAL;}if (strcmp(str, okay) ! 0){printk(gpioled status not okay!\n);return -EINVAL;}/* 3. 获取compatible属性值并进行匹配 */ret of_property_read_string(gpioled.nd, compatible, str);if (ret 0){printk(compatible property not found!\n);return -EINVAL;}if (strcmp(str, zxk, led)! 0){printk(compatible property not match!\n);return -EINVAL;}/* 4. 获取gpio属性值并转换为gpio */ gpioled.led_gpio of_get_named_gpio(gpioled.nd, led-gpio, 0);if (gpioled.led_gpio 0){printk(led-gpio property not found!\n);return -EINVAL;}printk(led-gpio %d\n, gpioled.led_gpio);/* 5. 向gpio子系统申请使用GPIO */ret gpio_request(gpioled.led_gpio, led-gpio);if (ret 0){printk(gpio_request failed!\n);return -EINVAL;}/* 6. 设置GPIO为输出模式并输出为低电平默认led关闭 */ret gpio_direction_output(gpioled.led_gpio, 0);if (ret 0){printk(gpio_direction_output failed!\n);return -EINVAL;}/* 注册字符设备驱动 *//* 1.创建设备号 */if (gpioled.major){gpioled.devid MKDEV(gpioled.major, 0);ret register_chrdev_region(gpioled.devid, GPIOLED_CNT, GPIOLED_NAME);if (ret 0){printk(cannot register %s char driver [ret%d]\n,GPIOLED_NAME, GPIOLED_CNT);goto free_gpio;}}else{ret alloc_chrdev_region(gpioled.devid, 0, GPIOLED_CNT, GPIOLED_NAME);if (ret 0){printk(cannot register %s char driver [ret%d]\n,GPIOLED_NAME, GPIOLED_CNT);goto free_gpio;}gpioled.major MAJOR(gpioled.devid);/* 获取主设备号 */gpioled.minor MINOR(gpioled.devid);/* 获取次设备号 */}printk(gpioled major%d,minor%d\r\n,gpioled.major,gpioled.minor);/* 2.初始化cdev */gpioled.cdev.owner THIS_MODULE;cdev_init(gpioled.cdev, gpioled_fops);/* 3.添加一个cdev字符设备 */ret cdev_add(gpioled.cdev, gpioled.devid, GPIOLED_CNT);if (ret 0){goto del_unregister;}/* 4. 创建类 */gpioled.class class_create(THIS_MODULE, GPIOLED_NAME);if (IS_ERR(gpioled.class)){goto del_cdev;}/* 5.创建设备 */gpioled.device device_create(gpioled.class, NULL, gpioled.devid, NULL, GPIOLED_NAME);if (IS_ERR(gpioled.device)){goto destroy_class;}printk(led_init() \r\n);return 0;destroy_class:class_destroy(gpioled.class); del_cdev:cdev_del(gpioled.cdev); del_unregister:unregister_chrdev_region(gpioled.devid, GPIOLED_CNT); free_gpio:gpio_free(gpioled.led_gpio);return -EIO; }/**************************************************************** led_exit - 函数名* description : 驱动出口函数* param : 无* 返回值 : 0 成功 ***************************************************************/ static void __exit led_exit(void) {/* 注销字符设备驱动 */cdev_del(gpioled.cdev); /* 删除 cdev */unregister_chrdev_region(gpioled.devid, GPIOLED_CNT);/* 删除类 */device_destroy(gpioled.class, gpioled.devid);class_destroy(gpioled.class);/* 释放GPIO */gpio_free(gpioled.led_gpio);printk(led_exit() \r\n); }/* 将上面两个函数指定为驱动的入口和出口函数 */ module_init(led_init); module_exit(led_exit);MODULE_LICENSE(GPL); MODULE_AUTHOR(zxk); MODULE_INFO(intree, Y);ARCH arm64 KERNELDIR : /home/zxk/work/rk3568_linux_sdk/kernel CURRENT_PATH : /home/zxk/linux_driver/05_gpioled/obj-m : gpioled.obulid: kernel_moduleskernel_modules:$(MAKE) -C $(KERNELDIR) M$(CURRENT_PATH) modules clean:$(MAKE) -C $(KERNELDIR) M$(CURRENT_PATH) cleana编译测试 // 1.编译 make ARCHarm64 //ARCHarm64 必须指定否则编译会失败 /opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-gcc ledApp.c -o ledApp // 2.上传 scp ./01_chrdevbase/chrdevbase.ko root192.168.137.65:/lib/modules/4.19.232/ scp ./01_chrdevbase/chrdevbaseAPP root192.168.137.65:/lib/modules/4.19.232/
http://www.hkea.cn/news/14494305/

相关文章:

  • 网站创意设计公司邮箱登录
  • 网站淘宝客一般怎么做网站怎么备案啊
  • 做文库网站怎么赚钱动漫设计专业就业前景
  • 无锡网站开发培训wordpress4.9标签404
  • 苏州大型网站设计公司扫码点餐小程序怎么制作
  • 成都网站设计公如何做京东优惠券网站
  • 人工智能和网站开发网站建设人工费一年多少钱
  • 网站运营外包公司客户推广渠道有哪些
  • 模板网站判定鲜花网站开发与设计
  • 广告投放效果评估seo做子网站
  • 做网站做地区好还是全国的好郑州网站建设技术精粹
  • 免费浏览的网站wordpress企业官网主题
  • 重庆网站设计制作网站手机wordpress写博客
  • 哪个网站可以做奖状做网站模板用什么框架
  • 大厂网站建设网站做多个语言有什么好处
  • 全国免费发布信息网站大全网站做维恩图
  • 网站推销话术wordpress个人博客绅士模板
  • 网站解析后怎么做钓鱼网页在线生成网站
  • 漳州网站建设网站运营站点和网页的关系
  • 东莞网站建设周期wordpress7.6
  • 张家口万全区建设网站中国遵义门户网站
  • 做信息类网站广州市官网网站建设
  • 易迈互联网站建设怎么样做电子杂志的网站
  • 网站分析表类似wordpress的应用
  • 地方门户网站盈利城乡与建设厅网站
  • 手机版网站版面设计怎么做网站建设以及网页设计需要会什么
  • 学校网站织梦源码1月初达到感染高峰
  • ppt模板做的好的网站有哪些北湖区网站建设公司
  • 深圳外贸建站网络推广价格wordpress数据库更改账号密码
  • 网站开发维护任职要求wordpress主题 tao