自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 驱动(RK3588S)第十二课时:输入子系统(input)

/输入设备的名字 – 自己取名//记录当前的支持的事件//记录当前的键值//记录支持的相对坐标的位图(实际是支持哪些相对事件)//记录支持的绝对坐标的位图(实际是支持哪些相对事件)//支持的按键值的个数//每个键值的字节数//存放按键值的数组首地址//最近一次键值,用于连击//自动连击计时器。

2024-09-13 15:42:40 1951

原创 驱动(RK3588S)第十一课时:linux内核定时器和poll轮询

定时器时间:未来时间=当前的时间+定时的时间。那么开发板他是怎么知道现在开发板运行了多长时间呢,是因为在内核里专门有一个变量,这个变量就做记录开发板运行的时间,就是记录你系统从开机到现在所运行的时间,这个变量就是 jiffies 他也是有默认的单位的是毫秒,咱们在进行延时的时候是需要把你延时的单位转出成系统的计时的单位的。内核里的定时器和硬件定时器是不同的内核的定时器不需要你去设置寄存器,只需要调用内核的函数接口即可,但是内核的定时器他是一次性的,使用完了一次之后,不会再次使用,需要你再次设置。

2024-09-12 18:41:26 1475

原创 驱动(RK3588S)第十课时:linux中断和等待队列

简单来说中断服务函数就是发生中断的时候要执行的函数也就是触发中断时要执行的功能函数。单片机/CPU 他是通过NVIC来管理中断的,但是ARM系列是通过GIC来管理中断的。一般来说中断分为两部分,上半部分只能快进快出,下一部分可以进行输出等一系列复杂运算。

2024-09-11 19:29:34 1923

原创 驱动(RK3588S)第九课时:多节点驱动与函数接口

函数功能:做一些控制命令的接口函数头文件:#include <sys/ioctl.h>函数参数:fd:就是 open 打开的文件描述符request:cmd 就是控制的命令函数返回值:成功返回 0 失败返回负数函数功能:做控制的命令函数原型:**long (函数头文件:#include <linux/fs.h>函数参数:fp:保存文件信息结构体cmd:就是你应用层传递过来的命令 — requestarg:暂时不用管函数返回值:成功返回 0 失败负数。

2024-09-08 16:00:32 1534

原创 驱动(RK3588S)第八课时:平台设备总线

I2c spi 等他们是真实存在的总线,他不像今天讲的 platform(平台) 总线他是内核虚拟出来的一条总线,这个总线的作用就是为了匹配设备端和驱动端,在咱们没有讲设备树之前,编写的驱动代码都是采取平台设备总线的形式去编写的,就是老内核他们是怎么去编写设备驱动的,他们都是采取平台设备总线的形式,因为设备的资源比较多,要管理的内容也比较多,就会造成内核比较凌乱。

2024-09-08 14:16:06 1444

原创 驱动(RK3588S)第七课时:单节点设备树

他就是用来做匹配的,因为设备树是描述设备信息的,而设备信息是驱动代码使用的。:这里用到的是linux2.6动态创建的设备号。他是一个完整的设备号,这个完整的设备号里包含了主设备号和次设备号,这里他是一个 32 位的设备号,32 位里前 12 位是主设备号,后 20 位是次设备号,所以他的这个设备号的取值范围是比较大的。函数功能:函数读取 np 结点中的 propname 属性的值,并将读取到的 u32 类型的值保存在 out_value 指向的内存中,函数的返回值表示读取到的 u32 类型的数据的个数。

2024-09-08 11:05:14 1730

原创 驱动(RK3588S)第六课时:linux2.6的使用与GPIO子系统的使用

Linux2.6 他是咱们字符设备驱动编写的第二种方法,这种方法要比杂项的复杂,过程和函数是比较多的,他最大的优点就在于他的资源很多 — 设备号,而杂项设备号是非常有限的,也就是 0 — 255 因为主设备号是固定是 10。但是Linux2.6 他使用一个 32 位的数字表示设备号,这个设备号里包含了主设备号和次设备号,32 位他做一个划分,前 12 位是主设备号,后 20 位是次设备。主设备号的范围:2^12 次设备号的范围:2^20, 他使用主设备号和次设备号合成了一个完整的设备号。

