• 第一次向FreeRTOS内核提交代码

    背景前段时间我在测试wolfSSL中RSA相关代码的时候,发现在进行加密、解密、key生成过程中存在一些性能问题。在分析问题的过程中,发现算法对堆内存的申请非常频繁。生成一对2048长度的公钥和私钥,会进行10万次以上的内存申请。我为了跟踪函数在执行...
  • TLSF与FreeRTOS-heap4对比

    TLSF内存分配器的一些测试和比较FreeRTOS太出名了,就不介绍了。TLSF是一个实时动态内存分配器,可用于嵌入式系统。具有高效的内存使用效率和可预测的响应时间,它具体的工作原理可以参考作者主页上的一些文档。 我运行了一些简单的测试来比较二者的一...
  • 体验国产RISC-V单片机

    RISC-V单片机并不是很新鲜的东西,但因为其市场占有率相比于ARM内核的芯片较小,所以此类芯片并不流行。在此之前,我并没有接触过RISC-V的芯片,趁着春节假期,购得一块国产单片机CH32V307,本着学习的态度,看看该芯片相比于ARM内核有何优...
  • 妙不可言的异常捕获机制

    什么是异常捕获异常捕获是程序员在程序中捕获异常的一种方式,异常捕获可以避免程序崩溃,让程序继续运行。当程序的运行环境收到异常信息后,会自动寻址处理该异常的catch块处理该异常,这个过程被称为异常捕获。 大部分高级的编程语言都提供了异常捕获机制,如J...
  • STM32H7性能问题优化实践

    最近开发一个项目,采用STM32H7单片机,遇到了一个我以前没有遇到过的一个性能问题,通过分析解决该问题的过程让我对STM32高性能数据传输有更加深刻的理解。 关键字:总线、DMA、FIFO 项目背景某项目开发中需要将Linux的数据通过USB...
  • 锁相环(PLL)基本原理

    本文转载自《模拟对话》卷52,文章原作者是Ian Collins,《模拟对话》是亚德诺半导体的一份技术期刊,专注于电子模拟技术的最新进展和应用。原作者和亚德诺半导体对本文保留所有权利。本文不采用 BY-NC-SA 许可协议。PLL被广泛应用于嵌入式...
  • 阻抗匹配

    本人非专业领域工作者,内容难免瑕疵,所以仅供参考。 什么是阻抗匹配?阻抗匹配的概念应用在各个工程领域,但在射频电路领域,阻抗匹配有更加重要的意义。阻抗匹配的目的在于将能量完整的从一个端口传输到另一个端口上,当负载的输入阻抗和源的输出阻抗共轭相等时...
  • FreeRTOS内核窥探

    在多任务环境下调试代码需要一定的代码调试经验,尤其是涉及到异步的任务流程时,单步执行可能无法跟踪到需要的执行流程。如果代码全速运行时虽然可以通过日志来梳理执行流程,但是涉及到FreeRTOS内核中的内容时,一般的日志显得比较鸡肋了。比如说我想检查某...
  • 简单尝试一下ITCM

    ITCM简介在STM32高性能单片机中存在一种供内核专用的内存TCM-SRAM,称为紧耦合内存。为了区分不同的用途,又存在称为DTCM和ITCM的两种不同内存,这两种内存本质上是一致的,但是其背后默认的MPU策略不同,所以一般将DTCM用于存储关键的...
  • 我们需要谨慎操作Cache

    成都有疫情有半个月了,在家办公的日子总是很枯燥的,很多的工作无法正常开展。今天有时间,我尝试对Ymodem的传输效率进行优化并完善其中的一些细节实现,本来一个简单的优化工作却牵出一个严重的问题,并最终折腾了一天才解决。这是一个并不典型的内存溢出问题...
/4