本文导读
上期讲述了AMetal平台驱动框架中的硬件层,介绍了硬件层的驱动是如何实现及其硬件层接口的定义,逐渐深入了解AMetal平台。接下来向大家介绍配置文件和例程文件的使用,以此可灵活使用相应外设的资源。
每一个MCU上都包含了众多硬件外设资源,只要AMetal提供了对应外设的驱动,就会提供一套相对应的默认配置信息。AMetal支持的任一型号的芯片均按照如下所示的格式来设置硬件外设资源所对应的配置文件,其中xxx代表的是芯片型号。
图1 硬件外设及对应的配置文件
配置文件
配置文件的核心是定义一个设备实例和设备信息结构体,并提供封装好的实例初始化函数和实例解初始化函数。
设备实例为整个外设驱动提供必要的内存空间,实际上就是使用相应的设备结构体类型定义的一个结构体变量,无需用户赋值。在配置文件中,设备实例均已定义,如下以GPIO设备实例为例:
图2 GPIO设备实例
设备信息通常包含以下几个部分:
寄存器基地址:每个片上外设都有对应的寄存器,根据该寄存器的起始地址,就能够操作到对应的寄存器。
中断号:中断号对应了外设的中断服务入口,需要将该中断号传递给驱动,以便驱动使用相应的中断资源。
时钟ID号:时钟ID对应了外设的时钟来源,需要将时钟ID号传递给驱动,以便驱动中可以获取外设的频率及使能该外设的相关时钟。
用户根据实际需求分配内存:由于系统部分资源会存在差异,用户可根据实际情况来设置,避免造成资源浪费。
平台初始化函数:平台初始化函数主要用于初始化与该外设相关的平台资源,如使能外设的时钟,配置相应的引脚等。
平台解初始化函数:平台解初始化函数与平台初始化函数对应,平台初始化使能了时钟等,就可以通过平台解初始化函数将其关闭。
通过设置外设相应的配置文件,以此来实现设备实例化,便于后续驱动文件调用该外设的相关资源。如下所示为外设实例化的流程:
图3 外设实例化流程
工程配置
与板级相关的资源有LED、蜂鸣器、按键、调试串口、延时、系统滴答、软件定时器、标准库、中断延时等,如下所示。上述板级资源均可以通过配置对应的使能/禁能宏来决定系统启动时是否自动完成初始化操作。
图4 板级资源初始化使能/禁能
除此之外,还有一些全局外设,如CLK、GPIO、DMA、INT和NVRAM。由于需要在全局使用,因此在系统启动时已默认初始化,在应用程序使用时,无需再重复初始化。若在某些特殊的应用场合不希望在系统启动时自动初始化某些特定的资源,可设置宏来关闭。如果确定系统不使用GPIO资源或希望由应用程序自行完成初始化操作,则可以将该宏的值修改为0。
图5 部分外设初始化使能/禁能
通用例程文件
AMetal中examples文件下的demo分为四类,分别放到board、components、soc、std这四个文件中的demo源程序是给用户的一个使用范畴,同时头文件包含了详尽的注释说明,操作步骤,实验现象等。因此,大家在使用相关内容的时候可以先查看对应的demo文件,就可以快速上手相应的外设资源。
board文件下对应板级例程,调用驱动层和硬件层的例程,控制评估板的各个硬件外设;
components文件下对应组件例程,包含一些常用芯片(如MX25xx、EP24Cxx等)的例程和服务组件例程;
soc文件下对应硬件层例程,通过调用硬件层函数实现,不同系列的soc对应不同的相关硬件层例程;
std文件下对应驱动层例程,调用驱动层的函数和标准接口来实现的。
除board、soc外,其他文件中(components、std)的demo是通用的,不与具体的硬件绑定,可以应用在多个硬件平台中,其正常运行时需要将入口函数的参数传入即可。如下所示为通用demo的示例:
图6 通用demo示例
board文件下的demo可以直接在相应的硬件评估板上运行,其实现往往直接调用通用demo的入口函数,并根据硬件板的实际情况,准备好通用demo的必要条件。如下所示为可以直接在ZLG116上运行的demo:
图7 可以在硬件板直接运行的demo
以上就是AMetal驱动框架详解之配置文件与例程文件的全部内容,主要为大家介绍配置文件和例程文件的使用,也便于后续可以熟练使用AMetal提供的示例文件。
-
芯片
+关注
关注
455文章
50732浏览量
423247 -
硬件
+关注
关注
11文章
3315浏览量
66203 -
驱动框架
+关注
关注
0文章
14浏览量
4033
发布评论请先 登录
相关推荐
评论