自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 收藏
  • 关注

原创 让代码「看见」世界:开源视觉库 OpenCV

想让程序「看见」世界,很多人第一反应是:接个摄像头,再写一堆读图、滤波、画框的代码。真动手才发现——像素格式、色彩空间、相机驱动、编解码、跨平台……每一项都像在重新发明轮子。就是冲着这件事来的:一套开源、偏实时的计算机视觉库,帮你把「读图 → 处理 → 识别 → 画结果」做成可调用的积木,而不是从零抠像素。

2026-09-14 14:58:54 120

原创 开源 OOMWOO:自己组一台扫地机

市面上扫地机越来越「聪明」,也越来越「必须联网」:建图要上云、控制要 App、断网功能残。你想改路径规划、加传感器、把地图留在家里——整机却是黑盒。走的是另一条路:不是给某品牌机刷破解固件,而是——机械、主控、固件、ROS 2 导航,目标都摊开。本地优先,日常清扫不强制云端。GitHub 上已有上万星,方向很热;完成度仍是。

2026-09-10 17:51:06 234

原创 开源 lwIP:单片机上的轻量 TCP/IP 协议栈

我们要的是 Linux 那套完整网络世界,还是一份能塞进 MCU 的、可裁剪的 TCP/IP?lwIP 把路走窄了,也走实了:窄在不做通用 OS 网络子系统;实在无数量产固件里默默转发每一包。它不靠刷星证明自己,靠的是——你打开厂商工程时,头文件里已经写着lwip。厂商/官方 echo 例程 → 读懂lwipopts.h→ ping 通 → 一条 TCP/UDP → 再叠 MQTT/HTTP。别第一天就对吞吐和 TLS 一起开战——先让协议栈在板上「活着」。

2026-09-10 17:10:19 200

原创 httping 段错误问题总结

典型 strace 尾部:要点:用 可见修复前:对比历史可工作路径: 的 不含 ,非 PIC 目标文件链成普通可执行文件可以正常跑。CMake 路径引入 却未保证全量 ,从而引入本问题。按时间线概括排查路径:关键命令(分析侧):4. 修复内容涉及文件(ubus8.8 / ubus7.20 均已改):修复后检查:说明:必须带 ,否则不会重新覆盖补丁目录。本次根因修复只需重编 httping,不必重编 。产物路径:板端验证:6. 经验教训 与 必须成对:只链 PIE、不编 PIC,在

2026-09-10 11:29:05 185

原创 开源 Zephyr:现代嵌入式 RTOS 长什么样

我们要的是一个调度器,还是一个能跟着板子搬家的嵌入式操作系统?Zephyr 把路走宽了:宽在架构与子系统;又用 Devicetree / Kconfig 把复杂度关进配置,而不是关进一堆不可移植的#ifdef。宽的好处是,官方 sample 和板级支持能把「从零到闪灯联网」压缩到一个周末能验证的长度——前提是你愿意先把 west 和设备树这关过掉。官方入门 → west 拉齐工作区 → 支持列表里选板 → 跑通 blinky / hello_world → 再加传感器或蓝牙 sample → 最后才写业务。

2026-09-09 12:43:42 371

原创 开源 LVGL:把手机级界面塞进 MCU

这件事必须上 Linux + Qt,还是一份可移植的 C GUI 库就够?LVGL 把路走窄了:专注嵌入式屏上的 UI 引擎。窄的好处是,控件、样式、仿真器和芯片厂示例,能把「从黑屏到可点按钮」压缩到一个周末能验证的长度。PC 仿真跑通 → 选有官方 demo 的板 → 接 tick / flush / 触摸 → 改一页自己的界面 → 再优化刷屏与内存。别第一天就追求手机级特效全开——多数量产 UI,其实是缓冲策略和交互流程调顺的那一下。

2026-09-08 15:35:06 372

原创 Headscale:不用开端口,出门也能访问家里设备

