-
一个整数无法正常溢出导致的bug
lvg是一款非常流行的图形库,最近在使用它的过程中发现一个有意思的问题,这里做简单记录。话说事情是这样的,我为按钮设计了一个动画,大概是按钮一直沿y轴周期性的往复移动。 123456789lv_anim_t by;lv_anim_init(&... -
简单聊聊LevelX
简介LevelX,一款专为嵌入式存储打造的存储中间件,常与ThreadX等产品协同作业。它为嵌入式实时系统提供了卓越的Flash存储磨损均衡功能,即便独立使用也游刃有余。LevelX能够与各种文件系统和实时系统完美融合,适应多变的应用场景。 Thre... -
移植MicroPython时的一些思考
今年4月份尝试手动将MicroPython移植到自己的平台上,在移植的过程中发现MicroPython的内部模块有大量的底层依赖,这使得移植工作视乎有点庞大。当时基本上仅完成了BASIC_FEATURES等级的移植,相当于完成了最小系统,在REPL可... -
Black Magic Debug与CMSIS-DAP合体
移植Black Magic Probe固件虽然BMP官方已经支持了许多的芯片,但是我决定做一些不一样的尝试,我最开始将Black Magic Probe的代码移植到了STM32H750芯片平台上,希望它较高的主频可以实现更快的调试速度。但实际测试下来... -
C语言宏的图灵完备
这里讨论的C语言宏系统仅关于#define,不包含#include, #if,#ifdef,#elif,#else,#endif等。 C语言宏的可选参数前段时间在某个嵌入式软件项目中涉及一个这样的功能,需要将一个wav音频文件嵌入式到二进制固件中... -
复刻一个BlackMagicProbe
Black MagicBlack Magic Probe是一个内建GDB server的嵌入式芯片调试器,可以用来调试ARM、riscv等单片机。关于该调试器的详细信息可以参考官网网。 克隆版本我基于官方的固件,设计了一个电路板,做了一个自己的版本,... -
一个简单但强大的协程库-PtPlus
去年我基于Protothreads协程库实现了一些有意思的扩展功能以方便使用该协程库。相关的两篇文章可以翻看去年的博客。 更优雅的使用Protothreads协程框架 PT协程的一个小扩展 最近我继续完善了相关的功能,并增加了一些新的功能。实现了... -
我们需要非常谨慎的使用Cache
最近在学习的过程中遇到一个软件上的问题,该问题非常折磨人。 在一个嵌入式软件系统中使用WiFi网络并通过FTP服务读取设备内存储在SD上的文件,就是这样一个看起来非常简单的逻辑,最近在测试过程中出现了一点问题。 发现小概率情况下文件传输会导致系统崩溃... -
在创建FreeRTOS任务时容易忽略的一个问题
面向对象的编程思想经常出现在嵌入式软件开发过程中,通常将一组相关的业务逻辑及其相关联的数据封装为一个实例对象以方便数据和方法的集中管理,尤其是在该实例对象还涉及一个关联的任务时,为了将相关的数据传入线程,将所有的数据封装起来是一种非常合理的操作。下面... -
一个极简的DAPLink
平时我的主要兴趣方向都是嵌入式软件开发方面的内容,但偶尔也做一些硬件相关的内容。我的硬件设计水平一般,仅仅是能够用嘉立创的EDA软件设计一些简单的PCB,焊接能力更是拿不出手😅。 之前我偶然间看到一个别人设计的DAPLink,使用51单片机完成的。...
Keep writing and Keep loving.|