- 博客(33)
- 收藏
- 关注
原创 从 MCU 到 Linux:机器人嵌入式OTA升级原理解密
OTA升级不是"下载一个bin文件往里写"这么简单。本文聚焦两种主流方案——MCU的双Bank架构与Linux的A/B分区,讲清楚升级过程中"断电不失手,变砖可回滚"的核心机制
2026-05-27 18:45:48
388
原创 端侧AI部署干货|主流框架+芯片适配一文吃透,看完直接上手
本文系统介绍了端侧AI部署技术,涵盖主流推理框架对比、芯片平台适配及模型优化方法。重点分析了TensorRT、OpenVINO等框架特性,提供代码示例说明部署流程。端侧AI部署面临算力受限、内存紧张等挑战,需根据目标平台选择合适框架:NVIDIA GPU优选TensorRT,Intel平台推荐OpenVINO,移动端适用TFLite/NCNN。文章还详细解析了TensorRT的图层融合、量化优化等核心技术,以及OpenVINO的组件架构。通过模型量化压缩和框架适配,可实现在嵌入式设备上的高效推理,满足机器人
2026-04-18 05:42:25
464
原创 LVGL嵌入式GUI入门:从基础Demo到MVP架构实战
本文介绍了LVGL嵌入式图形库的基础使用和优化方案。主要内容包括:1)LVGL核心概念和基础Demo实现;2)原生开发的痛点分析,如代码耦合度高、维护困难等;3)提出MVP分层架构解决方案,详细说明视图层、模型层和调度层的分工;4)介绍帧动画实现方法,包括图片资源工程化处理和自动转换脚本。通过LVGL+MVP架构+资源自动化处理的组合方案,可有效解决嵌入式GUI开发中的代码混乱问题,提升项目的可维护性和开发效率。
2026-04-13 08:02:01
781
原创 驱动安全加固与漏洞防护:打造安全可靠的内核驱动
输入验证 → 边界检查 → 权限控制 → 安全API → 漏洞防护驱动安全是系统安全的第一道防线,内核驱动漏洞可能导致整个系统被攻陷。驱动安全 = 深度防御 + 持续审计输入验证:access_ok、边界检查、溢出检查权限控制:capable、文件权限、SELinux安全API竞态防护DMA安全:IOMMU、DMA池、地址验证漏洞防护:stack protector、static keys、硬化配置安全驱动是系统安全的基石!
2026-04-12 09:10:38
373
原创 内核模块高级特性:从入门到精通
模块参数 → 符号导出 → 版本控制 → 模块依赖 → 运行时管理内核模块的高级特性让驱动开发更加灵活、强大和可维护。内核模块高级特性 = 灵活 + 强大 + 可维护模块参数:支持int、bool、charp、array、自定义类型符号导出版本控制:MODULE_VERSION、LINUX_VERSION_CODE条件编译模块依赖运行时管理:try_module_get()、module_put()、引用计数高级特性:MODULE_ALIAS、初始化优先级、错误处理。
2026-04-12 09:10:09
252
原创 驱动性能优化技巧:让你的驱动飞起来
减少锁竞争 → 优化数据传输 → 降低系统调用 → 合理使用缓存驱动性能优化是嵌入式和服务器开发的必修课,目标是降低延迟、提高吞吐量。驱动性能优化 = 找准瓶颈 + 针对性优化锁优化:细粒度锁、RCU、per-cpu、读写锁数据传输:DMA、零拷贝、批量传输中断处理:threaded irq、NAPI、workqueue/tasklet选择内存管理系统调用:减少调用次数、mmap、sysfs性能分析:ftrace、perf、/proc文件系统没有最快,只有更快!持续优化,持续进步!
2026-04-11 08:14:10
464
原创 V4L2摄像头驱动开发:从零开始视频采集
视频设备 → V4L2框架 → 缓冲区管理 → DMA传输 → 用户空间V4L2(Video for Linux 2)是Linux视频设备的标准框架,专为摄像头、电视卡、视频采集卡等设备设计。V4L2驱动 = 视频设备的标准框架核心结构缓冲区管理:videobuf2管理DMA缓冲区两种模式关键ioctl掌握V4L2,就能开发各类视频设备!
2026-04-11 08:13:39
277
原创 内核调试技术全攻略:从printk到KGDB
printk(日志) → 动态调试 → ftrace(跟踪) → kprobes(探针) → KGDB(调试器)内核调试是驱动开发中定位问题、分析性能的核心技能。内核调试 = 定位问题的关键能力printk:最简单、最常用的调试手段动态调试:生产环境可控的调试输出ftrace:函数调用跟踪、性能分析kprobes:动态插入探针、深度调试KGDB:源码级调试、复杂问题定位掌握多种调试技术,才能高效解决内核问题!
2026-04-10 08:29:57
435
原创 杂项设备与虚拟设备:简化驱动开发的神器
misc设备(简化字符设备) + 虚拟设备(无硬件依赖) = 快速原型开发杂项设备简化了字符设备的注册流程,虚拟设备则无需真实硬件支持。│ 杂项设备特点 ││ 1. 主设备号固定为10,自动分配次设备号 ││ 2. 简化注册流程,无需手动创建cdev ││ 3. 自动创建设备节点 ││ 4. 适合简单字符设备 │杂项设备 = 简化字符设备开发的利器核心优势:自动分配设备号、自动创建节点适用场景:简单字符设备、虚拟设备虚拟设备:无需真实硬件,适合测试和原型开发掌握杂项设备,快速实现驱动原型。
2026-04-10 08:29:21
54
原创 输入子系统开发实战:键盘鼠标触摸屏
input_dev(设备) → Input核心层 → input_handler(事件处理) → 用户空间(/dev/input/eventX)输入子系统统一管理键盘、鼠标、触摸屏、游戏手柄等输入设备。输入子系统 = 统一的输入设备管理框架核心结构事件类型:EV_KEY(按键)、EV_REL(相对)、EV_ABS(绝对)上报流程用户接口掌握输入子系统,就能开发各类输入设备驱动!
2026-04-09 08:18:19
54
原创 内核定时器与延迟工作:时间管理的艺术
timer_list(低精度) / hrtimer(高精度) / delayed_work(延迟工作)内核定时器是驱动开发中实现周期性任务、超时处理、延迟执行的核心机制。// 过期时间(jiffies)// 回调函数u32 flags;u8 is_rel;u8 is_soft;u8 is_hard;HRTIMER_MODE_ABS = 0x00, // 绝对时间HRTIMER_MODE_REL = 0x01, // 相对时间。
2026-04-09 08:17:39
544
原创 I2C子系统与驱动开发:从协议到实战
i2c_adapter(控制器) ← I2C核心层 → i2c_client(设备) ← i2c_driver(驱动)I2C子系统采用分层架构,将控制器驱动与设备驱动分离,实现高度复用。I2C子系统 = 分层架构的典范核心概念:adapter(控制器)、client(设备)、driver(驱动)传输方式:i2c_transfer(原始)、SMBus(简化)设备树:通过reg属性指定I2C地址调试工具掌握I2C子系统,就掌握了总线类驱动的开发模式!
2026-04-08 22:24:14
73
原创 中断处理与并发控制:Linux驱动开发的核心难题破解
硬件中断 → 中断控制器 → CPU响应 → 中断处理程序 → 唤醒进程/处理数据中断机制解决了CPU与外设速度不匹配的问题,让外设能主动"通知"CPU处理任务,而不是CPU一直轮询等待
2026-04-08 07:34:43
735
原创 终极零拷贝方案:V4L2 + GPU + DRM + DMA-BUF
摄像头 → 共享内存 → GPU/显示器全程 无CPU拷贝、无内存复制,所有硬件共用同一块物理内存,CPU 占用≈0,延迟<10ms。
2026-04-07 08:00:00
825
原创 Linux Platform驱动框架:设备与驱动分离的优雅设计
Linux Platform框架实现了设备与驱动的解耦,通过platform_device描述硬件资源,platform_driver实现设备操作,由Platform总线负责匹配绑定
2026-04-07 04:42:33
196
原创 Linux GPIO驱动开发实战:从传统接口到新式gpiod
Linux GPIO子系统采用分层架构设计,从用户空间接口到硬件控制器形成完整链路gpiod接口已成为现代Linux驱动开发的标准实践,特别是在结合设备树使用时能充分发挥其设计优势
2026-04-07 04:41:39
442
1
原创 嵌入式linux 面试题
嵌入式linux开机启动流程上电–>固化boot–>uboot–>kernel–>file system–>appuboot一般不使用mmuuboot cmdline–>kernel新版本kernel 设备树,代替platform文件linux特殊进程idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2)idle进程由系统自动创建, 运行在内核态idle进程其pid=0,其前身是系统创建的第一个进程,也是唯
2021-11-08 22:58:28
1378
原创 程序员高效工作利器之MobaXterm
程序员高效工作利器之MobaXterm介绍 工作十几年,终端神器用过很多,刚刚开始工作时使用secureCRT以及单文件小巧的Putty,但了解到 MobaXterm就一直用 MobaXterm有免费版和专业版,免费版有一些限制,比如会话数个数限制等。特分享永久免费专业版,收集来源于网上 下面简述我经常用到的功能功能ssh会话MobaXterm ssh会话,会报错相应的密码,以及自动连接sftp,还有命令宏的录制,用鼠标点一下会实现批量化操作ssh X服务器此项功能非常实用,
2021-08-08 15:47:08
1913
3
原创 mysql服务远程相关配置以及navicat远程管理数据库
mysql服务远程相关配置以及navicat远程管理数据库本文介绍mysql 创建用户 赋予权限,利用navicat 远程管理数据库mysql服务配置mysql 远程访问/etc/mysql/mysql.conf.d/mysqld.cnf编辑上述文件,注释bind-address = 127.0.0.1重启mysql服务sudo service mysql restart创建用户并赋予权限登录数据库mysql -h localhost -u root -p创建用户crea
2021-08-05 22:02:13
1076
1
原创 ubuntu mysql 服务管理以及数据库操作
ubuntu mysql 安装与使用 MySQL是一种关系型数据库管理系统(数据保存在不同的表中而不是将所有数据放在同一个大仓库内,访问速度以及灵活性有明显提高 ),支持标准的sql语言,并且mysql是开源的,不需要支付额外的费用,所以当下非常流行 本文介绍 ubuntu下 mysql 服务的安装与管理以及mysql数据库的简单使用 mysql本质是基于socket编写的C/S架构的软件 mysql 官方地址: https://www.mysql.com/ export PS1="\w
2021-08-04 21:49:33
1993
原创 Linux ftp sftp服务搭建
Linux ftp sftp服务搭建sftp服务sftp服务比较简单,直接包含在openssh包里采用 sudo apt-get install openssh-server -y命令直接安装,安装完成后执行 sudo service ssh restart重启服务效果如下:ftp利用 sudo apt-get install vsftpd -y命令进行vsftpd服务安装安装完成后进行配置文件设置 sudo vi /etc/vsftpd.confwrite_enable=YES 可
2021-07-28 22:27:35
262
原创 linux 实时查看cpu温度
linux 实时查看cpu温度安装sensor检测软件sudo apt install lm-sensors传感器探测设置sudo sensors-detect 设置单个传感探测或者执行 sh -c "yes|sensors-detect"命令,设置所有的检测选项为yes实时查看温度sensors 调用检测传感器,用来检测服务器各个部分的温度并显示出来如果想要实时查看,需要用上watch命令watch -n 1 sensors除了用命令实时查看cpu温度外,也可以通
2021-07-25 16:10:59
4346
1
原创 Linux samba服务搭建
Ubuntu samba服务搭建samba服务安装sudo apt-get install samba samba-common -y如下:smaba配置文件设置sudo vi /etc/samba/smb.conf[share] path = /home/tmp available = yes browseable = yes writable = yes public = yes如下:smbd服务重启重启smbd服务或者重启电脑sudo service sm
2021-07-25 15:55:38
183
原创 Linux 实用技巧
Linux 实用技巧环境变量、命令别名通过配置用户目录.bashrc/.profile文件实现命令提示PS配置:export PS1="\w [\033[1;32;1m]\t: > "一些命令的别名:alias gs=‘git status’如下:sudo无密码配置通过更改/etc/sudoers文件实现如下:vim配置Linux实用技巧 环境变量 SP1配置 sudo 无密码 vim配置...
2021-07-25 15:22:27
195
原创 Linux单网卡双IP
Linux单网卡双IP需求需要一个网口,多个网段配置假如有1网段和8网段,其中1网段采用dhcp获取ip地址,10网段采用静态ip地址配置ok后,1网段和10网段必须通配置直接更改配置文件如下:sudo vi /etc/network/interfacesauto ens33iface ens33 inet staticaddress 192.168.1.147gateway 192.168.1.1netmask 255.255.255.0dns-nameserver 11
2021-07-25 15:03:57
1965
4
原创 Ubuntu更新软件源
Ubuntu 20.04 更新软件源Ubuntu 版本查看Ubuntu 版本uname 或者cat /proc/version源配置文件设置把/etc/apt/sources.list备份一下,然后把如下拷贝到此文件中sudo vi /etc/apt/sources.list清华源deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricteddeb http://mirrors.tuna.tsinghu
2021-07-25 14:51:59
1265
原创 Linux进程管理
Linux进程管理htophtop查看系统状态:执行htop时,分别按P、M、T键,显示会按cpu、mem、time依次排序:psps -ef/aux查看所有进程信息查找端口占用进程,并结束进程查找6666端口占用进程:sudo netstat -alp |grep 6666根据进程id,利用kill结束进程kill -9 1537739或者利用pkill按照进程名结束进程进程放在后台永久运行想要程序一直在运行,退出会话后也在运行,这时候我们就会用到n
2021-07-25 14:12:39
242
原创 Linux终端快捷键
Linux终端快捷键TabTab键的使用 自动补全命令比如:当你想输入cmatrix命令时,可以先输入 cm然后按tab键自动补齐此命令:ctrl+a ctrl+ectrl+a ctrl+e 跳到命令头部/尾部当你在终端输入很长的命令的时候,ctrl+a ctrl+e 这时候的作用就体现出来了如下:小键盘的上下键小键盘上下键查看历史命令然后回车就是执行此命令,非常有用ctrl+l当终端显示满屏时,按一下此快捷键,瞬间清爽效果如下:ctrl+cctrl+c
2021-07-25 13:43:41
278
原创 Linux 磁盘文件
Linux 磁盘文件dfdf -h 文件系统的总空间及当前可用空间dudu -h 文件或文件夹占用磁盘大小du --max-depth=1 -h 目录层次为1层,显示目录大小treetree -L 3 树形显示文件及目录快速删除目录下特定文件find . -name nohup.out |xargs rm -rf利用find查找文件,然后通过管道传参进行删除如果文件个数过多,直接利用rm删不掉时,也可以使用此方法演示视频
2021-07-25 12:55:28
266
原创 Linux 高调装X
Linux 高调装Xcmatrixcmatrix -hUsage: cmatrix -[abBcfhlsmVx] [-u delay] [-C color]-a: Asynchronous scroll-b: Bold characters on-B: All bold characters (overrides -b)-c: Use Japanese characters as seen in the original matrix. Requires appropriate fonts-
2021-07-25 12:18:11
247
原创 Linux VIM 实用技巧
Linux VIM 实用技巧阅读代码ctrl + f 向前翻ctrl + b 向后翻gg 文件第一行G 文件最后一行vim 文件名 +n 打开文件并跳到第n行:/字符 在文件中进行搜索 n向后搜索 N向前搜索编辑i 插入 I 行首进行插入a 追加 A 行尾追加s 当前字符进行替换x 删除当前字符dd 删除当前行p 粘贴u 撤销上次操作. 重复上个动作== 当前行代码对齐g=G 整个文件进行代码对齐VIM配置vi ~/.vimrcsyn
2021-07-25 11:05:21
276
原创 程序员高效工作利器之source insight 4.0 护眼配置 快捷键
source insight是程序猿业界公认的阅读代码、编辑代码最大的神器,没有之一。source insight 界面效果如下:特分享source insight 破解以及护眼相关配置:source insight 操作步骤:1、首先正常安装2、安装目录替换sourceinsight4.exe3、秘钥选择si4.pediy.lic4、导入配置文件si_config.xml opetion-->load configuration获取si软件、破解文件、护眼..
2021-07-24 12:46:21
1438
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