最近依然还是在搞内个HAPS FPGA,在准备ROM更新FPGA bit文件相关工具的时候,碰到了一个非常奇怪的问题。我们先来看看问题是什么样子的。问题描述在更新FPGA bit中ROM的程序的时候,我们一般不能直接用elf文件,因为elf文件中会有一些我们无法用到的偏移信息,所以我们需要用一个自定义的脚本产生相应的mem文件,然后通过这个mem文件更新我们的FPGA bit文件。mem文件...
我的代码我做主
最近依然还是在搞内个HAPS FPGA,在准备ROM更新FPGA bit文件相关工具的时候,碰到了一个非常奇怪的问题。我们先来看看问题是什么样子的。问题描述在更新FPGA bit中ROM的程序的时候,我们一般不能直接用elf文件,因为elf文件中会有一些我们无法用到的偏移信息,所以我们需要用一个自定义的脚本产生相应的mem文件,然后通过这个mem文件更新我们的FPGA bit文件。mem文件...
我们在前面文章中已经简单的写到,TrustZone模式下,中断是可以自由的配置产生Secure中断还是Non-Secure中断,这个可以在NVIC->ITNS一系列寄存器中进行配置,现在我们就遇到了这样一个问题。问题描述这个问题也是在测试中发现的,具体是在测一个memory保护模块时产生的。Memory保护模块可以让用户自主的配置一个Memory或者外设是Secure还是Non-Sec...
在前面文章中,我们已经简单介绍了TrustZone相关的一些基本知识,包括S,NS,NSC空间的划分,S和NS之间的调用和跳转等等。另外对于TrustZone程序的编写,以及如何编写支持Non-Secure Call的函数,如何在Secure模式下面调用Non-Secure函数等等。今天我们来聊一聊IAR环境下面TrustZone和CORE中一些相关寄存器的配置。内存地址划分为了实现S,NS...
FPU全称Float Point Unit,即浮点运算单元,是CPU中针对浮点运算进行加速的单元,在Cortex-M系列CPU中,FPU是一个可选选项,引入FPU之后可以有效加速浮点运算速度,提高CPU性能。理论上是这么个说法,但是实际使用中我却遇到了这么一个问题:使用了FPU之后,程序运行时间反而更长,这个着实奇怪。于是我展开了比较深入的Debug,首先FPU的开启和关闭是通过IAR的选项...
本文翻译自intricacies of writing ARMv8-M Secure codeARM现在已经通过ARMv8-M安全扩展将TrustZone引入到了M系列处理器,TrustZone是一种将重要的代码和数据同普通代码和数据相隔离的一种技术。这种技术可以限制危险或者可利用代码的权限。也可以保证重要的数据和代码与一般代码分离。所以这种技术也依赖Secure代码的可靠性,要想写出可靠的...