FPU全称Float Point Unit,即浮点运算单元,是CPU中针对浮点运算进行加速的单元,在Cortex-M系列CPU中,FPU是一个可选选项,引入FPU之后可以有效加速浮点运算速度,提高CPU性能。理论上是这么个说法,但是实际使用中我却遇到了这么一个问题:使用了FPU之后,程序运行时间反而更长,这个着实奇怪。于是我展开了比较深入的Debug,首先FPU的开启和关闭是通过IAR的选项...
我的代码我做主
FPU全称Float Point Unit,即浮点运算单元,是CPU中针对浮点运算进行加速的单元,在Cortex-M系列CPU中,FPU是一个可选选项,引入FPU之后可以有效加速浮点运算速度,提高CPU性能。理论上是这么个说法,但是实际使用中我却遇到了这么一个问题:使用了FPU之后,程序运行时间反而更长,这个着实奇怪。于是我展开了比较深入的Debug,首先FPU的开启和关闭是通过IAR的选项...
最近手痒痒,又重新入手了一块ESP32和一块ESP8266开发板,主要是这俩玩意真的是便宜好玩,还可以直接联网,本身只有一块橡皮大小,真的非常适合玩耍。另外ESP的软件资源也是比较丰富的,虽然CPU是一个不怎么主流的处理器,但是各种移植都有,什么LUA呀,micro-python呀,甚至JavaScript都可以在上面跑。不过从我之前玩这块开发板的经验来看,这些移植基本都是在玩一玩的层面上,...
QEMU是一个非常流行的虚拟机软件,支持多种架构CPU的模拟运行,就连我常常使用的VPS实际很多都是QEMU实现的。除了x86架构之外,QEMU支持各种常见的处理器模型,比如ARM,MIPS,PowerPC,RISCV等等,这个也是QEMU区别于其他虚拟机软件的优势之一。最近在学习ARM的时候,因为懒得搞什么开发板,所以就直接在QEMU上搞一下,QEMU还是非常方便的,直接下载ARM相关组件...
最近安全这个词在MCU中被提及的次数越来越多了,因为各种设备联网需求,人们对于信息安全的需求也越来越高,设备安全的要求也越来越高。另外设备厂商对于自己程序的安全性也越来越重视。现在MCU中一般都会支持一个Secure boot的功能,这个功能简单来说就是支持MCU可以识别设备中的固件是不是一个可以信任的固件,如果是信任的估计,那么MCU就会启动这个固件,否则MCU会拒绝执行这个固件。这个过程...
ARMv8-M的TrustZone支持Secure和Non-Secure模式的直接切换。以下几个汇编指令是状态切换中要用到的比较重要的指令:指令描述SGSecure Gateway是状态切换的第一条指令BXNS用于安全模式切换到非安全模式BLXNS用于安全模式下的非安全函数调用一下是状态切换的一个框图:从非安全模式下调用安全模式函数也是允许的,不过entry point的第一条指令必须是SG...