-
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...