2024-09-03 20:10:04 2455

原创 驱动(RK3588S)第五课时:字符设备驱动编程

设备号其实就是设备的一个标识符,就好比你们当时操作系统的时候的进程的PID,PID的作用,就是为了区分不同的进程而定义的一个PID,开发板上那么多的硬件设备,内核怎么去区分每一个不同的设备呢?这里就搞另一个设备号,设备号就是给硬件一个编号,就好比每一个人的身份证号,他也是唯一的,设备号他又有两部分组成:主设备号+次设备号主设备号:他代表一类设备。次设备号。

2024-09-02 19:44:51 2728

原创 驱动(RK3588S)第四课时:模块化编程

在嵌入式里所谓的模块化编程指的是你后期加载的这些驱动代码,就是所谓的模块化,你去编写这些驱动,就是在编译模块化编程,这里的模块化编程和你学习的 C 语言和 STM32 里的模块化还有所不同,那个模块化的意思就是说他一个.C 给拆分了多个.c 或是是.h,一般都是一个.c 对应一个.h,驱动里的模块化指的是你操作系统已经运行起来了,你后期去加载的这些驱动就会成为模块化,好处就是极大的缩小的内核的镜像大小。前期就给你提供一个最基本的嵌。

2024-09-01 16:30:02 1419

原创 驱动(RK3588S)第三课时:文件系统(rootfs)

如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植。嵌入式系统三大部分:bootloader(uboot)、Linux 内核、根文件系统。制作根文件系统有三大神器:busybox、buildroot、yocto。

2024-09-01 15:03:59 3031

原创 驱动(RK3588S)第二课时:引导程序和内核

uboot 其实就是一个引导程序,他是咱们嵌入式通用第一个引导程序,也就是在你的操作系统开机之前运行的一个程序,用来初始化一些环境变了,最终你的 uboot 会去引导你的 kernel,然后 uboot 的使命就结束了,uboot 他也开源免费的,目前我使用的 uboot 是瑞芯微自己裁剪之后的 uboot,你如果直接从网站去下的 uboot 是不能够直接放到你的开发板上运行的,你需要适配,目前你去买点的开发板几乎都会给你裁剪适配好的 uboot 以及内核,甚至有的直接一个完整的镜像文件。

2024-09-01 11:47:00 3462

原创 驱动(RK3688S)第一课时:认识驱动和环境搭建

什么是驱动?驱动就是让硬件工作起来这么一个东西,你写代码去驱动对应的硬件,比如 CH340 你为什么要安装他?你不安装他你的串口就无法工作,当你安装了对应的 CH340 驱动,那么在你插上 USB 转串口的时候,就去调用对应的驱动,那么这个硬件就可以工作起来,还有你安装好 window 操作系统之后,你需要干嘛?安装各种驱动,显卡 声卡 网卡等各种驱动,你不安装对应的硬件就无法工作,所以这就是驱动。驱动就是给硬件打交道的。目前市面上见的最多芯片是cortex-A。

2024-08-29 20:14:20 2118 1

原创 STM32(F103ZET6)第二十课:FreeRtos操作系统的应用

使用互斥信号量的情况下:当高优先级任务获取信号量时,会临时将L任务的优先级提高到和他同一等级,等到任务L释放信号量时,优先级恢复为初始状态。本质上就是一个钩子函数,在任务上下文切换的时候做检测,具有一定的滞后性,需要在任务发生上下文切换时才会进行,任务堆栈溢出时并不能马上检测到问题。先创建,和二值信号量不同的是互斥量创建之初里边就有这个信号量,可以被获取到。先创建一个互斥信号量的句柄:SemaphoreHandle_t Mutex;任务阻塞时,是不会在运行的,什么时候再解除阻塞,是有调度去做的,

