MicroAlloc5 days agohttps://bogdanthegeek.github.io/blog/projects/microalloc/作者通过研究ESP-IDF堆分配器,创建了一个自定义内存分配器(MicroAlloc)。通用堆分配器需要在速度、开销和碎片化之间进行权衡。该实现采用首次适应空闲链表分配器,其元数据结构存储偏移量而非完整指针,以最小化开销(每个分配仅2字节)。嵌入式工程师通常应避免动态分配;静态分配、暂存缓冲区、块分配器和区域分配器是更安全的选择。更多...
The Rust on ESP Book8 days agohttps://docs.espressif.com/projects/rust/book/本指南介绍了在乐鑫产品上进行嵌入式Rust开发,涵盖软件栈、项目生成和工具工作流程。它面向对嵌入式系统感兴趣的Rust开发者,即使没有相关经验,并建议了一些背景知识的额外资源。稳定模块遵循语义化版本控制,但像esp-hal这样的不稳定组件可能会频繁变化,需要仔细跟踪依赖关系。其他资源包括《Rust程序设计语言》、《嵌入式Rust书》、no_std指南,以及针对乐鑫和通用嵌入式Rust的精选列表。更多...
Linux on the Sega 32X. Who needs hardware synchronization primitives anyway?20 days agohttps://cakehonolulu.github.io/linux-on-32x/作者为了提升电路板启动调试技能,决定将Linux移植到Sega 32X平台,这一想法源于过去在联发科手机上调试Android 5.0 Lollipop系统的经历。Sega 32X硬件配备了两个SH2处理器和256KB内存,需要通过创新方案实现移植,例如将闪存卡ROM作为内存使用,并采用软件同步技术支持对称多处理(SMP)。面临的挑战包括工具链问题、内存限制、缺乏硬件同步原语以及缓存一致性问题,最终通过彼得森算法和将68000作为中断路由器得以解决。尽管存在性能限制和大量的调试工作,该项目成功实现了支持SMP的Linux启动,并配备了控制台显示驱动程序和最小化的根文件系统(rootfs)。
An iroh powered smart fana month agohttps://www.iroh.computer/blog/an-iroh-powered-smart-fan本文介绍了如何使用ESP32与Iroh创建一个智能风扇,实现无需云端组件的远程温度感应和风扇控制。内容包括:使用Iroh设置ESP32、添加DHT22传感器、实现用于远程通信的IRPC协议,以及开发用于基于浏览器控制的WebAssembly图形用户界面。项目从一个简单的回声服务器演变为具有完整功能的智能风扇,包括用于设置温度阈值的身份验证功能,并包含3D打印的外壳,形成一个成品。
The Age of Personalized Hardware Is Cominga month agohttps://geastack.com/blog-the-age-of-personalized-hardware-is-coming软件变得越来越个性化,使个人能够为工作和生活构建定制化应用程序。个人硬件设备正在迅速普及,仅可穿戴设备每年就超过6亿台,这得益于ESP32板等廉价组件的推动。关键问题在于谁为这些设备编写软件,因为当前模式限制了用户对设备功能的控制。智能体需要访问设备上的传感器(如摄像头、麦克风)以利用物理环境信息,这要求软件能够在本地运行。更多...
Lightning Memory-Mapped Database Manager (LMDB) 1.0a month agohttp://www.lmdb.tech/doc/LMDB是一个基于B树的嵌入式数据库管理库,提供类似BerkeleyDB的简化API。它使用内存映射文件进行直接数据访问,避免了获取数据时进行malloc或memcpy的需要,从而实现了高性能和简洁性。该数据库完全支持事务处理,具有ACID语义,是线程感知的,并支持跨多个进程和线程的并发读写访问。数据页采用写时复制机制,防止覆盖,确保在系统崩溃后无需特殊恢复即能抵抗损坏。更多...