- 博客(208)
- 收藏
- 关注
原创 linux驱动:6ull(5)自定义根节点
主要功能就是定义别名,定义别名的目的就是为了方便访问节点。不过我们一般会在节点命名的时候会加上 label,然后通过&label 来访问节点。把这个设备树烧录到板子中重启,打开/proc/device-tree目录,进去就可以看到各个子节点,进去子节点就可以看到各个的属性。为了 uboot 向 Linux 内核传递数据,重 点是 bootargs 参数。
2024-12-28 22:14:19
356
原创 c++学习:json库例子
/ 自定义的序列化函数// 创建 Person 对象// 将 Person 对象序列化为 JSONjson j = p;// 从 JSON 反序列化为 Person 对象。
2024-11-26 23:22:02
476
原创 qt学习:自定义多级目录treeview显示
就例如文件夹,也是treeview,但有些时候并不是文件夹,是一些选项,多级目录的选项,我们就要定义自己需要的结构来显示。
2024-11-26 21:28:47
1054
原创 c++学习:std的vector和tuple,定义包含不同类型数据数组
它是一个动态数组,可以容纳多个元素,每个元素是一个。它是一个固定大小的容器,可以存储不同类型的数据。有时候想定义一个下面这样子类型的变量。
2024-11-21 23:55:59
208
原创 linux驱动:(22)中断节点和中断函数
中断的存在可以极大的提高 CPU 的运行效率,但是中断会打断内核进程中的正常调度和运行,所以为保证系统实时性,中断服务程序必须足够简短,但实际应用中某些时候发生中断时必须处理大量的事物,这时候如果都在中断服务程序中完成,则会严重降低中断的实时性基于这个原因,linux 系统提出了一个概念:把中断服务程序分为两部分:中断上文和中断下。如果一个设备需要用到中断功能,开发人员就需要在设备树中配置好中断属性信息,因为设备树是用来描述硬件信息的,然后Linux内核通过设备树配置的中断属性来配置中断功能。
2024-10-06 13:34:02
667
原创 linux驱动:(21)ioctl接口(二)驱动与应用程序传递ioctl命令
将以前的beep杂项设备中的copy_from_user改为用ioctl接口,修改的代码是 linux驱动:(8)实战:用杂项设备完成蜂鸣器驱动 中的代码。
2024-10-04 17:57:28
602
原创 linux驱动:(18)设备树下的platfrom总线
目录匹配节点name旧driver.c新driver.c (设备树)验证方式取资源旧方法新方法第一个方法第二个方法注意设备树of映射地址函数例子最后创建自己想要的设备,已经获取到了寄存器的值,可以回看前面章节在以前的platfrom总线是通过两个文件,driver和device两个文件进行匹配成功送到probe函数的现在有了设备树,通过设备树来替换device文件部分,那如何进行匹配呢,是通过设备树节点中的compatible属性来匹配相对应的name,但根节点中的compatible属性并不是,这个属性
2024-09-14 00:27:51
566
原创 linux驱动:(17)设备树中常用的of操作函数
在设备树中如何获取到寄存器的值呢,linux提供了几个函数,在 include/linux/of.h 中都是以 of 开头的。
2024-09-12 23:16:46
794
原创 面试题目:(8)合法分割的最小坐标
获取到出现最多次数的数字我上面分成了两步,其实可以用算法来进行快速筛选,可以使用 Boyer-Moore 投票算法找到支配元素。
2024-08-27 21:56:07
629
原创 linux驱动:(16)在设备树添加自定义节点
进入 源码根目录/proc/device-tree/ 查看到设备树里的属性通过cat就可以看到属性的值是多少,如果是节点,可以cd进入再通过cat看节点中的属性我们添加完后,通过cat就可以看到有没有添加成功。
2024-08-25 17:26:16
567
原创 linux驱动:(15)设备树
如果在根目录中又包含了一个dtsi文件,进去这个dtsi文件后,就又会看到一个根节点,这就是我上面说的,dtsi里面的根节点会于我们第一个找到的根节点合并成一个根节点。当我们找一个节点的时候,我们必须书写完整的节点路轻,如果我们的节点名很长,那么我们在引用的时候就十分不方便,所以,设备树允许我们用下面的形式为节点标注引用。一般往一个节点里面添加内容的时候,不会直接把添加的内容写到节点里面,而是通过节点的引用来添加。如果该设备树文件没有 /{ } 开头的节点,就去包含的头文件去找,先找到根节点。
2024-08-25 16:43:22
596
原创 面试题目:(7)将字符串中的元音字母排序
简单来说就是会从第一个开始遍历,然后和后面的每一个元素进行减法判断大小移动位置,当遍历完到下一个元素开始往后遍历。两个相减通过ascll进行排序,
2024-08-24 21:38:57
249
原创 面试题目:(4)给表达式添加运算符
简单来说就是先从第一个字符开始变化标志位,从1到2到3,也就从乘法加法减法,但在第一个执行乘法前,后面的要先完成从1到2到3的变化,所以就是在第一个执行1的时候要等第二个数字从1到2到3变化完才进行变2,然后又要等第二个数字从1到2到3才变3,如果有第三个数字的话第二个数字也要等第三个数字变化完,一层一层递归,直到递归到最后一个数字后,才开始进行计算。输入 1234 目标 10。
2024-08-20 21:01:04
476
原创 面试题目:(3)整数拆分
给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积。
2024-08-19 20:25:45
229
原创 linux驱动:(14)平台总线模型 (platform设备 二)
到了第二步注册,但在注册前我们要先登记,用到的函数定义在ioport.h里。我这就注册一个杂项设备,下面是完整driver.c代码。可以利用函数来将硬件资源单独复制出来一份。登记不成功就需要注销登记,也有函数。
2024-08-15 15:55:40
399
原创 linux驱动:(14)平台总线模型 (platform设备 一)
平台总线模型也叫platform总线模型,是linux内核虚拟出来的一条总线,不是真实的导线平台总线是以名字来匹配的,实际上就是字符串比较,主要就是把原来的驱动.c文件分为两个c文件,一个驱动,c,一个设备,cproberemove。
2024-08-15 15:00:26
727
原创 面试题目:(1)“abcde”删除“ac”=“bde”
输入两个字符串M和N,从字符串M中删除字符串N中所有的字符。例如,输入”abcda”和”ac”,则删除之后的第一个字符串变成”bd”
2024-08-14 16:24:33
160
原创 linux驱动:(13)杂项设备和字符设备总结
杂项设备是字符设备里面的一种 主设备号固定为10,只需要分配次设备号 步骤 构建文件操作集 其中write/read中应用与内核层传输需要用到两个函数 copy_from_user copy_to_user 构建杂项设备结构体 struct miscdevice misc = {} 注册杂项设备 misc_register(&misc); 卸载杂项设备 misc_deregister(&misc); 字符
2024-08-12 17:55:53
346
原创 linux驱动:(12)自动创建设备节点
udev 是一种工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev 目录下。使用 udev 后,在/dev 目录下就只包含系统中真正存在的设备。udev 一般用在 PC上的 linux中,相对 mdev 来说要复杂些。mdev是udev的简化版本是busybox中所带的程序,最适合用在linux系统。在linux中使用mdev来实现设备节点文件的自动创建和删除。用的是第11章的代码。
2024-08-11 22:06:22
1002
原创 linux驱动:(10)申请字符类设备号
如果加载内核的时候不将主次设备号参数传入,就动态分配,如果传入的话就静态分配。定义在types.h里的,用来保存设备号的,是一个32位数。高12位保存主设备号,低12位保存次设备号,在linux中宏定义来操作设备号。
2024-08-06 19:09:01
962
原创 linux驱动:(8)实战:用杂项设备完成蜂鸣器驱动
最终效果是使用杂项设备完成一个蜂鸣器驱动,然后在应用程序中传入参数1为打开蜂鸣器,0为关闭蜂鸣器。
2024-08-05 18:24:54
601
原创 linux驱动:(7)物理地址到虚拟地址映射
在单片机和裸机中操作硬件是通过指针来对寄存器赋值来进行操控但对于linux中不能这样,不能直接对物理地址直接修改,因为linux使能了mmu,所以不能直接菜操作物理地址如果要操作硬件,需要先把物理地址转换成虚拟地址。
2024-08-05 17:46:58
482
qt学习:停车场管理系统+摄像头+http识别车牌+sqlite3数据库
2024-02-01
stm32学习:hal库usart+esp8266+tcp+onenet+可以远程监督家里情况
2023-12-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人