- 博客(18)
- 收藏
- 关注
原创 Linux网络编程练习:网络聊天室设计
本文介绍了一个基于TCP Socket和select多路复用技术实现的聊天室系统。该系统采用客户端-服务器架构,使用单向链表管理在线用户信息,支持群聊、私聊、用户上下线通知等功能。服务器端通过select实现单线程处理多客户端连接,客户端同样使用select同时处理用户输入和服务器消息。系统包含完整的工程结构,采用自定义消息协议,实现了用户登录校验、消息类型区分、异常处理等机制。编译运行后,用户可通过命令行界面进行实时聊天,支持查看在线用户列表和发送私聊消息。该系统充分体现了TCP可靠通信和select多路
2026-03-13 18:00:55
388
原创 木下~Linux系统编程之网络通信|UDP
摘要:UDP协议是传输层无连接协议,具有高效低延时特性,适用于实时性要求高且可容忍少量丢包的场景。其通信核心是sendto和recvfrom函数,无需建立连接,通过IP地址、端口号和协议族定位通信对端。服务端需先启动并绑定地址,客户端主动发送数据建立通信通道。开发时需注意套接字类型必须为SOCK_DGRAM,正确处理字节序转换,recvfrom的addrlen参数需使用指针。文中提供了完整的服务端和客户端C语言实现模板,包含地址绑定、数据收发等关键流程,并指出常见错误规避方法。
2026-03-12 00:08:01
492
原创 木下~Linux系统编程之网络通信|TCP
本文系统介绍了网络通信的基础知识和Socket编程实现。主要内容包括:1.网络参考模型:对比OSI七层模型和TCP/IP四层模型,说明各层功能;2.核心概念:IP地址分类、端口号作用及字节序转换;3.传输层协议:详细对比TCP(可靠连接)和UDP(无连接)的特性差异;4.Socket编程:阐述套接字三要素(IP+协议+端口),提供Linux环境下完整的TCP通信实现代码,包含服务端(创建-绑定-监听-接收)和客户端(连接-通信)流程,并演示了父子进程和线程实现双向通信的方法。文章为网络编程提供了从理论到实践
2026-03-11 23:58:51
774
原创 FreeRTOS事件组与任务通知源码详解
FreeRTOS提供了事件组和任务通知两种任务通信机制。事件组采用广播模式,支持32位事件标志,通过位操作实现多任务同步,适合"与/或"条件等待场景。任务通知则是高效的点对点通信,直接利用TCB存储空间,提供五种通知方式(设置位、递增、覆写等),具有零内存分配和极低开销优势。源码分析显示,事件组通过EventGroup_t结构体管理事件位和等待链表,任务通知则通过TCB中的通知字段实现。选择时需考虑通信模式、性能需求和场景复杂度:广播/多条件用事件组,高性能点对点用任务通知。两种机制均通
2026-03-11 00:01:53
639
原创 FreeRTOS优先级继承机制详解
本文探讨了FreeRTOS实时操作系统中的优先级继承机制。当多个任务共享资源时,使用二值信号量可能导致优先级翻转问题,即高优先级任务因等待低优先级任务释放资源而被中优先级任务抢占。优先级继承机制通过临时提升持有互斥量的低优先级任务优先级来解决这一问题,确保高优先级任务尽快执行。文章详细分析了同步与互斥概念、信号量与互斥量的区别,并通过代码示例展示了使用二值信号量时的优先级翻转现象和使用互斥量时的优先级继承效果。最后给出使用建议:保护临界资源应使用互斥量,任务间同步则使用信号量。
2026-03-10 23:15:35
592
原创 木下~Linux系统编程笔记之线程
本文摘要:Linux多线程编程基础及核心控制函数。主要内容包括:1)进程与线程概念区分,线程共享进程资源但拥有独立栈区;2)线程分类及Linux实现方式,需链接pthread库;3)线程核心操作函数:创建(pthread_create)、退出(pthread_exit)、等待(pthread_join)、分离(pthread_detach)和取消(pthread_cancel);4)互斥锁机制解决共享资源竞争问题,包含初始化、加锁、解锁和销毁等操作流程。重点强调线程安全注意事项,如避免死锁、确保锁的全局可见
2026-03-10 19:20:40
534
原创 木下~Linux系统编程之静态库与动态库
本文系统介绍了Linux环境下库文件的开发与应用。重点解析了静态库(.a)与动态库(.so)的本质区别:静态库在编译时嵌入程序,动态库在运行时加载。详细说明了两种库的制作流程:静态库通过ar工具打包.o文件,动态库使用gcc的-shared参数生成。使用方式上,静态库需注意链接顺序,动态库必须部署到系统路径。对比维度显示,静态库移植性强但体积大,动态库节省内存便于升级。文章还列出了关键的gcc编译参数,包括-I(头文件路径)、-L(库路径)、-l(链接库名)等,为开发者提供了全面的库开发指南。
2026-03-09 19:56:17
389
原创 木下~Linux系统编程笔记之信号量集
摘要:信号量是System V IPC机制,用于进程同步和临界资源互斥访问。其核心是一个非负整数计数器,通过PV原子操作实现资源管理:P操作申请资源(减1),V操作释放资源(加1)。Linux提供semget创建信号量集、semctl控制信号量值、semop执行PV操作等API。示例展示了5个进程通过二元信号量(初始值1)实现文件互斥写入,确保同一时间只有一个进程访问临界资源。使用后需删除信号量集避免内核残留。
2026-03-09 19:28:28
498
原创 木下~RFID射频识别的原理及MFRC522读写器的驱动
本文详细介绍了RFID技术原理及基于STM32和MFRC522模块的开发实现。主要内容包括:1)RFID系统组成(阅读器、电子标签和应用系统)及13.56MHz高频M1 S50卡的特性(1KB存储、16扇区结构);2)MFRC522读写器的SPI通信接口配置与核心引脚定义;3)ISO14443A标准通信流程(寻卡、防冲突、选卡、认证、读写);4)关键库函数实现(复位、寻卡、防冲突、选卡、密码验证、读写数据);5)STM32硬件初始化及读写卡片的完整代码实现。文中特别强调了扇区密码验证、块地址计算等开发注意事
2026-03-08 16:50:52
503
原创 木下~CY8CMBR3116 电容触摸按键的原理及驱动
本文介绍了CY8CMBR3116电容按键芯片的应用开发。该芯片支持2-16个触摸按键检测,通过I2C接口(地址0x37)与主控通信。文章详细说明了芯片的寄存器配置,包括按键使能(SENSOR_EN)、防误触(FSS_EN)等关键寄存器。同时提供了完整的I2C底层驱动实现,包括起始/停止信号、字节收发、应答处理等基本操作。驱动程序实现了寄存器读写、配置校验、按键状态读取等功能,并封装了按键扫描函数CY8CMBR3116_key_scan()来获取键值。开发中需要注意配置CRC校验、非易失存储保存等关键操作
2026-03-08 16:17:42
282
原创 木下~Linux系统编程笔记之信号
本文概述了Linux系统中的信号机制。信号是进程间的异步通信方式,分为不可靠信号(1-31)和可靠信号(34-64),其中SIGKILL(9)和SIGSTOP(19)不可被忽略或修改处理方式。信号来源包括硬件(如键盘快捷键)和软件(如kill命令)。进程可对信号采取默认处理、忽略或自定义捕获三种方式。文章还介绍了信号通信流程的四个阶段(产生、注册、注销、处理)及核心API函数:kill()发送信号、alarm()定时发送SIGALRM、pause()阻塞等待信号、signal()设置信号处理方式。这些机制共
2026-03-07 10:00:00
527
原创 木下~Linux系统编程之SystemV IPC
本文详细介绍了Linux系统下的SystemVIPC进程通信机制,重点讲解了共享内存和消息队列两种核心组件。共享内存通过直接映射物理内存实现高效通信,但需要额外同步机制;消息队列则提供结构化消息传递和内置同步功能。文章系统阐述了两种通信方式的核心特性、API接口和使用流程,并提供了多个实用代码示例,包括简单收发、多终端聊天等场景。同时强调了SystemVIPC对象生命周期随内核的重要特性,以及使用过程中的常见注意事项,如共享内存延迟删除、消息队列类型限制等,为开发者提供了全面的技术参考和实践指导。
2026-03-07 10:00:00
964
原创 木下~通信协议学习笔记之CAN总线|从解析到STM32实操
本文是一篇面向初学者的CAN总线学习笔记,详细介绍了CAN总线的基础知识和STM32开发实践。首先解释了CAN总线的基本概念、两种国际标准(ISO-11898高速CAN和ISO-11519低速CAN)及其应用场景。重点讲解了CAN总线的6大核心特点,包括多主控制、错误处理能力和非破坏性仲裁等。文章深入解析了CAN总线的物理层电平逻辑、数据帧结构、总线仲裁机制和位时序原理。最后提供了STM32 bxCAN模块的完整开发流程,包括初始化配置、数据收发函数实现和常见问题排查方法。全文采用通俗易懂的语言配合实际代码
2026-03-06 00:02:47
488
原创 木下~通信协议学习笔记之modbus&RS485|从解析到STM32实操
本文系统介绍了RS485通信和Modbus协议的技术要点及STM32实现方案。主要内容包括:1)通信层级划分:物理层(RS485差分传输)、数据链路层(串口UART帧格式)和应用层(Modbus协议);2)RS485核心特性:差分传输、SP3485收发芯片控制及EN引脚切换注意事项;3)Modbus协议详解:4种数据模型、常用功能码、RTU帧格式及03功能码请求/响应流程;4)STM32主从机实现方案:包含帧构建、CRC校验、超时检测等关键代码;5)常见问题排查指南。文章提供了完整的通信协议栈实现方案和实用
2026-03-06 00:00:27
742
原创 木下~Linux系统编程笔记之基础shell命令+Vim编辑器
本文整理了Linux常用命令和Vim编辑器核心操作速查指南。Linux部分涵盖基础命令、目录操作、文件管理、压缩解压、用户权限、GCC编译等实用内容,重点介绍了命令格式、常用参数和典型应用场景。Vim部分详细解析了四种模式切换方式、光标移动、文本编辑、查找替换等高频操作技巧,并提供了.vimrc配置模板和多行注释等批量操作方法。全文采用速查表形式组织,突出命令核心用法和关键参数,适合作为Linux/Vim日常使用的快速参考手册,帮助开发者提高命令行工作效率。
2026-03-05 00:14:42
613
原创 木下~Linux 系统编程笔记之文件 IO 与标准 IO
本文摘要: 文件IO与标准IO操作指南对比了Linux系统调用级IO和C标准库IO的核心特性。文件IO(低级IO)使用文件描述符,无缓冲区,适用于所有文件类型但效率较低;标准IO(高级IO)使用流指针,具有缓冲区机制,效率更高但仅适用于普通文件。文章详细介绍了两种IO的操作流程、核心API及注意事项,包括文件打开/关闭、读写操作、光标控制等关键函数,并重点分析了缓冲区机制差异和使用场景选择建议。最后通过对比表格总结了两种IO在本质、效率、适用范围等方面的核心区别。
2026-03-05 00:00:31
450
原创 木下~Linux 系统编程笔记之管道核心知识点
本文摘要: Linux系统提供了多种进程间通信(IPC)机制,主要包括: 无名管道(Pipe):仅限亲缘进程间通信,半双工,使用read/write操作内核缓冲区 命名管道(FIFO):通过文件系统节点实现任意进程通信,需mkfifo创建 标准流管道:封装管道创建与进程替换,通过popen/pclose和标准IO操作 其他IPC方式:消息队列、共享内存、信号量集等 关键区别: 无名管道无文件节点,命名管道有 标准流管道自动处理进程创建和重定向 管道都是半双工通信,遵循FIFO队列 这些IPC机制为Linux
2026-03-04 23:34:11
589
原创 木下~Linux系统编程笔记之进程
摘要:本文系统介绍了Linux进程管理的核心知识。主要内容包括:进程的定义与五大特性(动态性、并发性、独立性、异步性、结构性)、进程三种状态及其转换规则、进程管理命令(ps/kill)、关键概念(父子进程/僵尸进程等)以及进程控制函数(fork/exec/wait等)。重点阐述了进程创建、执行、终止的全生命周期管理,特别强调了僵尸进程的产生原因及解决方案。
2026-03-03 23:20:34
741
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