《痞子衡嵌入式半月刊》 第 113 期

痞子衡嵌入式半月刊: 第 113 期

这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。

本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。

上期回顾《痞子衡嵌入式半月刊: 第 112 期》

唠两句

历史上的今天:1981年12月8日,中国自行设计制造的大型喷气式客机“运-10”试飞成功。

本期共 4 个项目,希望对你有帮助!

项目类

1、USB-SERIAL-L - 设计先进的USB转串口的开源硬件

USB-SERIAL-L 是一个 USB 转串口的开源硬件,其比大多数板更先进,不仅具有 Tx/Rx 引脚,还具有 CTS/RTS 引脚,支持高达 3 Mbps 的速度,以及从 0.65V 到 5.5V 的可调电压,以满足各种板的需求。目前版本 1.1,KiCAD 格式和 PDF 格式原理图和硬件设计文件、外壳的 3D 文件和文档完全开源。

2、JesFs - 专门为小型低功耗设备设计的文件系统

JesFs(Jo's Embedded Serial File System)是一款专为资源受限的嵌入式系统设计的轻量级串行 NOR 闪存文件系统。它具备极小的内存占用、强大的安全性以及优异的性能,完美适用于各种物联网应用场景,例如数据采集、事件记录和固件更新等。

JesFS 的一个基本特性是:可以把嵌入式系统的文件通过互联网自动地镜像存储到服务器,服务器因此具有嵌入式文件系统的一个实时更新的副本。这个特性也可以用在分钟级获取数据的场景,但是为了降低功耗,一般不会频繁通过互联网对比更新服务器副本(通常几小时一次)。 即使传输了新文件、远程升级了固件,只要有需要,JesFS 就可以通过特殊标志位(时间戳和 CRC32 哈希校验)很容易地从服务器上找回文件。

3、Spiffs - 专门为嵌入式设备设计的轻量级文件系统

Spiffs (SPI Flash File System) 是一个专门为嵌入式目标上的 SPI NOR 闪存设备设计的轻量级文件系统。它针对小型嵌入式设备的特点进行了优化,特别是在内存资源有限的情况下表现出色。Spiffs 的设计目标是:在最小化 RAM 使用量的同时,提供 POSIX 风格的 API 接口,方便开发者使用。

Spiffs 的主要功能包括:

• 极低的RAM占用: Spiffs的设计理念是最大限度地减少RAM的消耗,它使用静态大小的RAM缓冲区,与文件数量无关,非常适合内存资源紧张的嵌入式系统。
• 类POSIX API: Spiffs提供了一套与POSIX标准兼容的API接口,包括open、close、read、write、seek、stat等常用函数,方便开发者快速上手和进行移植。
• 跨平台兼容性: 理论上,Spiffs不仅可以运行在SPI闪存上,也可以运行在微处理器的其他嵌入式闪存上,具有良好的平台兼容性。
• 多配置支持: 在同一个目标设备上,甚至在同一个SPI闪存设备上,可以运行多个Spiffs配置,灵活地管理不同的数据存储空间。
• 静态磨损均衡: Spiffs内置了静态磨损均衡算法,可以有效地延长闪存的使用寿命。
• 文件系统一致性检查: Spiffs具备内置的文件系统一致性检查机制,确保数据的完整性和可靠性。
• 高可配置性: Spiffs提供了丰富的配置选项,可以根据实际需求进行定制。

4、modm - 精简高效的嵌入式库生成工具

modm是一个用于构建定制 C++23 嵌入式库的工具箱。它能够生成启动代码、硬件抽象层 (HAL) 及其实现、通信协议、外部设备驱动程序和板级支持包 (BSP)。modm 的模块化和可定制化流程允许你根据自身需求进行微调,极大简化嵌入式开发的复杂性。

modm 的主要功能包括:

• 快速搭建项目骨架: 自动生成启动代码、HAL、驱动程序等,减少重复性工作,加快开发速度。
• 优化资源利用: modm 致力于最小化代码大小和内存消耗,特别适合资源受限的微控制器。它在 HAL 中避免内存分配,并提供轻量级的库,如 printf 实现和部分 libstdc++ 实现。
• 提高代码可移植性: 支持数千种来自 Microchip、STMicroelectronics 和 Raspberry Pi 的 AVR 和 ARM Cortex-M 微控制器,并与多种构建系统兼容,例如 SCons、CMake 和 Makefile。
• 简化外设操作: 提供了丰富的跨平台外设接口,包括 GPIO、中断、I2C、SPI、UART、CAN、以太网、ADC、DAC 等,并包含许多常用传感器的驱动程序。
• 增强代码可靠性: 拥有数百个单元测试,并进行持续集成测试,确保代码质量和稳定性。集成了一些有用的第三方软件,如 FreeRTOS、TinyUSB、FatFS 等。
• 高效的调试和日志系统: 提供基于 IOStream 和 printf 的调试和日志系统,方便开发和调试过程。
• 先进的并发模型: 支持协作式无栈 protothreads 和可恢复函数,以及协作式有栈 fibers 和调度器,方便进行并发编程。

欢迎订阅

文章会同时发布到我的 博客园主页优快云主页知乎主页微信公众号 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

原创作者: henjay724 转载于: https://www.cnblogs.com/henjay724/p/18593841
《编译原理》是计算机科学中一门极为重要的课程,主要探讨如何将高级程序设计语言转换成机器可执行的指令。清华大学的张素琴教授在这一领域有着深厚的学术造诣,其编译原理课后习题答案对于学习者而言是非常珍贵的资源。这份压缩文件详细解析了课程中所涉及的概念、理论和方法的实践应用,目的是帮助学生更好地理解编译器设计的核心内容。 编译原理的核心知识点主要包括以下几点: 词法分析:作为编译过程的首要环节,词法分析器会扫描源代码,识别出一个个称为“标记”(Token)的最小语法单位。通常借助正则表达式来定义各种标记的模式。 语法分析:基于词法分析产生的标记流,语法分析器依据文法规则构建语法树。上下文无关文法(CFG)是编译器设计中常用的一种形式化工具。 语义分析:这一步骤用于理解程序的意义,确保程序符合语言的语义规则。语义分析可分为静态语义分析和动态语义分析,前者主要检查类型匹配、变量声明等内容,后者则关注运行时的行为。 中间代码生成:编译器通常会生成一种高级的中间表示,如三地址码或抽象语法树,以便于后续的优化和目标代码生成。 代码优化:通过消除冗余计算、改进数据布局等方式提升程序的执行效率,同时不改变程序的语义。 目标代码生成:根据中间代码生成特定机器架构的目标代码,这一阶段需要考虑指令集体系结构、寄存器分配、跳转优化等问题。 链接:将编译后的模块进行合并,解决外部引用,最终形成一个可执行文件。 错误处理:在词法分析、语法分析和语义分析过程中,编译器需要能够检测并报告错误,例如语法错误、类型错误等。 张素琴教授的课后习题答案覆盖了上述所有核心知识点,并可能包含实际编程练习,比如实现简单的编译器或解释器,以及针对特定问题的解题策略。通过解答这些习题,学生可以加深对编译原理的理解,提升解决问题的能力,为今后参与编译器开发或软件工程实践奠定坚实的基础。这份资源不仅是学习编译原理的有力辅助材料,也是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值