- 博客(17)
- 收藏
- 关注
原创 平台设备总线相关概念(RK3588)
平台设备总线驱动开发摘要 平台设备总线是一种虚拟总线,将驱动程序分为设备端和驱动端两部分。设备端负责向内核注册设备资源(如GPIO引脚编号、有效电平等)和匹配信息;驱动端注册匹配信息,匹配成功后获取设备资源实现驱动功能。这种分层设计提高了代码复用率,配合设备树可减少代码编写。 设备端通过platform_device_register()注册设备信息,驱动端通过platform_driver_register()注册匹配逻辑。匹配后,驱动端调用platform_get_resource()获取设备资源。设备
2025-07-06 17:37:04
582
原创 系统驱动之设备数(RK3588)
摘要:本文介绍了设备树在RK3588系统中的基本概念和应用。设备树是描述设备资源配置的专用文件,能减少内核镜像大小并简化驱动开发。主要内容包括:设备树文件类型(.dtsi、.dts、.dtb)、节点结构特点、常见属性(如status、gpio、interrupts等),以及在实际开发中如何添加新节点(如beep节点)。文章还详细讲解了查找节点和获取属性的内核API函数(of_find_node_by_path、of_get_named_gpio等),并提供了一个完整的LED驱动实例代码,展示了如何通过设备树
2025-07-03 20:03:16
1303
原创 LINUX2.6设备注册与GPIO相关的API
本文介绍了Linux2.6内核的设备注册机制和GPIO子系统相关API。主要内容包括: Linux2.6设备注册与杂项设备注册的区别: 杂项设备注册简单,主设备号固定为10,自动生成设备文件 Linux2.6设备注册更复杂,设备号需申请(0-2^12),不会自动生成设备文件 Linux2.6设备注册流程: 申请设备号(alloc_chrdev_region) 初始化cdev结构体(cdev_init) 注册设备(cdev_add) 自动创建设备文件(使用class_create和device_create)
2025-07-01 20:56:46
1147
原创 buildroot与内核模块化编程
**摘要:**本文介绍了Buildroot目录结构及内核模块化编程基础。Buildroot包含arch、docs、output等目录用于系统构建。内核模块一般由.c和.h文件组成,编译后生成.ko文件。系统内存分为用户空间(0-3G)和内核空间(3-4G),内核模块使用printk输出信息。模块编程需包含加载函数(__init)、卸载函数(__exit)及相关声明(module_init等)。编译需交叉工具链和Makefile指定内核路径。多模块编程时可用EXPORT_SYMBOL共享函数。最后给出单模块和
2025-06-30 09:03:50
580
原创 LINUX中MYSQL的使用
本文介绍了Linux中MySQL的基本使用方法,包括数据类型、常用命令和C语言操作数据库的接口。主要内容涵盖: MySQL常用数据类型:布尔、字符、整数、浮点、日期时间等类型 基本SQL操作命令:数据库/表创建、数据查询、插入、修改、删除等 MySQL显示命令:查看数据库、表、列等 C语言MySQL接口函数:初始化连接、执行查询、获取结果集等 关键操作函数说明:mysql_init、mysql_query、mysql_store_result等 文章提供了MySQL的实用操作示例和C语言编程接口,适合快速掌
2025-06-17 19:22:16
716
原创 LINUX之安装MYSQL
本文简要介绍了在Linux系统上安装MySQL数据库的步骤。主要内容包括:更新软件源、安装MySQL服务端和客户端、启动数据库服务,以及解决新安装MySQL无法用root账号登录的问题。通过修改配置文件获取临时账号,再更新root密码后即可正常登录。最后提供了验证数据库登录成功的截图说明。整个过程需要在联网状态下完成,适用于Ubuntu等基于Debian的Linux发行版。
2025-06-17 12:15:56
441
原创 系统编程之多路复用
摘要:多路IO复用技术将多个阻塞操作转换为单一阻塞,实现同时监测多个文件描述符的可读性、可写性和出错状态。在TCP服务器中,select机制通过将文件描述符放入监测表,当异动发生时清除无关描述符,并使用FD_ISSET等宏判断异动源。poll轮询则使用pollfd结构体数组存储监测信息,通过遍历数组检查revents字段判断异动。两种方法都能有效解决TCP服务器中accept和read互相阻塞的问题,提升程序执行效率。
2025-06-17 08:38:09
935
原创 网络编程TCP连接服务器与UDP连接服务器
本文介绍了网络编程中TCP和UDP服务器的基本概念及实现方法。首先讲解了局域网与广域网的区别、IP地址分类(IPv4/IPv6)及端口号的作用。重点阐述了TCP的三次握手过程、网络字节序(大端/小端模式)以及套接字的基本原理。文章详细描述了TCP服务器的实现步骤,包括创建套接字、绑定IP端口、监听网络、接受客户端连接以及数据收发等关键操作,并提供了相关系统调用函数及其参数说明。最后给出了一个简单的TCP服务器实现示例代码。
2025-06-15 19:29:41
1491
原创 LINUX之多线程
摘要: Linux多线程技术通过轻量级线程实现并发,共享进程资源,创建和切换开销远小于进程。线程适合频繁创建/销毁、强相关任务及大量计算场景,但线程间存在"一死俱死"风险。核心API包括线程创建(pthread_create)、退出(pthread_exit)、等待(pthread_join)及互斥锁(pthread_mutex_init/lock/unlock)用于同步。互斥锁需遵循初始化-加锁-解锁-销毁流程,避免死锁。条件变量(如pthread_cond)进一步扩展了线程阻塞控制能
2025-06-14 17:29:19
1044
原创 LINUX下LVGL(gui-guider)多线程获取时间
摘要:本文详细介绍在Linux环境下使用LVGL GUI-Guider工具实现多线程获取并显示系统时间的步骤。首先通过GUI-Guider创建工程并配置界面元素,添加两个Label用于显示时间。然后在events_init.c文件中创建线程,使用localtime获取系统时间并每秒更新Label显示。关键步骤包括修改Makefile添加线程库、编写多线程时间获取代码、编译工程并运行。最终实现了一个能动态显示当前日期和时间(包括时分秒)的GUI界面,展示了LVGL与Linux系统功能的结合应用。
2025-06-13 02:11:54
1065
原创 LINUX之IPC
Linux进程间通信(IPC)机制摘要 Linux提供了三种主要IPC机制:共享内存、信号量和消息队列。共享内存通过shmget创建,shmat映射到进程空间,允许高效数据共享;信号量(semget/semop)用于进程同步,控制临界资源访问;消息队列实现进程间消息传递。系统通过ftok生成的键值唯一标识IPC对象,确保在多进程环境中准确识别。这些机制各有特点:共享内存速度快但需同步,信号量解决同步问题,消息队列提供结构化通信。开发时应根据具体场景选择合适的IPC方式,注意资源管理和同步问题。
2025-06-11 23:23:26
1213
原创 IAP的使用-STM32F103ZET6
使用STM32F103ZET6配置IAP,IAP 是用户自己的程序在运行过程中对User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信接口对产品中的固件程序进行更新升级。
2025-06-05 20:43:08
1225
原创 STM32CubeMX中GPIO口的使用
这篇教程介绍了使用STM32CubeMX配置GPIO口的基本操作。主要内容包括:1) 配置PE3、PE4为LED输出引脚,初始高电平,实现LED闪烁功能;2) 设置按键和蜂鸣器控制,按键采用下拉电阻模式,蜂鸣器为推挽输出;3) 通过系统定时器实现按键防抖检测,30ms检测间隔;4) 代码示例展示了LED点亮、按键检测和蜂鸣器控制逻辑。教程涵盖了GPIO输出、输入配置以及硬件交互的实现方法。
2025-06-04 20:09:03
431
原创 stm32CudeMX创建工程
本文介绍了使用STM32CubeMX创建STM32F103ZET6工程的步骤:1)选择芯片型号;2)配置外部时钟源达到72MHz;3)设置时钟树;4)配置工程名称、路径、堆栈大小及HAL库路径;5)设置生成标准.c/.h文件。最后生成工程文件。整个过程通过图形化界面完成,简化了STM32开发环境的搭建流程。
2025-06-04 17:34:05
303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1