项目地址:WillOS/WillOS/Inc/allocator.h at master · LieWill/WillOS 返回总导读:关于我独立开发 RTOS 这一件事 在前两章中,我们已经解决了“如何分配土地(Allocator)”和“如何排班(Scheduler)”的问题。但是,如果系统里有两个任务同时想去写同一个串口,或者任务 A 必须等任…
项目地址:WillOS/WillOS/Inc/allocator.h at master · LieWill/WillOS 返回总导读:关于我独立开发 RTOS 这一件事 如果说 Allocator 是“地产商”,Context 是“瞬移魔法”,那么 Scheduler(调度器) 就是整个操作系统的灵魂——它是一个高效、严谨的“…
项目地址:WillOS/WillOS/Inc/allocator.h at master · LieWill/WillOS 返回总导读:关于我独立开发 RTOS 这一件事 在 RTOS(实时操作系统)的世界里,内存分配器(Allocator)就像是一个地产开发商。它负责将物理内存这片“荒地”规划成整齐的“地块”,让系统中的其他组件(特别是接下来的调…
项目地址:WillOS/WillOS/Inc/allocator.h at master · LieWill/WillOS 返回总导读:关于我独立开发 RTOS 这一件事 欢迎来到 WillOS 核心机理深度解析系列。对于刚入门 RTOS 的开发者来说,理解“多任务”不应停留在概念层面,而应深入到 Cortex-M 硬件特性 与…
如果你点开这篇文章,大概率也是一名在嵌入式深坑里摸爬滚打,或者对“底层操作系统到底是怎么跑起来的”充满好奇的开发者。 很多时候,我们习惯了直接调用 xTaskCreate 或者 rt_thread_startup,就像驾驶一辆已经调教好的跑车。但作为一名开发者,总有那么一个瞬间,想亲手拧开底盘的螺丝,看看那些活塞、连杆…
在 Orange Pi 上使用 V4L2 采集 JPEG 图像时遇到的问题分析与解决方案 问题现象 在开发 V4L2 摄像头采集程序时,遇到了两个看似无关却有共同根源的问题: 现象1:保存的 JPEG 图像无法打开 $ file 1.jpg 1.jpg: data # 应该显示 "JPEG image data" 使用 hexdump&n…
摘要:在高性能嵌入式平台(如 RK3588)上开发 USB 驱动时,你是否遇到过画面撕裂、诡异色块?本文记录了一次使用 libusb 开发 UVC 摄像头的完整调试过程,揭示了 USB Bulk 传输中一个极易被忽视的“千层饼”陷阱。 🎬 案发现场 最近,我在 Orange Pi 5 Pro(基于 Rockchip RK3588S)上使用 libu…
幽灵 Bug 的真相:深入解析多线程内存可见性 在嵌入式开发和底层驱动编写中,我们经常会遇到各种离奇的问题。今天要复盘的,是一个非常经典的“海森堡 Bug”案例——它在观察时消失,不观察时出现。通过这个案例,我们将深入探讨 C 语言的未定义行为以及多线程环境下的内存可见性问题。 本文将专门剥离出这一核心难点,深度剖析为什么在多核 CPU 时代,“写…
被一个奇怪的报错困扰了一个晚上,结果是一个注释空格引发的,遂写一文总结一番 🔴 问题一:变量赋值中的尾随空格(本次遇到的问题) 问题描述 OBJ_DIR = Obj # 文件输出目录</em>OBJ_DIR = Obj # 文件输出目录</em> 表面上看:OBJ_DIR 的值是 Obj 实际上:OBJ_DIR…
嵌入式实战笔记:破解数据传输中的“幽灵” 工程实战:破解数据传输中的“伪装者”与“衔尾蛇” 在嵌入式开发中,代码跑通只是第一步。真正的挑战往往藏在边界条件里:当传感器发来的数据长得像协议头怎么办?当环形缓冲区写到尽头时,数据去了哪里?今天我们来拆解两个经典的工程难题。 1 数据透明性:谁是真正的包头? 假设包头是 0xAA。如果传感器采集的数据里恰…