图1 AMetal构架
同时AMetal 提供高效、功能完善的服务组件,主要包括USB、Lora、Modbus、链表、环形缓冲区;以及常用器件的驱动,如:74HC595、LM75、EP24Cxx、MX25xx、DS1302 等;应用程序需要的一切,都可以提供,利用平台提供的软件组件,用户可以省去大量的软件编写及测试时间,专注于应用代码的开发,将极大提高研发效率,尽快走向量产之路。
了解了AMetal平台的特点,我们从今天开始将在后续的系列文章中和大家一起实战演练如何搭建开发环境,如何编写应用程序,如何编写、 调试和固化应用程序,在eMiniboard硬件平台与大家一起一步一步的熟悉如何在AMetal平台使用MM32 MCU开发产品。
一、准备工作
MDK 开发环境:需要安装 MDK-ARM 5.27 (正式版或评估版,5.12 版本及以上版本均可),并且安装灵动微电子官网(www.mm32mcu.com)的pack驱动包。在AMetal官网有介绍IAR、MDK和GCC的新建工程说明文档,大家如果有兴趣可以去官网获取资料。
|
硬件平台:MM32 eMiniBoard板载MM32-LINK OB调试器,所以无需外接仿真调试器。
|
• MM32L073PF (Cortex-M0 MCU:128k FLASH、20k SRAM)
• 板载SPI Flash芯片
• 板载IIC EEPROM芯片
• 板载CAN转换芯片
• 板载无源蜂鸣器
• 具备3个VR
• 具备4个LED
• 具备4个KEY
• 双USB接口,USB-1支持USB仿真、下载和调试,USB-2支持USB device和供电
• 板载MM32-LINK OB,可对主控MCU进行在线仿真、调试和下载
• 支持 Keil uvision/ IAR EWARM开发环境
图2 MM32 eMiniBoard硬件平台
获取源码:
目前可以通过两种方式获取源码:
AMetal 在Github平台开源下载网址:
https://github.com/zlgopen/ametal
用户可直接通过此页面下载 AMetal 开源代码包。
AMetal 在码云平台开源下载网址:
https://gitee.com/zlgopen/ametal
用户可直接通过此页面下载 AMetal 开源代码包
|
二、认识AMetal 源码目录结构
我们通过上述链接获取源码并解压对应的文件夹中,我们可以看到如下目录:
文件/文件名
| 描述
|
3rdparty
| 存放第三方软件包
|
arch
| 存放内核相关文件
|
board
| 存放板级相关文件
|
components
| 存放组件文件
|
documents
| 存放各类文档
|
examples
| 存放各类例程
|
interface
| 存放 AMetal 标准接口文件
|
soc
| 存放片上系统相关文件
|
tools
| 存放一些工具包,如 Keil 的 PACK 包
|
CHANGELOG
| 版本修改记录文件
|
COPYING
| 版本声明文件
|
LICENSE
| 版权许可证文件(AMetal 采用的是 LGPL 许可证)
|
README
| README 文件
|
表1 AMetal源码结构
1
| 3rdparty
3rdparty 用于存放一些由第三方提供的软件包,比如 CMSIS 软件包。CMSIS是 ARM Cortex 微控制器软件接口标准,是 CortexM 处理器系列的与供应商无关的硬件抽象层,可以在灵动微电子官网或MDK官网下载。
|
2
| arch
arch 文件夹用于存放与架构相关的通用文件,该目录下按不同的架构分成不同的文件夹,如 arm 文件夹。
|
3
| board
board 文件夹包含了与开发板相关的文件,如启动文件及与开发板相关的设置和初始化函数等。board 文件夹内分为板级通用文件夹“bsp_common”和若干某一型号开发板的专用文件夹,如“am116_core” 。分别用于存放板级通用文件和对应型号开发板的专用板级文件。
|
4
| components
components 文件夹用于存放 AMetal 的一些组件。比如 AMetal 通用服务组件service,其内部包含了一些通用外设的抽象定义,如蜂鸣器、数码管等以及它们的标准接口函数定义等,用户可通过 AMetal 标准接口调用。
|
5
| Documents
documents 用于存放 SDK 相关文档。
|
6
| examples
examples 文件夹主要包含各级示例程序,包括硬件层 demo、驱动层 demo、板级 demo及组件 demo 等。
|
7
| interface
interface 文件夹下包含 AMetal 提供的通用文件,包括标准接口文件和一些工具文件,这些标准接口与具体芯片无关,只与外设的功能相关,屏蔽了不同芯片底层的差异性,使不同厂商、型号的 MCU 都能以通用接口进行操作。
以“am_gpio.h”文件为例,它包含了用于控制 GPIO 的各个函数的函数原型及一些参数宏定义,如 GPIO 配置函数“int am_gpio_pin_cfg(int pin, uint32_t flags) ” ,用户可以直接调用此函数对 MCU 的 GPIO 引脚进行配置,而不用考虑不同芯片之间的差异。
|
8
| Soc
soc,片上系统文件夹,主要包含了与 MCU 密切相关的文件,包括硬件层和驱动层文件。
|
9
| tools
tools 目录下存放 SDK 相关工具,如 Keil 的 PACK 包。
|
三、新建工程
AMetal已经为用户提供了MDK、IAR和GCC的工程模板,用户可以自由选择自己熟悉的平台,用户可选择灵活度高。下载的源码已经为用户提供了工程模板,如果用户不打算重新新建工程,可以直接在工程模板上进行开发,如果用户需要使用自己的程序构架,用户可以参考灵动微电子官网应用说明栏的《AN0001 MDK5.18安装指南》和立功科技的《面向AMetal框架和接口的C编程》的1.2 搭建开发环境章节,在这里我就不做过多的赘述。
用户如需在现有的工程构架上新建工程,只需要复制一份 project_template 并粘贴即可。eMiniboard工程模板目录为ametal/board/ mm32l073_core /project_template,以新建一个操作测试工程为例,直接复制一份 project_template 并粘贴。复制粘贴后如图3所示。
注意:只能粘贴在 ametal/board/{board_name}/目录下,即与 project_template 处于同一级目录,不可随意拷贝、粘贴至其他目录。
图3 复制一份工程模板
复制工程模板成功后,将 project_template - 副本重命名为自己期望的工程名即可,如命名为testcode,重命名后如图4所示。
图4 重命名工程目录
打开重命名的testcode文件夹,然后打开 project_keil5 文件夹,template.uvprojx 即为工程文件,debug文件里面存放着工程编译信息文件。建议将工程文件命名为与工程项目相关的名字,如将 template.uvprojx 重命名为testcode.uvprojx。
图5 显示工程结构
至此,我们新建工程的流程已操作完成,在图5的工程结构中,arm 下面存放着系统定时和中断控制,drivers 下包含了该开发板支持的驱动源文件及实现;libc 下是 AMetal 开发平台相关的库文件;service 下面为用户提供的一些标准服务接口,soc 下面是与芯片底层相关的一些功能实现,startup 下面是系统启动文件,user_config 下为配置文件;user_code 下面用户添加开发的文件。
在工程窗口中,目录 user_code 是存放用户程序的地方,点击 user_code 前面的“+”号可以显示该结点下所有的文件,默认只有一个文件 main.c, 双击 main.c 便会出现 main.c的代码编辑窗口,用户可以开始编写代码。
|
在本章节中主要介绍了基于AMetal平台的MM32 MCU的新建工程,由于篇幅限制,我们将在下一章节与大家一起学习
基于AMetal平台快速开发应用程序,为方便用户快速熟悉 AMetal平台,我们将以一个简单的示例——LED 闪烁来展示运行一个应用程序需要经历哪些基础步骤,敬请期待!
注:本章节有参考周立功老师的
●《面向AWorks框架和接口的C编程》
○ 下载链接:https://www.zlg.cn/foxmail/weixinpdf/AWorks.pdf
●《面向AMetal框架和接口的C编程》
○ 下载链接:https://www.zlg.cn/foxmail/weixinpdf/AMetalzl.pdf
这两本书可以在立功科技官网下载电子版,大家有兴趣可以去官网下载电子版阅读,相信理解、熟悉该书籍后,定能从入门到精通,从小白到大神的蜕变之路,在此对周老师表示感谢!
`
0