2024-08-29 19:12:11 1244

原创 STM32(F103ZET6)第二十三课:绘图软件GUI的使用与移植

字体路径不能有中文,字体名字不能有中文。

2024-08-29 17:43:59 1842

原创 STM32(F103ZET6)第十九课:FreeRtos的移植和使用

裸机执行流程:前后台系统操作系统执行流程:加入操作系统的作用:用户想要实现多个任务并行的效果,但是单片机只有一个核心,同时只能处理一件事,通过加入操作系统,可以实现任务快速的切换,给人一种多个任务同时在执行的错觉。

2024-08-28 19:07:22 2385

原创 STM32(F103ZET6)第二十四课:IAP离线固件升级

IAP(In Application Programming)即在应用编程, IAP 是用户自己的程序在运行过程中对User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信接口对产品中的固件程序进行更新升级。通常实现 IAP 功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信方式(如 USB、 USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。

2024-08-28 16:49:14 1501

原创 基于STM32(STM32F103RETX)项目:水质检测与水位控制器(中控板)

1.水资源保护与管理的需求随着工业化和城市化的快速发展,水资源的污染问题日益严重,对水质进行实时监测和 管理变得尤为重要。水质检测与水位控制器项目的实施,旨在提高水质监测的效率和准确性,为水资源保护和管理提供科学依据。2.技术进步的推动近年来,传感器技术、物联网技术、大数据分析等先进技术的快速发展,为水质检测和 水位控制提供了强有力的技术支持。这些技术的应用,使得水质检测更加精准,水位控制更加智能化。3.市场需求与政策导向。

2024-08-21 19:54:01 2003

原创 基于STM32(STM32F103RETX)项目:水质检测与水位控制器(节点板)

1.水资源保护与管理的需求随着工业化和城市化的快速发展,水资源的污染问题日益严重,对水质进行实时监测和 管理变得尤为重要。水质检测与水位控制器项目的实施,旨在提高水质监测的效率和准确性,为水资源保护和管理提供科学依据。2.技术进步的推动近年来,传感器技术、物联网技术、大数据分析等先进技术的快速发展,为水质检测和 水位控制提供了强有力的技术支持。这些技术的应用,使得水质检测更加精准,水位控制更加智能化。3.市场需求与政策导向。

2024-08-20 09:40:25 1672

原创 基于STM32(F103ZGTX系列)项目:智能楼宇(第二部分)

(1)制作该项目,更加理解了MCU的应用和相关知识点的使用。(2)学习使用了485通信和Modbus协议。(3)更加深入学习了各个传感器模块接受数据和解析。(4)学习并掌握了传感器的工作原理和技术规格。获得了数据采集、处理和分析的技术经验。掌握了物联网(IoT)设备的设计与开发。了解了数据可视化工具和技术。(5)从需求分析到产品设计的完整流程体验。产品迭代和优化的经验。对市场调研和用户反馈的理解(6)自信心和领导力的提升。解决问题和创新思维的培养。在专业领域内的知识深化和个人品牌的建立。

2024-08-19 16:29:41 1511

原创 基于STM32(F103ZGTX系列)项目:智能楼宇(第一部分)

1)在中控端,用户能够实现自主WIFI配网,从而自由连接所使用的网络。2)在节点端,能够获取空气中有害气体烟雾的浓度以及环境中的温度、湿度与光照强度的数据,并能够检测到周边环境是否有人存在。3)能够使用LCD屏幕通过freertos系统设计开机页面与数据显示页面,同时将传感器 数据以及当前时间显示出来。4)联网后能将获取到的传感器数据上传到阿里云平台,并从云平台获取实时时间。5)中控端与节点端能够通过RS485进行传感器数据的传输。6)中控端能够控制节点端使用继电器对其他外设进行开关。

2024-08-18 20:39:36 1306 1

空空如也

空空如也

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

TA关注的人

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