自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(193)
  • 收藏
  • 关注

原创 linux驱动:(22)中断节点和中断函数

中断的存在可以极大的提高 CPU 的运行效率,但是中断会打断内核进程中的正常调度和运行,所以为保证系统实时性,中断服务程序必须足够简短,但实际应用中某些时候发生中断时必须处理大量的事物,这时候如果都在中断服务程序中完成,则会严重降低中断的实时性基于这个原因,linux 系统提出了一个概念:把中断服务程序分为两部分:中断上文和中断下。如果一个设备需要用到中断功能,开发人员就需要在设备树中配置好中断属性信息,因为设备树是用来描述硬件信息的,然后Linux内核通过设备树配置的中断属性来配置中断功能。

2024-10-06 13:34:02 602

原创 linux驱动:(21)ioctl接口(二)驱动与应用程序传递ioctl命令

将以前的beep杂项设备中的copy_from_user改为用ioctl接口,修改的代码是 linux驱动:(8)实战:用杂项设备完成蜂鸣器驱动 中的代码。

2024-10-04 17:57:28 507

原创 linux驱动:(20)ioctl接口(一)

【代码】linux驱动:(20)ioctl接口(一)

2024-09-24 23:26:13 390

原创 linux驱动:(19)pinctl和gpio子系统讲解+实战蜂鸣器

设置gpio输入还是输出。

2024-09-16 21:41:46 706

原创 linux驱动:(18)设备树下的platfrom总线

目录匹配节点name旧driver.c新driver.c (设备树)验证方式取资源旧方法新方法第一个方法第二个方法注意设备树of映射地址函数例子最后创建自己想要的设备,已经获取到了寄存器的值,可以回看前面章节在以前的platfrom总线是通过两个文件,driver和device两个文件进行匹配成功送到probe函数的现在有了设备树,通过设备树来替换device文件部分,那如何进行匹配呢,是通过设备树节点中的compatible属性来匹配相对应的name,但根节点中的compatible属性并不是,这个属性

2024-09-14 00:27:51 533

原创 linux驱动:(17)设备树中常用的of操作函数

在设备树中如何获取到寄存器的值呢,linux提供了几个函数,在 include/linux/of.h 中都是以 of 开头的。

2024-09-12 23:16:46 674

原创 面试题目:(8)合法分割的最小坐标

获取到出现最多次数的数字我上面分成了两步,其实可以用算法来进行快速筛选,可以使用 Boyer-Moore 投票算法找到支配元素。

2024-08-27 21:56:07 610

原创 linux驱动:(16)在设备树添加自定义节点

进入 源码根目录/proc/device-tree/ 查看到设备树里的属性通过cat就可以看到属性的值是多少,如果是节点,可以cd进入再通过cat看节点中的属性我们添加完后,通过cat就可以看到有没有添加成功。

2024-08-25 17:26:16 475

原创 linux驱动:(15)设备树

如果在根目录中又包含了一个dtsi文件,进去这个dtsi文件后,就又会看到一个根节点,这就是我上面说的,dtsi里面的根节点会于我们第一个找到的根节点合并成一个根节点。当我们找一个节点的时候,我们必须书写完整的节点路轻,如果我们的节点名很长,那么我们在引用的时候就十分不方便,所以,设备树允许我们用下面的形式为节点标注引用。一般往一个节点里面添加内容的时候,不会直接把添加的内容写到节点里面,而是通过节点的引用来添加。如果该设备树文件没有 /{ } 开头的节点,就去包含的头文件去找,先找到根节点。

2024-08-25 16:43:22 535

原创 面试题目:(7)将字符串中的元音字母排序

简单来说就是会从第一个开始遍历,然后和后面的每一个元素进行减法判断大小移动位置,当遍历完到下一个元素开始往后遍历。两个相减通过ascll进行排序,

2024-08-24 21:38:57 179

原创 面试题目:(6)翻转二叉树

【代码】面试题目:(6)翻转二叉树。

2024-08-21 18:01:29 364

原创 面试题目:(5)基本计算器

【代码】面试题目:(5)基本计算器。

2024-08-21 15:10:28 408

原创 面试题目:(4)给表达式添加运算符

简单来说就是先从第一个字符开始变化标志位,从1到2到3,也就从乘法加法减法,但在第一个执行乘法前,后面的要先完成从1到2到3的变化,所以就是在第一个执行1的时候要等第二个数字从1到2到3变化完才进行变2,然后又要等第二个数字从1到2到3才变3,如果有第三个数字的话第二个数字也要等第三个数字变化完,一层一层递归,直到递归到最后一个数字后,才开始进行计算。输入 1234 目标 10。

2024-08-20 21:01:04 445

原创 面试题目:(3)整数拆分

给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积。

2024-08-19 20:25:45 200