两台设备能 ping 通虚拟 IP,就以为组网完成,接着把访问规则开成「谁都能访问谁」,再拿一台随时合盖的笔记本当全家网关——这是把「隧道通了」当成「谁能进、谁能访已经定好了」。Headscale 让你自己管入网名单;风险不再是路由器开了哪些端口,而是这张网到底让谁进来。)是自己跑的 Tailscale 兼容登记服务器:负责发密钥、告诉设备彼此在哪、执行访问规则,直连失败时再安排中继。真正传数据的,尽量仍是设备之间的 WireGuard,不经过这台服务器。

2026-09-06 15:39:17 296

原创 ESPHome:用 YAML 给 ESP32/ESP8266 生成固件

自己焊了温湿度、继电器、空气传感器,下一步往往卡在「怎么稳定接入系统、怎么 OTA、怎么改配置不重写固件」。用,自动生成并编译 ESP8266/ESP32 固件:传感器、开关、显示屏等组件声明式配置,支持 OTA 升级,适合 DIY 硬件玩家。

2026-09-04 01:20:49 338

原创 开源Frigate:本地 AI 监控,摄像头数据不必上云

监控摄像头一多,很多人会把画面推到厂商云:手机随时看、还有「有人经过」推送。方便的代价是:视频出了你家,算法也在别人那里;订阅一停,历史录像也可能跟着没了。是一个开源的方案:摄像头视频在你自己的机器上分析,常见能力包括人、车、宠物等检测与事件回放。数据默认走本地,而不是必须上云。

2026-09-03 08:13:08 186

原创 开源 OpenMV:给单片机换上机器视觉大脑

这件事必须上 Linux,还是一块会跑 Python 的相机 MCU 就够?OpenMV 把路走窄了:专注单片机上的机器视觉与执行闭环。窄的好处是,示例脚本、IDE 预览、引脚输出,能把「看见 → 动作」压缩到一个周末能验证的长度。买板 → 装 IDE → 跑通色跟踪或 AprilTag → 把坐标打到串口或 PWM → 再考虑 TinyML 和换镜头。别第一天就追求刷榜模型——多数好玩的项目,其实是阈值调稳的那一下。

2026-08-31 12:42:59 373

原创 OOMWOO:开源扫地机器人,自己造

(读作 oom-woo)是一个的家用扫地机器人项目。由美国团队(makerspet.com)发起,目前处在阶段——图纸、代码、模块分工在 GitHub 上持续更新,任何人都可以围观、提 Issue、认领模块参与贡献。你买的扫地机器人,其实不一定完全「属于你」。地图在云端、固件封闭、厂商一旦停服或改策略,设备就可能难用甚至报废——这不是危言耸听,而是不少商业扫地机的常态。与其事后想办法「越狱」一台封闭机器,不如从零造一台的。。由美国团队。

2026-08-25 08:19:59 399

原创 CoreELEC:给机顶盒换上开源影音大脑

客厅那台吃灰的盒子,未必只能当「广告启动器」——换一套专干播放的系统,很多二手晶晨盒已经够用,不必第一天就追旗舰。CoreELEC 把路走窄了:只做 Amlogic,只把 Kodi 播顺。窄的好处是,NAS 里那堆片,终于有个不抢戏的前端——周末晚上想安静投一部片,不用再跟开机广告较劲。这大概才是它最值得的地方。认芯片 → Download Helper 下镜像 → SD 卡试播 → 顺了再考虑写 emmc。论坛里晒单的,不少是几十块收来的老盒。

2026-08-24 13:08:40 319

原创 Linux 小电视:稚晖君的开源桌面终端,从 6 层板到 Quark

学嵌入式、OpenWrt 或板级 Linux 时,常会卡在同一件事:开发板能跑系统,但「从原理图到驱动、再到能用的整机」这条链路很少被完整摊开。整理稚晖君(彭稚晖)的——一台外形像 B 站小电视、内核却是完整 ARM Linux 的迷你终端;后续核心板演化为开源。说明:稚晖君后来还有(ESP32 + 分光棱镜)。本文说的是,二者不是同一项目。

