- 博客(72)
- 收藏
- 关注
原创 《嵌入式驱动(十三):一些系统中自带的驱动》
本文介绍了IMX6ULL开发板上多个外设驱动的适配与实现方法。内容包括:1)串口驱动的查找与实现,通过设备树配置和示例代码展示GPS数据解析;2)ADC驱动的使能与测试,包括IIO子系统配置和设备树修改;3)LCD屏幕驱动适配,重点说明4.3寸和7寸屏的配置差异;4)触摸屏驱动实现,详细描述了GT9147驱动的移植和tslib校准库的使用;5)三种摄像头(OV5640/OV2640/OV7725)驱动的适配流程,包括设备树修改、驱动替换和测试验证。所有驱动均通过设备树配置、内核编译和应用程序测试三个步骤实现
2025-11-07 03:18:14
598
原创 《嵌入式驱动(十二):SPI子系统架构》
本文介绍了SPI通信的基本概念及其在IMX6uLL芯片上的应用实现。主要内容包括:1)SPI控制器数量(4个)、时钟极性与相位配置;2)ADXL345加速度传感器驱动开发,重点阐述了SPI核心接口函数(如spi_register_driver、spi_write_then_read等)的使用方法;3)详细展示了驱动代码实现,包括设备初始化、数据读取等关键操作;4)应用层程序通过计算加速度数据获取三维角度信息。整个系统采用设备树配置,实现了基于SPI总线的传感器数据采集功能。
2025-11-07 02:07:01
926
原创 《嵌入式驱动(十一):I2C子系统架构》
本文介绍了I2C通信协议的开发应用。通过对比UART、I2C、SPI等通信方式的特点,重点阐述了I2C作为半双工同步串行通信协议的优势和实现方法。详细讲解了I2C的硬件连接要点(上拉电阻)、通信时序(起始/停止信号)、总线拓扑(一主多从)等基础知识。提供了基于Linux I2C子系统的驱动开发框架,包括i2c_adapter、i2c_core和各层接口函数的使用方法。最后通过LM75温度传感器实例,展示了从设备驱动(probe/remove实现)到应用程序(温度读取)的完整开发流程,并给出了关键代码实现。
2025-11-06 23:18:28
1669
1
原创 《嵌入式驱动(十):input子系统》
本文介绍了Linux输入子系统的设备管理和事件上报机制。主要内容包括:1)输入设备分类(键盘、鼠标等);2)关键API函数(设备分配、注册、事件上报等);3)input_dev结构体初始化参数(事件类型、按键等);4)按键驱动实现示例,展示了从GPIO中断到输入事件上报的完整流程;5)应用程序通过读取/dev/input/eventX节点获取输入事件的实现方法。整个流程涵盖了从硬件中断触发到用户空间获取输入事件的全链路处理机制。
2025-11-06 17:19:51
924
原创 《嵌入式驱动(九):platform总线架构》
摘要:本文介绍了Linux平台虚拟总线(platform)架构的实现与应用。主要内容包括:(1)平台总线概念,用于管理无物理总线连接的设备;(2)关键API函数说明,如platform_driver_register、platform_driver_unregister等;(3)给出一个LED驱动实例代码,展示如何通过platform_driver结构体实现设备探测(probe)、移除(remove)等操作,并配合设备树进行匹配;(4)详细描述了platform设备从设备树到驱动匹配的完整流程,包括设备信息
2025-11-06 16:43:39
949
原创 《嵌入式驱动(八):内核定时器与延时函数》
摘要:本文介绍了Linux内核中定时器和延时函数的使用方法。内核定时器部分阐述了jiffies概念及其转换函数(毫秒/微秒与jiffies间的转换),以及定时器操作接口(DEFINE_TIMER、add_timer等)。延时函数部分对比了忙等待(ndelay、udelay、mdelay)和睡眠函数(msleep、ssleep)的特点,指出睡眠函数会释放CPU资源。文末提供了按键驱动示例代码,展示了中断处理、定时器、工作队列和异步通知等机制的实战应用,包括按键状态的读取和事件通知实现。
2025-11-05 15:19:32
515
原创 《嵌入式驱动(七):等待队列和中断》
本文介绍了Linux驱动开发中的关键机制:1. 等待队列实现阻塞IO,通过wait_event等函数实现进程阻塞/唤醒;2. 中断处理分为顶半部(紧急操作)和底半部(耗时任务),提供四种实现方式(软中断、tasklet、工作队列、线程化irq);3. 详细分析了四种IO模型(阻塞/非阻塞/异步/多路复用)的实现原理,并给出对应驱动程序代码示例。文中还涵盖中断资源竞争处理、设备树中断配置等关键技术,最后总结了驱动中中断使用流程和四种IO模型的具体实现方法。
2025-11-05 01:56:51
1031
原创 《嵌入式硬件(二十二):基于IMX6ULL的触摸控制器(TS)操作》
本文介绍了电容触摸屏的发展历程和技术原理。从电阻式单点触屏到iPhone引领的多点电容触屏革命,详细对比了两种技术的差异,突出电容屏支持多点触控、灵敏度高等优势。重点分析了GT9147触摸控制IC的工作原理,包括其15×28驱动结构、5点触控功能以及I2C通信接口。通过正点原子ATK-7016开发板的实例,阐述了触摸屏硬件连接方式(SCL、SDA、RST、INT四线制)和中断模式的数据采集方法。最后展示了基于IMX6Y2处理器的触摸屏驱动实现代码,包括寄存器配置、坐标读取和中断处理等关键功能。全文涵盖了从技
2025-11-03 21:21:39
1235
原创 《嵌入式硬件(二十一):基于IMX6ULL的脉冲宽度调制(PWM)操作》
摘要:本文介绍了PWM(脉冲宽度调制)技术在LCD背光控制中的应用原理。PWM通过调节方波的占空比来控制背光亮度,占空比越高亮度越大。文章详细阐述了I.MX6U处理器的PWM外设寄存器配置,包括引脚设置、控制寄存器、状态寄存器等核心模块。同时提供了完整的PWM控制程序实现,包括初始化函数、占空比设置函数和中断处理函数。最后通过main.c演示了实际应用场景,展示了如何动态调整背光亮度。该方案实现了高效、精确的背光控制,具有实用价值。
2025-11-03 20:01:24
917
1
原创 《嵌入式硬件(二十):基于IMX6ULL的LCD操作》
本文主要介绍了LCD显示器的基本原理及在I.MX6U开发板上的实现方法。主要内容包括:1) LCD基本概念,包括分辨率、像素格式等参数;2) RGB LCD的时序原理,详细分析了行同步和帧同步信号的时序要求;3) I.MX6U处理器的寄存器配置方法,包括时钟设置、引脚复用等;4) 提供了完整的LCD驱动程序实现代码,包括初始化、清屏和绘制像素等功能。文章通过800×480分辨率LCD的具体实例,阐述了从硬件连接到软件配置的完整开发流程,为嵌入式系统中的LCD显示应用提供了实用参考。
2025-11-03 15:30:09
838
原创 《嵌入式硬件(十九):基于IMX6ULL的SPI操作》
本文介绍了SPI通信协议及其应用实现。SPI是一种高速全双工串行通信总线,采用四线制(SCLK、MOSI、MISO、CS),具有结构简单、节省管脚的特点。文章详细分析了SPI的时序特性,包括时钟极性(CPOL)和相位(CPHA)参数设置,并阐述了SPI的全双工通信机制:每次数据传输都同时完成读写操作。接着介绍了三轴加速度传感器ADXL345通过SPI接口的应用实现,包括寄存器配置(0x2E、0x31等)和数据读取方法。最后提供了基于IMX6U处理器的SPI3接口初始化代码和ADXL345驱动实现,展示了如何
2025-10-30 22:53:46
557
原创 《嵌入式硬件(十八):基于IMX6ULL的ADC操作》
本文介绍了ADC(模数转换器)的基本原理及在i.MX6ULL处理器中的应用。ADC通过采样和量化将模拟信号转换为数字信号,其分辨率取决于比较次数(8/10/12位)。i.MX6ULL内置两个12位ADC控制器,支持1MHz转换速率和自动校准功能。文中详细说明了ADC初始化流程,包括引脚配置、寄存器设置和校准操作,并提供了完整的C语言实现代码,涵盖采样、排序滤波和电压计算等功能。示例代码展示了如何通过ADC1通道1获取模拟电压值并转换为实际电压输出。
2025-10-29 22:41:31
867
原创 《嵌入式硬件(十七):基于IMX6ULL的温度传感器LM75a操作》
摘要:本文介绍了LM75a温度传感器的使用及I2C驱动实现。LM75a通过引脚设置温度阈值并触发中断,设备地址0x48,寄存器0x00读取温度值(需右移7位后乘以0.5)。提供了完整的ARM Cortex-M代码实现,包括:1)FPU初始化汇编代码;2)支持多字节地址的I2C读写驱动;3)LM75温度读取接口;4)主程序通过I2C读取温度并串口输出。系统使用IMX6Y2处理器,实现了从硬件初始化到数据采集的完整流程。
2025-10-29 19:40:55
515
原创 《嵌入式驱动(六):pinctrl子系统和gpio子系统驱动》
本文介绍了Linux驱动开发中的分层思想和关键子系统应用。主要内容包括:1)Linux驱动分层思想,强调设备与驱动分离,将设备信息放入设备树;2)pinctrl子系统的使用,通过设备树配置引脚复用功能;3)GPIO子系统操作流程,包括引脚编号获取、资源申请、方向设置等;4)以按键驱动为例,展示了设备树配置(pinctrl和GPIO定义)、驱动代码(初始化、GPIO操作、文件操作)及应用程序的完整实现。文章提供了设备树节点定义、驱动代码和Makefile的具体实现,完整呈现了从硬件配置到用户空间访问的Linu
2025-10-05 20:45:31
882
原创 《嵌入式驱动(五):基于设备树及misc混杂设备优化代码》
本文介绍了基于Linux misc设备的LED、蜂鸣器和按键驱动开发流程。通过misc_register/misc_deregister完成设备注册与注销,使用设备树定义硬件资源(寄存器地址),并通过of_iomap映射物理地址。驱动实现了文件操作接口(read/write/open/release),使用copy_from/to_user实现用户空间与内核空间数据交互。配套应用程序通过设备节点进行控制,交叉编译后部署到目标板。开发过程包含设备树配置、驱动实现、应用层测试程序编写及Makefile构建系统配
2025-10-05 20:02:28
268
原创 《嵌入式驱动(四):设备树》
设备树(dts/dtsi/dtb)是记录硬件资源信息的文件,用于驱动匹配。本文以imx6ull-alientek-emmc.dtb为例,介绍了设备树结构:1)节点语法含属性设置;2)示例节点puteled定义了寄存器地址等信息;3)通过DTC工具编译生成dtb文件后,需拷贝到tftpboot目录使用。设备树通过compatible属性实现设备与驱动匹配,status控制节点使能状态。
2025-10-05 18:43:33
315
原创 《嵌入式驱动(三):字符设备驱动开发》
本文介绍了Linux字符设备驱动开发框架及实现流程。主要内容包括:1) 字符设备分类及设备号管理机制;2) 驱动开发流程,涵盖设备号申请、cdev结构注册、设备节点创建等关键步骤;3) 给出了LED和蜂鸣器两种字符设备的完整驱动实现代码及Makefile,包含设备初始化、寄存器映射、文件操作接口实现等核心功能;4) 配套应用程序代码展示了通过文件IO操作设备的典型方法。文中还提供了常用的内核驱动信息查看命令,为Linux字符设备驱动开发提供了完整的实现参考。
2025-10-05 18:25:26
792
原创 《嵌入式驱动(二):驱动开发基本概念》
本文介绍了Linux驱动开发的基本概念和关键流程。主要内容包括:1)驱动分类(字符设备、块设备、网络设备);2)驱动编译方式(静态编译直接嵌入内核,动态编译生成.ko模块);3)uboot和内核的编译步骤;4)根文件系统制作方法(基于busybox)及其自启动配置;5)静态与动态编译的区别:静态编译集成度高但灵活性差,动态编译便于调试维护。文章还详细说明了相关配置文件和脚本的作用,为嵌入式Linux开发提供了系统性的技术指导。
2025-09-23 21:20:18
1243
原创 《嵌入式驱动(一):系统移植》
Linux系统移植需要四个关键文件:uboot(硬件初始化和内核加载)、zImage(内核实现内存/任务/网络/文件系统管理)、dtb(设备树描述硬件信息)和rootfs(文件系统提供用户交互)。IMX6ULL平台启动流程包含三个阶段:BootROM初始化硬件并加载uboot;uboot完成外设初始化后加载内核和设备树;内核启动文件系统完成系统引导。其中uboot通过bootcmd定义自动启动命令,bootargs向内核传递文件系统参数。移植重点在于理解各组件功能与启动流程的衔接机制。
2025-09-22 20:00:10
498
原创 《嵌入式硬件(十六):基于IMX6ULL的I2C的操作》
本文介绍了I2C总线的基本原理及其在AT24C02 EEPROM存储器的应用。I2C是一种同步串行半双工通信总线,通过SCL时钟线和SDA数据线实现主从设备通信。文章详细说明了I2C的通信协议,包括起始/停止信号、地址识别、数据收发时序等。重点阐述了AT24C02的读写操作流程,并提供了基于I.MX处理器的I2C驱动程序实现,包括初始化配置、数据写入和读取函数。最后给出了一个完整的测试程序,通过I2C接口实现对EEPROM的读写操作验证。
2025-09-20 16:23:16
793
1
原创 《嵌入式硬件(十五):基于IMX6ULL的统一异步收发器(UART)的操作》
本文介绍了UART串口通信的基本原理与实现方法。主要内容包括:1) UART特性说明,支持多种通信协议(RS-232/RS-485/IrDA)及配置选项;2) 寄存器原理与波特率计算方法;3) 基于IMX6ULL处理器的UART初始化及数据传输代码实现;4) printf/scanf标准输入输出移植方法;5) 数据类型大小及大小端验证。通过具体代码展示了UART初始化、数据收发、波特率设置等关键操作,并提供了标准库移植方案。实验结果表明该系统能实现115200bps的稳定通信,并验证了处理器的小端存储特性。
2025-09-18 17:06:47
615
原创 《嵌入式硬件(十四):基于IMX6ULL的通用目的定时器(GPT)操作》
本文介绍了32位通用定时器GPT的实现原理与应用。主要内容包括:1) GPT定时器的基本特性,支持66MHz时钟输入和上升沿捕获功能;2) 实现高精度延时的三个步骤:设置自由运行模式、配置1MHz时钟、处理溢出回滚问题;3) 关键寄存器说明:控制寄存器CR、分频寄存器PR和计数器寄存器CNT;4) 提供了完整的代码实现,包括gpt.c/h、delay.c/h和main.c,展示了如何初始化GPT定时器并实现微秒级和毫秒级延时功能,最终通过LED闪烁验证定时效果。
2025-09-17 19:36:12
381
原创 《嵌入式硬件(十三):基于IMX6ULL的增强型中断周期定时器(EPIT)操作》
摘要:本文介绍了增强型中断周期定时器(EPIT)的基本原理与应用。EPIT包含控制、状态、加载、比较和计数五个关键寄存器,采用32位递减计数方式,通过比较寄存器触发中断。硬件通过时钟信号(66MHz IPG_CLK等)驱动12位分频器,计数寄存器与比较寄存器匹配时产生中断信号。文章还提供了EPIT的初始化代码示例,展示了寄存器配置、中断服务函数实现及1ms定时设置方法。此外,文中提到EPIT可用于按键消抖处理,包括硬件(电容滤波)和软件(延时函数)两种消抖方案。
2025-09-17 14:30:48
715
原创 《嵌入式硬件(十二):基于IMX6ULL的时钟操作》
本文介绍了时钟系统的基本概念和配置方法。主要内容包括:1)时钟核心概念如PLL(锁相环)、预分频器和相位分数分频器;2)时钟树原理及配置步骤,包括ARMPLL和PLL2的设置方法;3)AHB、IPG等时钟信号的配置过程;4)提供了完整的时钟初始化代码实现,包括寄存器操作和分频因子设置。通过修改CCM模块相关寄存器,实现了从24MHz时钟源到各模块时钟的配置。代码部分展示了完整的时钟初始化函数init_clock()的实现细节。
2025-09-15 00:05:40
969
2
原创 《嵌入式硬件(十一):基于IMX6ULL的中断操作》
本文介绍了ARM架构中的中断处理机制,重点分析了GIC(通用中断控制器)的工作原理和实现方法。主要内容包括:1)中断流程:外设产生中断→GIC接收分发→内核处理;2)GIC功能:支持8核处理器,管理1020个中断(分为SPI、PPI、SGI三类);3)协处理器CP15的作用,包括异常向量表重映射和GIC基地址管理;4)通过IMX6ULL处理器的GPIO中断实例,展示了中断寄存器配置和优先级设置;5)提供了完整的中断处理代码框架,包括初始化、注册和处理函数实现。文章还详细说明了CPSR寄存器状态切换和中断返回
2025-09-15 00:05:16
874
原创 《嵌入式硬件(十):基于IMX6ULL的按键操作》
本文介绍了嵌入式开发中GPIO模块的代码复用实现方法。首先通过gpio.c和gpio.h文件封装了GPIO初始化、读写等基础操作函数,提高了代码复用性。然后展示了LED和蜂鸣器模块如何调用这些通用函数实现具体功能。接着详细说明了按键检测原理与实现步骤,包括硬件连接、电气属性设置和输入方向配置。最后给出了完整的项目代码结构,包括主程序main.c和启动文件start.S,实现了按键控制LED和蜂鸣器的功能。整个设计体现了模块化编程思想,通过分层设计提高了代码的可维护性和复用性。
2025-09-14 20:36:02
473
原创 《嵌入式硬件(九):基于IMX6ULL的蜂鸣器操作》
本文介绍了链接脚本内存段和蜂鸣器驱动的实现。在内存段部分,详细说明了.bss、COMMON、.data和.rodata四个段的特点及用途,并解释了链接脚本中通配符的使用方法。蜂鸣器驱动部分包括硬件原理、初始化步骤和代码实现,涉及GPIO配置、时钟使能等功能。最后给出了完整的项目代码结构,包含主程序、启动文件和设备驱动,实现了LED和蜂鸣器的交替控制功能。
2025-09-14 19:40:39
1318
原创 《嵌入式硬件(八):基于IMX6ULL的点灯操作》
本文介绍了IMX6ULL处理器启动流程和LED控制实现。启动代码通过设置异常向量表、处理器模式和栈指针完成初始化。LED控制包含以下步骤:1)初始化系统时钟;2)配置GPIO引脚复用功能;3)设置电气属性;4)定义输入输出方向;5)控制数据寄存器电平。代码实现包括启动文件(start.S)、LED驱动(led.c/h)和主程序(main.c),通过Makefile构建,主要功能是初始化硬件后实现LED闪烁。整个工程采用模块化设计,包含BSP驱动层、处理器支持层和应用层。
2025-09-14 18:45:09
1138
原创 《嵌入式硬件(七):IMX6ULL所需的环境以及编译方法》
本文介绍了嵌入式开发环境的搭建与程序烧录流程。在Windows下安装VSCode比虚拟机更流畅,通过FileZilla实现文件传输。Linux环境需安装vsftpd服务器并配置网络。ARM交叉编译环境的搭建包括编译器安装、环境变量配置和32位库支持。详细说明了编译命令流程:从汇编文件编译、链接生成ELF文件到最终生成二进制烧录文件。SD卡烧录步骤包括FAT32格式化、bin文件复制(注意设备路径)、使用imxdownload工具烧录,以及通过BOOT拨码开关设置启动模式。整个流程涵盖了从开发环境搭建到程序烧
2025-09-10 22:59:01
545
原创 《嵌入式硬件(六):ARM汇编核心内容总结》
本文介绍了ARM汇编指令集及其应用,包括数据传送指令(mov、ldr、str)、算术运算指令(add、sub)、位操作指令(bic、orr)以及跳转指令(b、bl、bx)等。重点讲解了立即数处理、内存访问机制和栈操作(stmfd/ldmfd)。同时阐述了ARM与C语言的混合编程方法,包括参数传递、现场保护和函数调用约定。最后通过示例代码演示了汇编函数调用和条件判断的实现。文章还提及了特殊寄存器操作(mrs/msr)和状态寄存器(cpsr)的使用技巧。
2025-09-10 21:50:38
1372
1
原创 《嵌入式硬件(五):IMX6ULL所需的基础》
本文介绍了ARM架构的基础知识。RISC精简指令集计算机与CISC复杂指令集计算机的区别,重点解析了ARM的寄存器功能(R0-R15、SP、LR、PC等)和哈佛架构特点。详细说明了AHB高速总线与APB低速总线的应用场景,以及RAM(SRAM/DRAM/DDR)和ROM(PROM/EPROM/Flash)的分类特性。最后以S3C2440为例,说明ARM处理器内核、指令集和寄存器配置等关键参数。全文涵盖了ARM体系结构的基础概念、存储系统和总线架构,为嵌入式开发提供理论基础。
2025-09-08 17:57:19
1332
原创 《嵌入式硬件(四):温度传感器DS1820》
DS1820是一款单总线数字温度传感器,具有-55℃至+125℃的测量范围,精度0.5℃。它采用单线接口通信,支持多点检测,无需外部元件,可通过数据线供电。操作包括ROM命令(读/匹配/跳过/搜索ROM)、存储器操作(读/写暂存器、温度转换)和电源检测。使用时需注意总线时序,51单片机通过拉低/拉高电平进行通信初始化。温度读取过程包括复位、发送转换命令、读取温度值等步骤,最后通过计算将原始数据转换为实际温度值。该传感器适用于恒温控制、工业系统等温度监测场景。
2025-09-08 09:21:59
1117
原创 《嵌入式硬件(三):串口通信》
本文介绍了UART串口通信的基础概念与技术要点。主要内容包括:1)串行通信的三种模式(全双工/半双工/单工)及TTL电平标准;2)长距离通信解决方案(RS232/RS485)及其电气特性对比;3)波特率计算公式与寄存器配置方法;4)实际应用中的数据类型测量和主从通信协议解析,包含帧格式示例和代码实现。重点阐述了差分信号传输、校验机制以及中断处理等关键技术,为嵌入式系统串口通信开发提供了实用参考。
2025-09-05 18:12:54
1157
原创 《嵌入式硬件(二):中断》
本文介绍了51单片机开发中的按键控制、中断系统和定时器应用。在按键控制部分,通过初始化按键和数码管,实现按下不同按键显示对应数字的功能。中断系统部分阐述了中断概念、中断源和中断嵌套机制,并展示了通过外部中断控制数码管计数的实现。定时器部分讲解了计数器工作原理,演示了如何用定时器实现LED灯1秒闪烁。最后简要介绍了PWM原理及其在蜂鸣器控制中的应用,通过按键可切换不同频率输出。全文通过具体代码示例展示了51单片机基本外设的编程方法。
2025-09-04 17:36:41
805
原创 《嵌入式硬件(一):裸机概念与80c51单片机基础》
本文介绍了嵌入式系统开发中的硬件与编程要点。主要内容包括:1)硬件系统特性,区分裸机系统与带OS系统的差异;2)处理单元分类(SoC、MCU、MPU等)及其功能;3)数据存储规范,包括int类型占用空间和寄存器操作原理;4)硬件接口标准,涵盖GPIO、UART等接口规范;5)51单片机开发实例,提供LED控制、数码管显示等驱动程序框架,包含寄存器操作、延时函数等关键代码实现。文章通过具体代码示例展示了嵌入式开发中的硬件抽象层实现方法。
2025-09-03 17:59:12
659
原创 《Linux 网络编程六:数据存储与SQLite应用指南》
本文对比了内存存储与持久化存储的特点,重点介绍了SQLite数据库的应用。内存存储速度快但数据易失,持久化存储速度慢但数据可长期保存。SQLite作为轻量级文件数据库,具有开源免费、跨平台、单文件存储等特点,支持最大2TB数据。文章详细说明了SQLite的安装配置、数据类型、常用SQL命令和高级功能,并介绍了C/C++ API接口的使用方法,包括数据库操作和回调函数处理。SQLite适用于需要嵌入式数据库解决方案的场景。
2025-08-29 18:04:33
1001
原创 《Linux 网络编程五:TCP 并发服务器:构建模式、原理及关键技术(epoll )》
本文对比了三种并发服务器的实现方式(select、poll、epoll),重点分析了epoll的工作原理和优势。select和poll都存在文件描述符数量限制、数据拷贝开销大、需要遍历事件等缺点,而epoll采用红黑树结构,支持高效查找,避免了数据拷贝,并能直接返回就绪事件。epoll支持水平触发和边沿触发两种模式,通过epoll_create、epoll_ctl和epoll_wait三个核心函数实现事件管理。文章最后提供了基于epoll的TCP并发服务器实现代码,展示了如何通过epoll高效处理网络连接和
2025-08-28 16:57:56
945
原创 《Linux 网络编程四:TCP 并发服务器:构建模式、原理及关键技术(select )》
本文介绍了TCP并发服务器的实现方式及原理。主要内容包括:1)单循环服务器与并发服务器的概念对比;2)四种并发服务器构建方式(多进程、多线程、线程池和IO多路复用)的特点及适用场景;3)详细说明了select函数的实现原理和使用方法;4)提供了三种具体的代码实现:基于进程的并发服务器、基于线程的并发服务器,以及使用select实现的IO多路复用服务器。文章通过对比分析不同方式的资源开销、安全性和并发性能,为开发者选择合适的服务器实现方案提供了参考依据。
2025-08-27 18:28:48
478
原创 《Linux 网络编程三:TCP 机制与 HTTP 协议》
TCP/IP协议栈核心机制摘要:TCP通过三次握手建立可靠连接,四次挥手确保断开安全,序列号/确认号实现数据校验,滑动窗口优化传输效率。HTTP作为应用层协议,基于TCP实现客户端-服务器通信,包含请求方法(GET/POST)、状态码(200/404)等要素,通过URL定位资源。爬虫本质是自动化HTTP请求工具,模拟浏览器获取并解析网页数据。关键技术包括TCP的流量控制、超时重传等保障机制,以及HTTP的报文格式和状态管理。
2025-08-26 17:07:34
672
原创 《Linux 网络编程二:UDP 与 TCP 的差异、应用及问题应对》
本文对比了UDP和TCP协议的主要特性。UDP是无连接协议,面向数据包传输,具有实时性高、机制简单等特点,但可靠性较差,适用于视频/音频流等场景。TCP是面向连接的可靠传输协议,通过三次握手建立连接,采用流式传输,确保数据完整性和顺序性,适用于文件传输等要求准确性的场景。文章还详细介绍了UDP丢包原因及解决方法、TCP的编程流程和函数接口,以及TCP粘包问题及其解决方案。两种协议各具特点,应根据具体应用场景选择合适的传输协议。
2025-08-24 15:22:49
1033
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