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

电子商务网站的设计枣阳网站开发公司哪家好

电子商务网站的设计,枣阳网站开发公司哪家好,手机网站开发开发,湖南长沙最新情况瑞芯微RK3568芯片是一款定位中高端的通用型SOC#xff0c;采用22nm制程工艺#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU#xff0c;可用于轻量级人工…瑞芯微RK3568芯片是一款定位中高端的通用型SOC采用22nm制程工艺搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。 ​ 【公众号】迅为电子 【粉丝群】824412014加群获取驱动文档例程 【视频观看】嵌入式学习之Linux驱动第九期_中断_全新升级_基于RK3568 【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板 第92章 引用计数器实验 92.1实验程序的编写 92.1.1 驱动程序编写 本实验对应的网盘路径为iTOP-RK3568开发板【底板V1.7版本】\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动例程\68_kref\module。 我们编写驱动代码这段代码用于定义并初始化两个自定义内核对象 mykobject01 和 mykobject02并将它们添加到一个自定义内核对象集合 mykset 中。这些自定义内核对象可以用于在Linux内核中表示和管理特定的功能或资源。代码中的注释对各个部分进行了解释帮助理解代码的功能和目的。编写完成的kref.c代码如下所示 #include linux/module.h #include linux/init.h #include linux/slab.h #include linux/configfs.h #include linux/kernel.h #include linux/kobject.h// 定义了三个kobject指针变量mykobject01、mykobject02、mykobject03 struct kobject *mykobject01; struct kobject *mykobject02; struct kobject *mykobject03;// 定义了一个kobj_type结构体变量mytype用于描述kobject的类型。 struct kobj_type mytype; // 模块的初始化函数 static int mykobj_init(void) {int ret;// 创建kobject的第一种方法// 创建并添加了名为mykobject01的kobject对象父kobject为NULLmykobject01 kobject_create_and_add(mykobject01, NULL);printk(mykobject01 kref is %d\n, mykobject01-kref.refcount.refs.counter);// 创建并添加了名为mykobject02的kobject对象父kobject为mykobject01。mykobject02 kobject_create_and_add(mykobject02, mykobject01);printk(mykobject01 kref is %d\n, mykobject01-kref.refcount.refs.counter);printk(mykobject02 kref is %d\n, mykobject02-kref.refcount.refs.counter);// 创建kobject的第二种方法// 1 使用kzalloc函数分配了一个kobject对象的内存mykobject03 kzalloc(sizeof(struct kobject), GFP_KERNEL);// 2 初始化并添加到内核中名为mykobject03。ret kobject_init_and_add(mykobject03, mytype, NULL, %s, mykobject03);printk(mykobject03 kref is %d\n, mykobject03-kref.refcount.refs.counter);return 0; }// 模块退出函数 static void mykobj_exit(void) {printk(mykobject01 kref is %d\n, mykobject01-kref.refcount.refs.counter);printk(mykobject02 kref is %d\n, mykobject02-kref.refcount.refs.counter);printk(mykobject03 kref is %d\n, mykobject03-kref.refcount.refs.counter);// 释放了之前创建的kobject对象kobject_put(mykobject01);printk(mykobject01 kref is %d\n, mykobject01-kref.refcount.refs.counter);printk(mykobject02 kref is %d\n, mykobject02-kref.refcount.refs.counter);printk(mykobject03 kref is %d\n, mykobject03-kref.refcount.refs.counter);kobject_put(mykobject02);printk(mykobject01 kref is %d\n, mykobject01-kref.refcount.refs.counter);printk(mykobject02 kref is %d\n, mykobject02-kref.refcount.refs.counter);printk(mykobject03 kref is %d\n, mykobject03-kref.refcount.refs.counter);kobject_put(mykobject03);printk(mykobject01 kref is %d\n, mykobject01-kref.refcount.refs.counter);printk(mykobject02 kref is %d\n, mykobject02-kref.refcount.refs.counter);printk(mykobject03 kref is %d\n, mykobject03-kref.refcount.refs.counter); }module_init(mykobj_init); // 指定模块的初始化函数 module_exit(mykobj_exit); // 指定模块的退出函数MODULE_LICENSE(GPL); // 模块使用的许可证 MODULE_AUTHOR(topeet); // 模块的作者 92.2 运行测试 92.2.1 编译驱动程序 在上一小节中的kref.c代码同一目录下创建 Makefile 文件Makefile 文件内容如下所示 export ARCHarm64#设置平台架构 export CROSS_COMPILEaarch64-linux-gnu-#交叉编译器前缀 obj-m kref.o #此处要和你的驱动源文件同名 KDIR :/home/topeet/Linux/linux_sdk/kernel #这里是你的内核目录 PWD ? $(shell pwd) all:make -C $(KDIR) M$(PWD) modules #make操作 clean:make -C $(KDIR) M$(PWD) clean #make clean操作 对于Makefile的内容注释已在上图添加保存退出之后来到存放kref.c和Makefile文件目录下如下图图92-1所示 图 92-1 然后使用命令“make”进行驱动的编译编译完成如下图图92-2所示 图 92-2 编译完生成kref.ko目标文件如下图图92-3所示 图 92-3 至此驱动模块就编译成功了接下来进行测试。 92.2.2 运行测试 开发板启动之后使用以下命令进行驱动模块的加载如下图图92-4所示 insmod kref.ko 图92-4 如上图所示驱动加载之后第一条打印为“mykobject01 kref is 1”因为创建了mykobject01,所以引用计数器的值为1如下图所示的I。第二条打印为“mykobject01 kref is 2”因为在mykobject01目录下创建了子目录mykobject02,所以mykobject01的计数器值为2mykobject02的计数器值为1如下图所示的II。 图92-5 现在我们拓展学习一下如上图III所示如果在objectA下面创建俩个objectobjectA的计数器值为3。如上图所示IV如果在objectA下面创建俩个object那么objectA的计数器值为3在objectB下创建object,那么objectB的计数器值为2objectC的计数器值为1。 最后可以使用以下命令进行驱动的卸载如下图图21-11所示 rmmod kref 图92-6 如上图所示计数器的值打印如上。当引用计数器的值为0时表示没有任何引用指向对象或资源可以安全地释放对象或资源并进行相关的清理操作。 至此引用计数器实验就完成了。
http://www.dnsts.com.cn/news/242318.html