2026-08-23 13:58:08 405

原创 openwifi:把 Wi-Fi 芯片「开源」

openwifi不是给普通用户刷机的系统,而是把 Wi-Fi 协议摊开的研究平台。OpenWrt 打开操作系统,openwifi 打开的是芯片内部。用 Zynq + AD9361,可以把 802.11a/g/n 做成 Linux 里一张能跑 hostapd 的网卡。代价是停在 Wi-Fi 4,工具链重,频谱法不能当儿戏。CPU 侧的开源已经很多了。空口这一侧,openwifi 给的是一份能上板、能改寄存器的 802.11。说明:板表随上游更新;本文为技术科普。过空口须遵守无线电管理规定。

2026-08-19 09:55:01 402

原创 SimpleDNS 源码学习笔记:几百行 C 搞懂 DNS 报文

学完 socket 网络编程之后,写过 HTTP、FTP 这类文本协议,往往还想接触一种「二进制报文」的典型协议。整理了一个很小的项目——用 C 写的教学用 DNS 服务器,核心基本就在一个main.c里(大约五百行量级),专门用来理解 DNS 查询与应答是怎么拼出来的。

2026-08-16 17:17:01 239

原创 Tinyftp 源码学习笔记:3000 行 C 实现的 FTP 服务器

学习网络编程时,在 echo、小聊天室之后,需要一个更接近真实服务的练习项目:能对接标准客户端,代码量又别太大。本次笔记整理的是——用 C 实现的简易 FTP 服务器。体量约三千行,README 中说明参考过 vsftpd。下文按阅读顺序记录主要结构与要点。

2026-08-16 10:34:00 458

原创 刚插上网线,电脑怎么知道自己的 IP?

【多懂一点】这也是为什么手机开热点、家里换路由后,你的电脑 IP 常常跟着变——发号的人换了,号段规则也可能换了。【多懂一点】如果卡在转圈,优先怀疑:网线/协商、路由器 DHCP 是否开启、地址池是否发完、上级网络是否异常。【多懂一点】所以系统里“详细信息”那一栏,往往不是电脑凭空知道的,而是 DHCP 一次性下发的配置。到了 IPv6,除了类似的自动配置,还有一种常见方式:路由器先通告网段前缀,电脑再据此生成地址。DHCP 在家里发的,多半是私网地址,比如 192.168.x.x。

2026-08-10 10:06:56 464

原创 fping组件4.0版本使用经验总结

fping是一个用于发送 ICMP ECHO_REQUEST 数据包到网络主机的工具,类似于ping命令,但它可以同时 ping 多个主机。fping通常用于网络监控和批量测试主机的可达性。

2026-05-25 11:24:51 269

原创 DNS诊断支持指定接口

【代码】DNS诊断支持指定接口。

2026-02-04 15:18:21 119

原创 dig使用

【代码】dig使用。

2026-01-09 08:21:17 152

原创 tomato代码随笔

是下面的代码把对应的二进制和库等install到target目录。init进程编译的代码是这个目录。

2026-01-04 00:55:59 113

原创 openwrt 固件xxx_squashfs-sysupgrade.bin怎么打包得到的

openwrt image镜像是怎么生成的

2025-12-28 21:20:06 742

原创 路由器特性——网络状态检测

我们可能会想到直接去ping一下公网IP,然后根据ping得到的结果去判断是否有网络,实际验证下来发现ping的时候没有丢包,实际现网网络情况复杂,有的时候路由器会丢包,如果只是靠ping几个报文,偶然出现了丢了几个包,这个时候基于ping的结果去判断,发现了路由器一会亮红灯,然后又立马亮绿灯,web上面出现了一会打勾,一会打叉,十分影响用户体验。判断我们路由器上行网络通不通,如果有网,就量红灯,没有网络就亮绿灯,同时在路由器web上面显示对应的状态,如果有网络,有打勾,否则就打叉。

