标签 C 下的文章

对于嵌入式newlib中printf的一个小思考

最近在做一个关于RISCV嵌入式项目的开发,RISCV平台用的是一个picorv32的一个开源小核,代码只有不到三千行,但是功能基本完备,非常适合在FPGA中做一些和控制相关的操作。为了程序开发方便,我在编译CPU程序的时候,直接使用了newlib来实现一些标准的C库程序,这样虽然程序效率不高,好在常用的C库程序不需要单独开发,我们只需要将我们的精力集中在应用程序开发上就好,并且在程序测试的...

继续阅读 »

TrustZone中中断配置引发的一个问题

我们在前面文章中已经简单的写到,TrustZone模式下,中断是可以自由的配置产生Secure中断还是Non-Secure中断,这个可以在NVIC->ITNS一系列寄存器中进行配置,现在我们就遇到了这样一个问题。问题描述这个问题也是在测试中发现的,具体是在测一个memory保护模块时产生的。Memory保护模块可以让用户自主的配置一个Memory或者外设是Secure还是Non-Sec...

继续阅读 »

TrustZone基本环境的搭建

在前面文章中,我们已经简单介绍了TrustZone相关的一些基本知识,包括S,NS,NSC空间的划分,S和NS之间的调用和跳转等等。另外对于TrustZone程序的编写,以及如何编写支持Non-Secure Call的函数,如何在Secure模式下面调用Non-Secure函数等等。今天我们来聊一聊IAR环境下面TrustZone和CORE中一些相关寄存器的配置。内存地址划分为了实现S,NS...

继续阅读 »

Cortex-M FPU的一点点小问题

FPU全称Float Point Unit,即浮点运算单元,是CPU中针对浮点运算进行加速的单元,在Cortex-M系列CPU中,FPU是一个可选选项,引入FPU之后可以有效加速浮点运算速度,提高CPU性能。理论上是这么个说法,但是实际使用中我却遇到了这么一个问题:使用了FPU之后,程序运行时间反而更长,这个着实奇怪。于是我展开了比较深入的Debug,首先FPU的开启和关闭是通过IAR的选项...

继续阅读 »