相关文章:

  • 设计师网站库哈尔滨市土地局
  • 西宁手机网站微站建设开发平台指的是什么
  • 社交网站建设计划书高校网站建设滞后
  • 驻马店网站网站建设优秀网站主题
  • 唯美网站模板黄页88网怎么推广
  • 推广型网站开发网址巨量算数官方入口
  • 网站建设需求登记表 免费下载新手运营从哪开始学
  • 网站建设suteng网站建设服务合同印花税
  • 安徽省建设造价网站杭州哪家网站建设公司好
  • 做二维码的网站用jsp做的网站代码
  • ftp怎么做网站的备份最有创意促销活动方案
  • 南阳网站建设与管理婚纱网站建设目的
  • 公司网站建设小知识公司网站制作投标
  • 家装网站容桂网站制作咨询
  • 登陆注册是静态网站室内设计用什么软件比较好
  • 青岛海川建设集团有限公司网站wordpress成功的网站
  • 网店推广培训seo网站编辑是做什么的
  • 毕业设计网站建设体会网站建设平台策划
  • 北海住房和城乡建设部网站广州的互联网公司
  • 唐山网站开发公司建网站的详细技术
  • wordpress代码恢复旧编辑器南京搜必应网站优化
  • 微信官方网站下载安装个体工商户备案网站备案
  • 德语网站建设wordpress 一级目录下
  • 网站开发提供源代码手机建站平台淘客
  • 做企业网站需要多久新闻今天的最新新闻
  • 如何做好网站首页WordPress下如何用页面做侧边栏
  • 网站建设优惠网站信息发布
  • 微信 免费 网站网站ipv6改造怎么做 网页代码
  • 商务网站开发与建设论文wordpress换新的电脑
  • 建设银行网站用户广告推广一个月多少钱