
手把手教你使用VSCode + gdb + gdbserver调试ARM程序
在嵌入式软件开发中,最常用的调试方法之一是使用 log 打印调试和在线调试。关于 log 打印调试的相关文章可以参考:bug解决不了?使用日志法。

hex文件、bin文件、axf文件的区别?
在STM32开发中,经常会遇到hex文件、bin文件和axf文件,这些文件可以烧写到板子上运行。那么这三种文件有什么区别呢?在这之前,让我们回顾一下C语言编译的过程:

工具 | 虚拟串口软件的使用分享
这几天阅读的人相对较少,我先来分享一篇关于虚拟串口软件的简单使用的小文章。在编写串口上位机时,通常需要进行调试工作。一种方式是与下位机进行通信进行测试,另一种方式是通过虚拟串口软件进行测试。

干货 | 分享一个实用的、可应用于单片机的内存管理模块
这次我要与大家分享一个大佬编写的单片机内存管理模块——mem_malloc。这个mem_malloc模块的特点是使用起来不会产生内存碎片,可以高效地利用单片机的RAM空间。

Linux GNU C 与 ANSI C 有什么区别?
Linux 上可用的 C 编译器是 GNU C 编译器,这个编译器是建立在自由软件基金会的编程许可证之上的,因此可以自由地发布和使用。GNU C 对标准 C 进行了一系列的扩展,以增强标准 C 的功能。

如何在MCU上测量代码执行时间?
在众多实时应用领域,例如电机控制、发动机控制以及无线通信等时间敏感的应用中,CPU对代码的执行时间可能只占据不到5%的时间。一般来说,这些嵌入式系统会使用C语言进行编写,开发人员可能会使用汇编语言来优化代码,以满足时间期限的要求。测量部分代码的实际执行时间可以帮助我们找到代码中的时间关键点。

怎么理解FreeRTOS的任务状态机?
前面的文章介绍了如何在FreeRTOS中点亮LED灯,这算是成功地运行了FreeRTOS。要想充分利用RTOS,从黑盒的角度理解调度器的工作原理是非常必要的。当然,如果想要研究RTOS的内部实现原理,可以阅读其内核代码,但个人认为,从使用的角度出发,将内核视为黑盒,并梳理一下概念也是很有用的。