0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AMetal开发通用外设的流程与规范

科技绿洲 来源:立功科技 作者:立功科技 2022-04-27 16:58 次阅读

上期讲述了搭建工程让MCU在AMetal平台运行起来,为后续开发外设驱动奠定基础。接下来可以进入下一步的通用驱动外设开发工作,本次向大家介绍开发通用外设的一般流程与规范。

外设驱动开发的过程主要包括硬件层驱动函数的编写、驱动层函数的实现、通用示例程序的编写及其相关外设的配置文件开发。

poYBAGJpBR2Ad8NiAAB4ZsU8Nl0907.png

图1 AMetal架构

基于AMetal驱动架构,带大家来了解一下通用外设驱动开发的主要流程,如下所示:

了解标准函数接口

对于通用MCU而言,AMetal提供了各个通用外设的标准层接口开发者不需要额外开发,只需了解标准外设的接口函数即可。通用外设一般是多实例设备,标准接口层函数的第一个参数均为外设标准服务操作句柄handle。虽然标准函数接口不需要用户编写,但用户还是需要充分了解标准接口层,才能够清楚驱动层需要开发的内容——即如何实现函数接口等。AMetal提供的所有标准层驱动文件均在{SDK}\interface路径下,标准接口层包含的文件如下所示:

pYYBAGJpBSaAA90MAADQRaECtB0461.png

图2 标准接口层文件

通用外设硬件层开发

通过对标准层的了解,我们知道标准层实现的函数功能,以及需要驱动层提供的函数。但驱动层并不是凌空搭建的,驱动层介乎于HW层和标准接口层之间,简单来说就是调用HW层的函数来提供给标准层,所以在完成驱动层开发前,要先来实现HW层的接口函数。

HW层对应到具体的外设,其提供的API基本上是直接操作寄存器的内联函数,其效率最高,内联函数直接定义在.h文件中。硬件层中所有的符号及函数命名均以amhw_/AMHW_开头。通常情况下,HW层只有.h文件,只有当某些硬件功能设置较为复杂时,才提供对应的非内联函数,存放在.c文件中。

开发HW层前,我们需要根据芯片用户手册,来大概了解一下该芯片外设的寄存器。从而对外设功能有一定的了解之后再开始开发,其流程如下:

添加寄存器列表,以确保硬件层接口的完整和准确性;

编写寄存器相关操作函数:对该外设的所有寄存器提供操作函数;

查漏补缺:检查补充所需功能函数;

添加指向寄存器块的指针,方便用户或驱动层使用。

以ZLG116为例,如下图所示为开发通用外设过程中各个驱动文件所存放的位置。

pYYBAGJpBTOADO4iAAC1SlFkTZs093.png

图3 芯片外设驱动文件

外设驱动层开发

通过对标准接口层文件的分析与理解,清楚了驱动层需要为标准接口层提供哪些具体内容,加上驱动层本身应该提供给用户的初始化函数和解初始化函数。因此,外设驱动层需要编写的总体内容如下:

编写好标准接口层需要使用的基本函数;

驱动初始化函数;

驱动解初始化函数;

外设用户配置文件开发。

由于用户调用驱动层的初始化函数时,需要传入设备地址和设备信息地址作为参数。为了方便用户使用,我们需要将设备变量和设备信息常量定义好;从而用户调用驱动的初始化函数时,只需要使用已经定义好的设备变量和设备信息常量即可,不需要再额外定义。因此,我们把这个用于存放设备变量和设备常量信息和驱动初始化函数的文件称之为外设用户配置文件。通常情况下,AMetal平台为每一个外设均提供了一个独立的用户配置文件。

开发完驱动层我们知道,用户使用一个外设的过程是,先调用驱动初始化函数,该函数返回一个handle,后续的所有操作,用户直接使用该handle作为参数调用标准接口层函数即可。这样一来,可以实现数据与代码的分离,即达到驱动复用的效果。以I²C外设为例,在操作该外设时,四个I²C的操作方式完全一样,仅仅是引脚、中断号、寄存器基地址不同的区别而已:

pYYBAGJpBTyAZiBgAACKIswUeo0032.png

图4 驱动的可复用性

外设例程文件开发

开发完驱动文件之后,最后是编写例程文件。例程文件开发主要分为两个部分:基于硬件层实现的HW例程、基于标准层实现的STD例程以及在板测试的板级例程。为了将外设所有的例程(包括HW例程和STD例程)统一管理,例程统一存放{SDK}\examples\board\xxx_core\peripheral_name路径。HW层的实现与标准层的实现,在文件上的命名,分别采用hw与std作为关键字。到了这一步,我们就需要依托硬件测试验证我们的代码功能,最终即可实现通用外设的开发。

以上就是基于AMetal开发通用外设的流程与规范的全部内容,相信大家熟悉了AMetal平台上开发MCU通用外设的流程。

