学习到一半的思考

今天在看STM32F4的DMA功能,看到其框架图的时候,愣了一下,反思一想,自己对于32的系统构架其实都不够了解,于是又前前后后查了一个多小时资料去了解这些事情。

首先,我们要了解STM32F4的芯片架构,如图所示:

我们使用的M4内核是由ARM设计的,但是他不生成,只负责卖技术给ST,TI等一系列的芯片厂商,让这些厂商来生产芯片,所以这些片上外设以及整体框架都是由他们负责的。

说到这里,我们肯定就会有疑问了,如果在内核相同的情况下,但是每个公司的外设都不一样,这样在不同的芯片厂商的芯片上移植程序岂不是非常困难了...所以考虑到不同厂商在cotex-微控制器软件的兼容性问题,ARM公司就和这些厂商一起订了一个标准,即CMSIS标准(Cotex-microcontroller Software Interface Standard),如图所示:


说到CMSIS标准,其实可以理解为在内核上软件抽象层,其中最主要的就是CMSIS核心层,它包括了:

1:内核函数层:其中包含用于访问内核寄存器的名称、地址定义,主要由 ARM 公司提供,

比如我们使用的core_cm4.h,核内设备函数层,进入M4的接口。

比如我们用的misc.c 提供与M4有关的NVIC和SYSTICK的驱动代码。


2:设备外设访问层:提供了片上的核外外设的地址和中断定义,主要由芯片生产商提供。

比如我们常看见的stm32f4xx_gpio.c等外设文件。

我们可以看到它在硬件层MCU和用户代码(操作系统)中间,提供了与芯片厂商无关的硬件抽象层。

可以为接口外设、实时操作系统提供简单的处理器软件接口,屏蔽了硬件差异,这对软件的移植是

有极大的好处的。32的库就是按照这个标准建立的。


32的标准库也就是针对stm32提供的函数接口,即API(Application Program Interface),开发人员

调用这些函数接口来配置寄存器,这样方便我们移植,也利于维护。


接下来我们来看看STM32F4系列的总线架构图


 

由图片中可以看出,他有8根主控总线:

I总线(指令总线),D总线(数据总线),S总线(系统总线),DMA2_p总线(外设总线),DMA1内存总线,DMA2内存总线以及以太网_DMA总线和USB_DMA总线。

7根受控总线:

内部FLASH I总线, 内部FLASH D总线,内部SRAM1总线,SRAM2总线,SRAM3总线,AHB1外设总线 和 AHB2外设总线---FSMC。


我们可以从上图来看出,DMA1外设端口是没有连接AHB1总线的,所以他就不能访问所有挂在AHB1上的外设,但是他能够访问APB1上的外设。

为什么DMA1不能使用MEM TO MEM模式呢,因为要实现这种模式,俩端口都必须能访问MEM,但是,DMA1外设端口是不能访问MEM的。所以他就不行。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值