-
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 ... -
统计FreeRTOS中各个线程的处理器利用率
大约是在一年前,我在工作中遇到了需要分析嵌入式系统性能的需求,需要查看系统在关键时间点上,部分任务是否存在执行时间过长导致系统实时性能降低的情况。我在基于FreeRTOS的系统中设计了一段非侵入式的代码,能够获取到各个线程实时的处理器利用率,进而分... -
在RTOS中如何优雅的处理Fault异常
ARM处理器下的Fault异常ARM处理器当发生异常事件后就会暂停当前程序的运行,处理器进入异常模式,响应一个来自处理器内核或者外设的中断请求。 这里想要处理的Fault异常就是ARM处理器多个异常中的一类,以Cortex-M7内核的ARM处理器为例... -
SVC系统调用的编程使用方法
SVC称为系统服务调用(SuperVisorCall),异常类型为11,通过svc指令可用触发异常,SVC在触发异常后必须立即得到相应(触发异常后在执行异常前不能执行其它代码),除非有更高优先级的异常在执行。 对于可靠系统而言,可以使用SVC异常实现... -
ARM嵌入式开发中的栈回溯机制
两种ABI规范根据编译器的实现不同,存在两种ABI机制,分别为APCS(ARM Procedure Call Standard)和AAPCS(ARM Archtecture Procedure Call Standard)。两种机制存在明显的区别,且... -
常见的字符串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...