- 博客(23)
- 收藏
- 关注
原创 嵌入式linux设备内存泄露排查思路
文章摘要: 本文介绍快速定位Linux系统内存泄漏的方法。首先通过free -h和top命令观察系统内存和进程内存(RES/VIRT字段)是否持续增长。其次区分内核态或用户态泄漏:内核态通过/proc/meminfo对比Slab和MemAvailable变化,使用/proc/slabinfo分析活跃对象增长;用户态通过ps/top找出RES持续增长的进程,分析其/proc/[pid]/status和内存映射文件。最后介绍了常见Slab缓存类型及关键监控指标,帮助开发者快速定位内存泄漏源。
2026-04-13 17:37:32
273
原创 设备树是如何被使用的?
设备树的核心目标是实现。在之前的博文中,。本文将深入剖析设备树(Device Tree)在Linux内核中的完整运行时生命周期,涵盖从引导加载程序传递、内核早期解析、设备节点实例化,到最终与设备驱动匹配并完成硬件初始化的全流程。通过理解设备树如何从静态描述文件转化为动态的系统硬件拓扑,我们才能够更有效地进行驱动开发、系统移植和调试。
2026-03-18 17:59:38
271
原创 Buildroot:构建嵌入式Linux系统的自动化框架
Buildroot:嵌入式Linux系统的自动化构建工具 Buildroot是一个用于快速构建嵌入式Linux系统的工具,通过自动化流程生成包含Bootloader、内核和根文件系统的完整镜像。其核心特点包括自动化配置、增量编译、交叉编译支持和高集成度,适合资源受限的嵌入式设备。典型工作流程包括配置目标系统(如树莓派)、下载编译源码及生成镜像。用户可通过menuconfig定制软件包,或扩展功能。
2026-03-06 16:17:30
284
原创 嵌入式Linux启动流程
摘要:系统启动流程包括多个关键步骤:U-Boot首先加载uImage内核映像和设备树文件(dtb)到内存指定地址,然后跳转执行内核并传递dtb地址。内核初始化硬件后,挂载initrd临时根文件系统,执行脚本加载必要驱动,最终切换到真实根文件系统并启动用户空间的init程序,完成整个启动过程。该流程实现了从底层硬件初始化到上层用户空间的完整系统引导。
2026-03-04 16:03:24
26
原创 Linux TTY 设备完全解析
本文深入解析Linux终端技术,从历史渊源到现代实现,帮助开发者理解控制台、终端模拟器和伪终端之间的区别与联系。
2026-03-04 12:06:55
393
原创 Shell脚本进阶实用指南
本文总结了Shell脚本编程中的关键注意事项和实用技巧:1. 空格的使用 2. Shebang必须使用解释器的绝对路径。重点介绍了命令输出的获取方法、命令执行状态的检查以及高效的字符串处理技巧。文章通过具体示例展示了如何提取文件路径信息、处理URL和批量修改文件扩展名等实用场景,并强调了子Shell环境隔离和及时保存状态码等易错点。
2026-01-07 16:12:56
834
原创 Linux网桥及其配置
Linux网桥是Linux内核提供的虚拟网络交换机,可在数据链路层将多个LAN互联为单一逻辑局域网,实现透明高效的网络融合。其核心功能包括:动态学习MAC地址表并智能转发数据帧,支持生成树协议防止环路,以及802.1Q VLAN隔离。通过brctl命令可创建网桥、添加接口、配置IP地址及启用STP等。Linux网桥使不同网络设备如同连接在同一物理交换机上,无需修改配置即可直接通信,有效解决了异构网络互通问题,是虚拟化和容器网络的关键组件。
2026-01-04 16:06:33
1109
原创 Would you like Visual Studio Code to periodically run “git fetch“
网络请求频繁:每3分钟一次网络请求,网络不好时可能影响性能,移动办公时消耗流量。实时同步远程仓库的最新状态:分支列表自动更新(能看到同事新创建的分支),及时知道远程是否有新提交;自动化提醒:在状态栏看到 “落后” 或 “领先” 的提示,提交前就知道是否需要先拉取。避免合并冲突:提前了解远程变更,可以及时拉取更新,减少推送时因落后导致的拒绝。提高协作效率:团队协作时,能立即知道别人的进度,分支切换时信息是最新的。没想就点了OK,然后发现它自动同步了所有分支的最新修改。不必要的开销:大仓库可能消耗较多资源。
2026-01-04 15:04:04
226
原创 设备树超强讲解(含大量示例)
Linux设备树摘要: 设备树(Device Tree)是嵌入式Linux中描述硬件配置的数据结构,将硬件描述与内核代码分离。其核心结构由节点和属性组成:节点描述硬件设备或逻辑组件,属性定义特性配置。节点分为根节点、设备节点、系统描述节点等类型,通过compatible属性与驱动匹配。
2025-12-23 18:21:50
891
原创 数组的使用小技巧
数组其实就是一个表格,可以想象成一个excel表格,那么其实excel表格可以呈现的东西都可以通过数组进行实现。所有有一定规律的内容,都可以通过整合形成表格,进而通过数组进行代码实现。如果整合形成的数据都是一个类型的,就可以直接创建一个这个类型的数组;例如在进行多条件判断的时候,就可以通过将各种情况整理到数组中,再通过遍历进行判断,不过要注意的是,这种方法更适合在资源比较多的情况下使用,资源较少时遍历可能并不是一个好的选择,不过这种方法在代码可读性上有很大的优势。
2025-02-12 11:13:02
146
原创 VScode使用remote ssh远程连接无法保存文件,vscode-remote://ssh-remote
VScode远程连接Ubuntu,无法保存文件解决方法
2022-12-30 11:57:31
6683
原创 【牛客题库整理】NC1 大数加法
题目题解C/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */char* solve(char* s, char* t ) { // write code here int sLen = strlen(s); int tLen = strlen(t);
2022-02-19 03:56:23
398
原创 STM32的RTC时间读数不变/读不动RTC
做了一个根据时间变化的变量,一开始还是好好的,后来整理完程序过了几个星期发现这个变量根本不随时间变化,我一直以为是变量类型的问题,因为用到了logf,结果放了breakpoint之后发现时间里的小时,分钟,秒都不变。查了半天才明白,原来是因为整理代码的时候把不用的getDate删了造成的。裂开不用getDate的话,日历会一直被getTime锁住。具体可以参考这位大佬的文章https://mp.weixin.qq.com/s/b8WwXqD5LYThi7HSTXGzTQ另外,一定要先getTime
2020-11-04 23:30:15
3322
原创 SC16IS750在STM32的应用
SC16IS750是NXP家的转换芯片,可以将UART转换成I2C/SPI。我们这里只说一下转I2C。它的library在网上还是挺好找的,但是是arduino的码,我整个程序都是C编的所以有些难受,想找写arduino码的哥哥要个STM的码,人家找我要购买记录。。。好吧,我自己翻译嘛,也没什么大不了的,差的也不多。其实就复制粘贴用STM的函数翻译一下就好。但是要注意两点:所有registre地址都要向左移3位,reg_add<<3,datasheet里说是要留下Channel的位置
2020-11-03 00:11:13
1684
9
原创 BME680及bsec在STM32上的应用
最近使用Bosch家BME680的过程中,发现这个传感器跟个祖宗一样难伺候。虽然我自己也还是个菜鸡,但是想在这里记录一下我个人使用这个传感器的过程和经验,希望能帮助有需要的人少走一些弯路,如果有大佬看到也希望能得到一番指点。
2020-10-31 07:51:51
2828
1
【PDF处理技术】基于文本定位的批量电子签名系统:自动化添加签章的位置控制与多文件处理方案设计
2025-12-29
PDF定位签名批量处理工具是一款用于在PDF文件中自动寻找定位文字并添加签名图片的应用程序,支持批量处理多个PDF文件 (目前仅支持文本型PDF,暂不支持图片型PDF)
2025-12-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