2025-12-07 17:19:27 376

原创 如何基于gitee新建仓库

在ubuntu下执行 git clone https://gitee.com/no-regrets-brother/router拉取我们的空的仓库。2.进入如下界面,随便给仓库起个名字,完成后点击创建。3.点击README.md,生成我们的项目介绍。1.点击右上角的新建仓库!4.完成后就得到了我们的仓库了。5.怎么提交代码到我们建立的仓。

2025-11-26 23:25:07 312

原创 路由器特性——终端列表管理

我们家用路由器一般会有一个设备列表界面,可以看到我们接入到路由器的设备,是有线接入还是无线接入(5G或者2.4G),可以看到对应的IP地址和MAC地址是多少,接入的设备名称,其功能还有显示其速率等等。那么我们应该如何实现这样一个功能呢?

2025-11-25 00:51:56 224

原创 memcpy(&(mem->memory[mem->size]), data, data_size)什么意思

memcpy(&(mem->memory[mem->size]), data, data_size);突然没理解,记录一下。

2025-11-14 22:05:22 291

原创 openwrt使用quilt工具制作补丁

就会把build_dir目录下面生成的patch拷贝到/openwrt/lede/package目录下面。要将更新的补丁文件移动到 buildroot(也就是我们的package下面),请在包上运行。以首选格式创建补丁,必须在本地主目录中创建一个包含常见。这个时候就会在该目录下面生成我们的patch目录。就会编译一下我们pach是否会有语法上面的报错。如果差异看起来正常,就执行下面的命令。打印当前当前目录的patch补丁。需要在package下面放这个。

2025-06-29 23:47:46 529

原创 嵌入式Linux应用项目----智能网关

Linux网关的作用在于,通过蓝牙、LoRa、串口、CAN等接口,与哪些无法连接网络的设备建立联系,将它们的数据转发至服务器。这过程中,网关充当了数据的桥梁,将下级设备所产生的数据发送至服务器。网关跟我们的路由器区别是不一样的,路由器是给我们的设备提供网络服务器的,需要设备自身有网络能力,然后通过路由器WiFi 或者有线连接,路由器帮我们把报文转发到互联网。

2025-05-03 20:39:23 1156

原创 preact组件案例的使用

组件是一个可复用的下拉选择框组件,它接收选项列表、当前选中的值以及一个用于更新值的函数作为 props。当用户选择不同的选项时,组件会调用。的函数组件,用于创建一个下拉选择框。的值是整数(如果选项值是整数)。该组件还支持禁用状态。这段 Preact 组件代码定义了一个名为。希望这个解释能够帮助你理解如何使用。函数来更新父组件中的值。

2025-03-10 01:58:17 664

原创 使用openwrt搭建ipsec隧道

刚好手机拍下了日志,把日志往群里发了一下,细心的群友看出了问题点,然后我搜了一下这个函数是在哪个地方定义的,只需要我们去开一下对应的宏就行,然后重新编译了一下版本,发现连接上去了。我们直接去编译一下带ipsec的openwrt的固件,遇到问题也好解决一点,这里我选择的lean大佬的openwrt源码,源码链接如下,在国内我们玩openwrt的玩家基本都在用lean的代码,因为lean的代码适配了国内基本上常见的路由器固件,我们只需要make menuconfig开一下对应产品的宏就可以编译,非常简单上手。

2025-01-26 16:00:06 6198

原创 Linux 自旋锁

spinklock 是内核中提供的一种比较常见的锁机制,自旋锁是“原地等待” 的方式解决资源冲突的,即,一个线城获取看一个自旋锁后,另外一个线程期望获取该自旋锁,获取不到,只能够原地“打转” (忙等待)。由于自旋锁的这个忙等待的特性,注定了它的使用场景的限制-------自旋锁不应该被长时间的持有(消耗CPU资源),一般应用在中断上下文。2.挂起当前进程,调度其它进程执行。