原创 面试题目:(2)合并多个升序链表

按固定格式输入多个已经排好升序的链表,合并成一个链表输出。

2024-08-19 14:43:21 362

原创 linux驱动:(14)平台总线模型 (platform设备 二)

到了第二步注册,但在注册前我们要先登记,用到的函数定义在ioport.h里。我这就注册一个杂项设备,下面是完整driver.c代码。可以利用函数来将硬件资源单独复制出来一份。登记不成功就需要注销登记,也有函数。

2024-08-15 15:55:40 365

原创 linux驱动:(14)平台总线模型 (platform设备 一)

平台总线模型也叫platform总线模型,是linux内核虚拟出来的一条总线,不是真实的导线平台总线是以名字来匹配的,实际上就是字符串比较,主要就是把原来的驱动.c文件分为两个c文件,一个驱动,c,一个设备,cproberemove。

2024-08-15 15:00:26 676

原创 面试题目:(1)“abcde”删除“ac”=“bde”

输入两个字符串M和N,从字符串M中删除字符串N中所有的字符。例如,输入”abcda”和”ac”,则删除之后的第一个字符串变成”bd”

2024-08-14 16:24:33 131

原创 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 321

原创 linux驱动:(12)自动创建设备节点

udev 是一种工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev 目录下。使用 udev 后,在/dev 目录下就只包含系统中真正存在的设备。udev 一般用在 PC上的 linux中,相对 mdev 来说要复杂些。mdev是udev的简化版本是busybox中所带的程序,最适合用在linux系统。在linux中使用mdev来实现设备节点文件的自动创建和删除。用的是第11章的代码。

2024-08-11 22:06:22 901

原创 linux驱动:(11)注册字符类设备

描述字符设备的一个结构体。

2024-08-08 10:14:54 931

原创 linux驱动:(10)申请字符类设备号

如果加载内核的时候不将主次设备号参数传入,就动态分配,如果传入的话就静态分配。定义在types.h里的,用来保存设备号的,是一个32位数。高12位保存主设备号,低12位保存次设备号,在linux中宏定义来操作设备号。

2024-08-06 19:09:01 911

原创 linux驱动:(9)驱动传参

驱动传参就是传递参数给我们的驱动,例如。

2024-08-05 21:22:26 317

原创 linux驱动:(8)实战:用杂项设备完成蜂鸣器驱动

最终效果是使用杂项设备完成一个蜂鸣器驱动,然后在应用程序中传入参数1为打开蜂鸣器,0为关闭蜂鸣器。

2024-08-05 18:24:54 564

原创 linux驱动:(7)物理地址到虚拟地址映射

在单片机和裸机中操作硬件是通过指针来对寄存器赋值来进行操控但对于linux中不能这样,不能直接对物理地址直接修改,因为linux使能了mmu,所以不能直接菜操作物理地址如果要操作硬件,需要先把物理地址转换成虚拟地址。

2024-08-05 17:46:58 387

原创 linux驱动:(6)应用层和内核层数据传输

linux一切皆文件文件对应的操作有打开,关闭,读取设备节点对应的操作有打开,关闭,读取。

2024-08-04 20:20:47 187

原创 linux驱动:(5)杂项设备驱动

其中的次设备号不能相同,但不知道有什么可以选择,就需要一个宏定义MISC_DYNAMIC_MINOR,也在 miscdevice.h中,他会自动分配次设备号。里面有一个结构体成员都对应一个调用,后面会仔细讲,现在只用知道当对驱动进行读取read时,就会调用这个结构体中的read成员。可以在根目录下的include/linux/miscdevice.h中定义,这个结构体作用是描述这个设备。可以在根目录下的include/linux/fs.h中定义。可以在根目录下的include/linux/fs.h中定义。

2024-08-04 17:34:09 946

原创 linux驱动:(4)直接编译驱动进内核

接前面第一章的第二个编译驱动方法。

2024-07-31 17:57:36 688

原创 linux驱动:(3)图形化界面

当我们make menuconfig保存退出以后,linux会将所有的配置选项以宏定义的形式保存在include/generated/下面的autoconf.h里面。使用空格按键来配置三个不同状态。

2024-07-30 19:37:53 247

原创 linux驱动:(2)添加别的驱动

先去内核源码中搜索,看看有没有我们需要的驱动,有的话就可以直接使用了假如没有这个驱动,我们需要自己编译一个驱动,然后加载到内核中就可以了。

2024-07-30 16:50:22 157

原创 linux驱动:(1)helloworld

【代码】linux驱动:(1)helloworld。

2024-07-30 16:09:43 442

原创 uboot学习:(五)bootz 启动 Linux 内核过程

bootz 命令的执行函数为 do_bootz,在文件 cmd/bootm.c 中定义。

