• FreeRTOS上实现swap机制

    为什么需要引入SWAP机制在小容量SRAM的单片机上使用RTOS是一种很尴尬的事情,因为每个任务都需要分配独立的线程栈,栈空间少则512字节,复杂任务的栈空间则达到了几千字节的大小,这对于仅有8k字节SRAM的单片机来说显得压力太大了,两三个任务就导...
  • 内存陷阱,一种内存调试方法

    需求场景在一个多任务系统中,当一个全局可访问的数据出现了异常,如何排查问题呢?由于在多任务环境中,各个任务并行运行,一般的单步跟踪调试很难定位问题。逐个屏蔽代码又可能会导致问题无法复现。使用内存断点是比较好的方法,但是大多数集成开发环境对该功能的支持...
  • nRF52x运行蓝牙协议栈+FreeRTOS的原理

    之前有个研发的产品为了满足蓝牙连接的需求,选择了nRF52840这个芯片,它的蓝牙协议栈是一种类似使用动态库的方式进行调用,官方仅仅给出了协议栈的二进制包(SoftDevice),并给出了动态调用的方法,其调用的关键就是使用ARM单片机的SVC调用...
  • Exception Failure - Breaking the STM32F1 Read-Out Protection

    Marc Schink & Johannes Obermaier Tuesday, 17 March 2020 The firmware of microcontrollers usually contains valuable data ...
  • 在RTOS中如何优雅的处理Fault异常

    ARM处理器下的Fault异常ARM处理器当发生异常事件后就会暂停当前程序的运行,处理器进入异常模式,响应一个来自处理器内核或者外设的中断请求。 这里想要处理的Fault异常就是ARM处理器多个异常中的一类,以Cortex-M7内核的ARM处理器为例...
  • SVC系统调用的编程使用方法

    SVC称为系统服务调用(SuperVisorCall),异常类型为11,通过svc指令可用触发异常,SVC在触发异常后必须立即得到相应(触发异常后在执行异常前不能执行其它代码),除非有更高优先级的异常在执行。 对于可靠系统而言,可以使用SVC异常实现...
  • 常见的字符串Hash算法

    常见hash算法的碰撞概率统计 10万 50万 100万 500万 1000万 一亿 1000万次的平均执行时间 一亿次的平均执行时间 一亿次的平均长度 BKDRHash 0.00002 0.000112 0.000251 0.00118...
  • Recommended C style and coding rules

    This document describes C code style used by Tilen MAJERLE in his projects and libraries. Table of Contents The single most i...
/4