
第二期 | 字符设备基础
文章平均质量分 68
第二期 | 字符设备基础
mucheni
这个作者很懒,什么都没留下…
展开
-
RK3568驱动指南|第二篇 字符设备基础-第15章 文件私有数据实验
在之前章节编写的驱动程序中,将生成字符设备的一些硬件属性(设备号、类、设备名称等)全都写成了变量的形式,虽然这样编写驱动代码不会产生报错,但是会显得有点不专业。通常在驱动开发中会为设备定义相关的设备结构体,将硬件属性的描述信息全部放在该结构体中,在本章节中将对设备结构体的功能实现和文件私有数据进行学习。Linux中并没有明确规定要使用文件私有数据,但是在linux驱动源码中,广泛使用了文件私有数据,这是Linux驱动遵循的“潜规则”,实际上也体现了Linux面向对象的思想。15.2.2 编写测试 APP。原创 2024-04-11 15:25:10 · 867 阅读 · 0 评论 -
RK3568驱动指南|第二篇 字符设备基础-第14章 内核空间与用户空间数据交互实验
在“第12章 字符设备驱动框架实验”中,已经对file_operations结构体的进行了填充,该结构体的每一个成员都对应着一个系统调用,例如read、write等,在对应的实验中,只是对调用函数进行了标志打印,并没有真正实现设备的读写功能,而在本章节将对内核空间与用户空间的数据交换功能进行实现。以上代码在cdev_test_read函数中使用copy_to_user函数将内核数据拷贝到用户空间,在cdev_test_write函数中使用copy_from_user函数将用户空间数据拷贝到内核空间。原创 2024-04-07 14:33:04 · 731 阅读 · 0 评论 -
RK3568驱动指南|第二篇 字符设备基础-第13章 杂项设备驱动实验
经过前面章节的学习,我们已经对字符设备驱动框架有了一定的理解,而本章要讲解的杂项设备属于特殊的一种字符型设备,是对字符设备的一种封装,为最简单的字符设备。minor指次设备号,可以从“内核源码/include/linux/miscdevice.h”文件中预定义的次设备号挑选,也可以自行定义子设备号(没有被其他设备使用即可),通常情况下将该参数设置为MISC_DYNAMIC_MINOR,表示自动分配子设备号。驱动加载成功之后会生成/dev/test设备驱动文件,输入以下命令查看杂项设备的主次设备号。原创 2024-03-22 09:39:52 · 688 阅读 · 0 评论 -
iTOP-2K1000板卡龙芯双核GS264处理器核,CPU功能全部引出
板载4路USB HOST、2路千兆以太网、2路UART、2路CAN总线、Mini PCIE、SATA固态盘接口、4G接口、 GPS接口WIFI、蓝牙、Mini HDMI、温度传感器、JTAG接口等。更新包含了开发环境搭建、系统编译与烧写和pmon基础知识、启动流程分析、网络加载系统、烧写系统到nand以及新增pmon 移植教程、新增pmon下操作GPIO章节和pmon下Ejtag使用章节等。系统支持:流畅运行Busybox、Buildroot、Loognix、QT512系统。原创 2024-03-19 14:20:49 · 298 阅读 · 0 评论 -
RK3568驱动指南|第二篇 字符设备基础-第12章 字符设备驱动框架实验
函数将设备号和cdev结构体进行链接,这时设备号才真正指向了内核中注册的设备。设备注册成功之后,此时还不能对字符设备进行文件操作,所以需要设备节节点来充当内核和用户层通信的桥梁,至此,前面三个章节就总结完成了,以上步骤并没有涉及到操作设备文件,本章节将对字符设备框架进行最终的完善。owner是第一个 file_operations 成员,它并不是一个操作, 而一个指向拥有该结构的模块的指针,避免正在操作时被卸载,一般为初始化为THIS_MODULES (在 <linux/module.h> 中定义的宏)原创 2024-03-19 11:25:15 · 347 阅读 · 0 评论 -
RK3568驱动指南|第二篇 字符设备基础-第11章 创建设备节点实验(一)
函数创建相应的设备,在进行模块加载时,用户空间中的udev会自动响应device_create()函数,寻找对应的类从而创建设备节点。本章实验将编写Linux下的自动创建设备节点实验代码,首先采用自动申请设备号的方式进行设备号的申请,并对获取的主设备号与次设备号进行打印,之后对字符设备进行注册(file_operations结构体只填充owner 字段即可,会在下个章节对file_operations结构体进行讲解),最后自动对设备节点进行创建。在进行设备节点删除时,类的删除要放在设备删除之后。原创 2024-03-15 10:24:41 · 830 阅读 · 0 评论 -
RK3568驱动指南|第二篇 字符设备基础-第10章 注册字符设备实验
在上一小节中已经对设备号的相关知识进行了讲解,并成功申请到了设备号,那在Linux系统中,设备号是怎样与字符设备进行关联的呢?字符设备又是怎样注册的呢?相较于上一章节实验,本章节的代码去掉了静态申请设备号部分代码,并在申请设备号完成之后注册了相应的字符设备,并在驱动出口函数中添加了相应的字符设备删除代码(相关代码已加粗)。本实验采用动态申请设备号的方式进行设备号的申请,然后对设备进行注册,并将申请到的主设备号和次设备号以及设备注册情况打印到终端上。字符设备初始化所用到的函数为cdev_init(…原创 2024-03-13 10:44:28 · 693 阅读 · 0 评论 -
RK3568驱动指南|第二篇 字符设备基础-第8章 驱动模块编译进内核实验
把驱动编译进Linux内核,用 * 来表示,所以配置选项改为*。如果想要将驱动编译为模块,则用M来表示,配置选项改为M。通过上一章的学习,我们学会了使用menuconfig图形化配置工具,以及了解了menuconfig相关的文件:Kconfig .config XXXdefconfig。接下来修改上一级目录的Kconfig文件和Makefile文件,也就是driver/char目录。编译成功之后,进入到drivers/char/hello目录下,可以看到会生成对应的.o文件。原创 2024-03-11 16:07:41 · 474 阅读 · 0 评论 -
RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验(五)
在上面的代码中,我们在主菜单中添加了一个名为 test menu 的子菜单,然后在这个子菜单里面我们添加了一个名为 TEST_CONFIG 的配置项,这个配置项变量类型为 bool,默认配置为 Y,帮助信息为 just test,注释为 just test。有了上面的理论基础后,我们就可以自己在图形化配置界面中来自定义一个菜单,要定义一个菜单,根据我们前面的分析,是不是就要从Kconfig文件入手呀。6子菜单中的配置项,默认为 y,注释信息为 just test。7.5 自定义菜单实验。原创 2024-03-08 10:10:42 · 350 阅读 · 0 评论 -
iTOP-3588开发板快速启动手册Windows安装串口终端安装 MobaXterm
当然也可以去官网下载,下载网址是:https://mobaxterm.mobatek.net/download.html,选择“Download now”,选择免费版进行下载。接下来使用这款软件打开串口,软件在网盘资料“iTOP-3588开发板/02_【iTOP-RK3588开发板】开发资料/04_iTOP-3588开发板所需PC软件(工具)/02-MobaXterm”目录下。更多内容可以B站或者VX搜索:北京迅为。本章推出——MobaXterm!迅为RK3588开发板。原创 2024-03-07 10:14:05 · 271 阅读 · 0 评论 -
RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验(四)
make menuconfig界面的默认配置则为defconfig文件中的默认配置,比如说瑞芯微平台Linux内核源码目录下输入“make rockchip_linux_defconfig”会自动生成.config文件。那么此时rockchip_linux_defconfig的配置项和.config的配置项是相同的。defconfig文件和.config文件都是linux内核的配置文件,defconfig文件在内核源码的arch/$(ARCH)/configs目录下,是Linux系统默认的配置文件。原创 2024-03-06 11:03:09 · 358 阅读 · 0 评论 -
RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验(三)
在编译内核的时候会根据这个.config文件来编译内核。mconf程序源码在内核源码scripts/kconfig目录下,如下图所示,这里不对Kconfig文件的解析流程进行分析,感兴趣的同学可以自行分析下mconf的源码。在内核源码的顶层Makefile中会包含auto.conf文件,以此引用其中的变量来控制Makefile的动作,如哪些驱动编译,哪些驱动不编译。有了.config配置文件以后,内核就可以根据这个配置文件来编译内核,比如控制某些驱动编译进内核,或者控制某些驱动不编译内核。原创 2024-03-04 10:14:17 · 510 阅读 · 0 评论 -
RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验(二)
menu之后的字符串是菜单名,“menu”是菜单开始的标志,“endmenu”是菜单结束的标志,这俩个是成对出现的。我们在内核目录下输入make menuconfig可以看到,如下(图7-10)所示,“Parade TrueTouch Gen5 MultiTouch Protocol”是choice选项名称,“Protocol B”是Kconfig里面默认选择的。举例来说,如下所示,选项A依赖选项B,只有当选项B被选中时,选项A才可以被选中。所以图形化配置界面的每一级菜单是由Kconfig文件来决定的。原创 2024-03-01 16:04:00 · 941 阅读 · 0 评论 -
RK3568驱动指南|第二篇 字符设备基础-第7章 menuconfig图形化配置实验
menuconfig图形化的配置工具需要 ncurses 库支持。Linux内核可以通过输入“make menuconfig”来打开图形化配置界面,menuconfig是一套图形化的配置工具,本章节来学习使用menuconfig配置内核。图形化配置界面主要有以下四种,在这四种方式中,最推荐的是 make menuconfig,它不依赖于 QT 或 GTK+,且非常直观。以RK3568为例,在内核源码目录下输入以下命令,打开图形化配置界面。如何打开menuconfig图形化配置界面呢?第二篇 字符设备基础。原创 2024-02-28 11:08:17 · 439 阅读 · 0 评论