2024-07-28 19:43:55 421

原创 stm32:CAN通讯

一种功能丰富的车用总线标准。被设计用于在不需要主机(Host)的情况下,允许网络上的单片机和仪器相互通信它基于消息传递协议,设计之初在车辆上复用通信线缆,以降低铜线使用量,后来也被其他行业所使用CAN拥有了良好的弹性调整能力,可以在现有网络中增加节点而不用在软、硬件上做出调整。除此之外,消息的传递不基于特殊种类的节点,增加了升级网络的便利性。

2024-07-17 16:53:40 2026 1

原创 stm32学习:(寄存器3)系统架构

HSE时钟高速外部时钟是由外部时钟源提供,目前几乎所有的STM32单片机的设计都是在外部接一个8MHz的晶振,经过PLL倍频(9倍频)后得到一个72MHz的系统时钟。这个在启动文件可以看到HSI时钟HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差PLL时钟。

2024-07-17 16:01:17 582 1

原创 stm32学习:(寄存器2)GPIO总体说明

STM32有多组GPIO,比如我们使用的芯片:共有7组GPIO端口,他们分别是GPIOxx从A-G),16个引脚,共有112个GPIO引脚。具体一个其他STM32芯片有多少组GPIO,可以去查看他们的对应的。每个引脚的电平是0-3.3V,部分引脚最高可以兼容到5V。

2024-07-17 14:23:05 1106

原创 stm32学习:(寄存器1)控制寄存器来让led亮

【代码】stm32学习:(寄存器1)控制寄存器来让led亮。

2024-07-16 17:00:33 624

原创 uboot学习:(四)顶层makefile分析

最后回到 分析 make xxx_defconfig 里的一句 $(Q)$(MAKE) $(build)=scripts/kconfig $@$@表示目标文件,就是xxx_defconfig最后展开得到的是 make -f ./scripts/Makefile.build obj = scripts/kconfig xxx_defconfig现在我们得到了两条命令先是运行make xxx_defconfig命令然后就分析顶层的makefile找到文件中的%config,有依赖和命令两个依赖。

2024-07-13 17:06:23 678

原创 uboot学习:(三)目录分析

分析之前需要编译一次uboot源码,编译之后的uboot源码会多出来很多文件。

2024-07-10 23:20:31 406

原创 uboot学习:(二)uboot命令

bdinfo:查看板子信息 (DRAM 的起始地址和大小、启动参数保存起始地址、波特率、 sp(堆栈指针)起始地址等信息)cp:数据拷贝命令,用于将DRAM中的数据从一段内存拷贝到另一段内存中,或者把Nor Flash 中的数据拷贝到DRAM中。bootz 或 help bootz :查看“bootz”这个命令的用法。5、nand read命令从NAND中的指定地址读取指定大小的数据到DRAM中。help /?5、fatwrite命令将DRAM中的数据写入到MMC设备中。

2024-07-10 22:25:41 630

原创 uboot学习:(一)基础认知

先配置,一个板子一个配置文件,然后执行配置文件,就会把uboot配置好,然后再次编译,就可以得到配对这个板子的uboot执行文件(.bin),用bin文件来启动板子,这就是裸机开发,通常是操控寄存器来编程,汇编。

2024-07-10 20:31:52 791

qt学习:停车场管理系统+摄像头+http识别车牌+sqlite3数据库

qt学习:停车场管理系统+摄像头+http识别车牌+sqlite3数据库 https://blog.csdn.net/weixin_59669309/article/details/135944139?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22135944139%22%2C%22source%22%3A%22weixin_59669309%22%7D

2024-02-01

qt-无边框ui界面4

qt-无边框ui界面1

2024-01-21

qt-无边框ui界面3

qt-无边框ui界面1

2024-01-21

qt-无边框ui界面2

qt-无边框ui界面1

2024-01-21

qt-无边框ui界面1

qt-无边框ui界面1

2024-01-21

stm32学习:hal库usart+esp8266+tcp+onenet+可以远程监督家里情况

stm32学习:hal库usart+esp8266+tcp+onenet+可以远程监督家里情况

2023-12-14

stm32学习:DHT11+0.96寸oled屏

stm32学习:DHT11+0.96寸oled屏

2023-12-11

python学习:pandas+统计科目总分+生成奖状

python学习:pandas+统计科目总分+生成奖状

2023-11-30

python学习:pandas+统计科目总分+生成奖状

python学习:pandas+统计科目总分+生成奖状

2023-11-30

python学习:pandas+统计科目总分+生成奖状

python学习:pandas+统计科目总分+生成奖状

2023-11-30

python学习:pandas+统计科目总分+生成奖状

python学习:pandas+统计科目总分+生成奖状

2023-11-30

python学习:csv+实战

python学习:csv+实战

2023-11-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除