2024-09-19 00:36:30 420

原创 vue 案例使用

加上show-password就行。el-switch 按键的使用。

2024-09-17 21:49:02 600

原创 openwrt wsdd模块介绍

比如,A主机进入局域网,开启了 mDNS 服务,并向 mDNS 服务注册以下信息:我提供 FTP 服务,我的IP是 192.168.1.101,端口是 21。当B主机进入局域网,并向 B 主机的 mDNS 服务请求,我要找局域网内 FTP 服务器,B主机的 mDNS 就会去局域网内向其他的 mDNS 询问,并且最终告诉你,有一个IP地址为 192.168.1.101,端口号是 21 的主机,也就是 A 主机提供 FTP 服务,所以 B 主机就知道了 A 主机的 IP 地址和端口号了。

2024-09-16 19:40:31 1711

原创 mtk7628 网口灯问题和mtk7688刷机问题

修改为一样再次编,发现现象一致,插入网线到lan口,网口灯同样不会亮。差异点还剩下,网口OK的wuya产品,多执行了ethmode wllll,设置为五网口模式。查看代码,该指令会去设置寄存器,reg w 10000064 0x0,执行改指令后,验证了插入网线,网口灯就会亮了。对比了ok的代码,先对比设备树,未看到网口相关的GPIO。是不是还有哪里的脚本会去操作GPIO,尝试删掉了led相关shell代码,以及对应的leds_gpio .ko。继续查看网口相关代码,加打印,未看到有操作网口的灯。

2024-09-16 19:06:13 828

原创 Linux 网络设备驱动

test0就是我们的驱动。

2024-08-12 02:15:21 420

原创 Linux桥转发经过的netfilter钩子点

桥转发:在链路层,根据报文的目的MAC地址进行报文转发,我们也叫二层转发。进行二层转发的一般叫网桥(bridge), 进行二层转发的设备可以是一台设备,比如我们的交换机,而我们这里的桥转发,就是软件实现的交换机。ageing timer: 设备的老化时间,当我的设备拔掉网线,或者断开WiFi的时候,这里的老化时间就会增加,达到一定阈值就会删除表项(FDB表),不同设备时间有差别,这个是Linux内核实现,可以修改;这样三点经过的钩子点是不同的,在我们桥转发,也会有这样的钩子点;addr:设备的mac地址。

2024-08-11 18:32:51 1404 2

原创 linux 内核常用的debug

默认情况下 printk_ratelimit 的值是 5 ,printk_ratelimit_burst 的值是 10。Linux内核就有这么一套机制,我们仅需调用一个接口,并根据接口的返回值来决定是否持续打印我们的信息。这个接口的内部会自动帮我们判断我们即将要打印的信息是否过于频繁。是的,就是这么简单。这个 printk_ratelimit() 函数是定义在 <linux/printk.h>上的。这个函数的机理是会判断我们的打印的频率的,即它会限制这条打印在指定时间间隔内最多只能出现指定次数条。

2024-08-11 02:20:52 600

原创 openwrt 使用ftace工具追踪协议栈转发流程

如果/sys/kernel/debug/tracing没有,可以挂载。

2024-08-08 03:50:43 644

原创 openwrt 性能工具perf和cpu占用查看工具sysstat编译及使用

openwrt下使用perf工具,查看当前系统调用栈情况;以及mpstat -P ALL 1 查看当前cpu占用情况

2024-08-07 23:11:22 2045

原创 openwrt MTK7621关闭硬加速和编译命令

经实测,开硬件转发后跑100M带宽CPU占用为0%,但是上行跑满100M后ping延时增加明显。现在ramips已经切换到4.14了,支持offload了,而且MT7621支持硬件NAT!另外这个和mwan3兼容,工作正常!不存在SFE和mwan3不兼容的问题了。2018年4月7日更新。

2024-06-09 18:36:33 2196

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除