审核编辑:彭菁
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5308

    浏览量

    119975
  • 函数
    +关注

    关注

    3

    文章

    4303

    浏览量

    62408
  • 代码
    +关注

    关注

    30

    文章

    4741

    浏览量

    68319
  • ametal
    +关注

    关注

    2

    文章

    24

    浏览量

    11392
收藏 人收藏

    评论

    相关推荐

    关于ametal_led通用接口的设计技巧分享

    第八章为深入理解AMetal,本文内容为8.1 LED 通用接口。
    的头像 发表于 11-23 07:52 6611次阅读
    关于<b class='flag-5'>ametal</b>_led<b class='flag-5'>通用</b>接口的设计技巧分享

    学好ametal_通用数码管接口技术,做项目事半功倍

    第八章为深入理解AMetal,本文内容为8.6 通用数码管接口。
    的头像 发表于 11-30 08:31 3021次阅读
    学好<b class='flag-5'>ametal</b>_<b class='flag-5'>通用</b>数码管接口技术,做项目事半功倍

    硬件开发流程规范 11页

    硬件开发流程规范 11页
    发表于 12-19 10:23

    硬件开发流程规范 贝尔丰 48页

    硬件开发流程规范 贝尔丰 48页
    发表于 12-19 10:28

    硬件开发流程规范

    硬件开发流程规范
    发表于 12-19 10:31

    灵动微电子MM32 MCU正式入驻AMetal平台

    ,后续将支持MM32全系列MCU,欢迎您的试用。灵动微电子成立于2011年,是中国本土领先的通用32位MCU产品及解决方案供应商。公司基于Arm Cortex-M系列内核开发的MM32 MCU产品拥有F
    发表于 01-16 11:38

    灵动微课堂 (第122讲) | 基于MM32 MCU的OS移植与应用:AMetal平台新建工程

    做最原始封装;驱动层在硬件层的基础上进一步封装,简化对外设的操作;标准接口层提取出了一套标准API接口,不仅适用于AWorksOS开发平台也适用于其他操作系统。图1 AMetal构架同时AMe
    发表于 05-22 17:04

    灵动微课堂 (第123讲) | 基于MM32 MCU的OS移植与应用:AMetal LED灯控制

    MDK5.18安装指南》或立功科技的《面向AMetal框架和接口的C编程》的1.2 搭建开发环境章节,在这里就不做过多的赘述。在 AMetal 软件包中,目前已经支持的硬件平台,官方提供了对应的模板工程
    发表于 05-28 16:19

    灵动微课堂 (第123讲) | 基于MM32 MCU的OS移植与应用:AMetal LED灯控制

    MDK5.18安装指南》或立功科技的《面向AMetal框架和接口的C编程》的1.2 搭建开发环境章节,在这里就不做过多的赘述。在 AMetal 软件包中,目前已经支持的硬件平台,官方提供了对应的模板工程
    发表于 05-28 16:19

    基于Ametal平台开发,快速完成开发设计!

    传统旋钮采用机械式结构,面板上需要开孔,长时间使用易磨损、进灰尘等,采用新型吸附式磁旋钮可以轻松解决上述问题。此磁旋钮采用ZLG品牌的32位ARM单片机ZLG116做主控,并且基于Ametal平台开发,能够快速完成开发设计。
    的头像 发表于 05-04 09:11 7116次阅读

    AMetal适配:以TIM为例来展示如何开发通用驱动外设代码

    基于定时器、RTC、WDT本质上均是计数器的共性,本次将这三种通用外设统一为TIM。以TIM为例,来展示如何开发通用驱动外设代码。对于
    的头像 发表于 05-12 17:08 1805次阅读
    <b class='flag-5'>AMetal</b>适配:以TIM为例来展示如何<b class='flag-5'>开发</b><b class='flag-5'>通用</b>驱动<b class='flag-5'>外设</b>代码

    AMetal开发通用外设GPIO驱动的开发

    上期讲述了开发通用外设之实战TIM的流程,让大家逐步深入了解如何开发通用
    的头像 发表于 05-31 17:28 2079次阅读

    AMetal代码仓库使用说明

    本文档简述了 AMetal 代码仓库的使用、 TortoiseGit 的使用以及版本控制等。AMetal 是芯片级的裸机软件包,定义了跨平台的通用接口(使得基于 AMetal 的应用程
    发表于 10-12 16:06 1次下载

    AMetal中断说明

    。基于此目的,在 AMetal 中,所有外设中断的默认优先级是 相同的,无法嵌套,即一个中断无法打断正在运行的另一个中断。
    发表于 10-12 16:05 3次下载

    浅谈硬件电路开发流程规范

    硬件电路开发流程是指导硬件工程师按规范化方式进行开发的准则,规范了硬件电路开发的全过程。
    的头像 发表于 08-03 10:31 1226次阅读
    浅谈硬件电路<b class='flag-5'>开发</b><b class='flag-5'>流程</b><b class='flag-5'>规范</b>