上期讲述了AMetal平台驱动框架中的配置文件和例程文件的使用,方便用户快速调用MCU相应的外设资源。基于前期对AMetal驱动架构各层文件的详细说明,本次向大家介绍如何搭建工程让MCU运行起来。
要让新的芯片在AMetal平台上运行起来必然需要为它建立一个新的工程,AMetal提供了搭建基础工程的模板工程(具体路径位于{SDK}\board\xxx_core),能够帮助开发者快速完成工程搭建。
图1
基础工程搭建
搭建基础工程
根据AMetal提供的模板工程,来创建芯片的基础工程文件夹;并将芯片文件夹的project_template文件夹下所有xxx的字样更改为适配芯片型号,即可搭建完基础工程的基本样式。以ZLG116为例,如下所示为其工程文件。
图2 ZLG116的工程文件
添加芯片基础文件
上一步骤中创建的基础工程文件夹中仅包含MCU的工程文件、配置文件和启动文件;因此我们需要添加MCU相关的描述性文件,通常被定义在soc文件夹内。大家可以根据AMetal提供的示例(具体路径为{SDK}\soc\xxx_soc)来创建芯片文件夹,并将该文件夹放置在对应芯片厂商的文件夹内。同时将该文件下所包含的xxx的字样更改为适配芯片型号。如下图所示为芯片基础文件夹内所包含文件的相关信息。
图3 芯片基础文件简介
在编写驱动程序前,我们应完成芯片基础文件夹中各文件内容的编写。下面对上述芯片基础文件的内容做一个简单介绍:
am_xxx.h:对当前文件夹内的.h文件进行包含。根据所适配芯片的内核进行修改(可参考其它同内核芯片该文件相关配置),模板例程默认使用的是Arm® Cortex®-M0的内核。
soc_cfg.h:主要完成的是对DMA通道数目、Flash大小、扇区大小的宏定义,用户需根据芯片手册填写。
xxx_clk.h:该文件包含各总线和外设的时钟ID宏定义,其值直接决定了clk外设驱动程序的编写。
xxx_dma_chan.h:该文件包含各外设可用DMA通道的情况,该定义直接决定DMA外设驱动的编写。
xxx_inum.h:文件涉及到CPU中断号的宏定义;并定义枚举类型IRQn_Type提供给内核文件使用。根据所适配芯片内核,需要对中断向量表进行修改(可参考芯片启动文件)。
xxx_periph_map.h:外设映射定义,其主要目的是对各外设的基地址按照定义的对应外设结构体解析从而获取各外设寄存器块指针。
xxx_pin.h:包含该芯片各引脚的复用功能配置宏、模式配置宏、引脚速度配置宏,其应该在编写GPIO驱动时一同编写。
xxx_regbase.h:涉及到该芯片各外设的内存基地址定义。
修改工程配置文件
在完成上述操作后就可以对工程配置文件进行修改了,仅需要按照如下操作即可:
1. 在刚创建的芯片基础工程文件夹内,修改user_config文件夹下所有xxx的字样更改为适配芯片型号。如下所示为user_config文件夹:
图4 user_config文件夹
2. 打开user_config文件夹中的am_board.c文件,根据适配芯片的SRAM大小,进行修改代码。如下所示为芯片SRAM描述宏:
图5 SRAM描述宏
至此,我们完成了芯片基础工程的搭建;接下来,需要准备下一步的操作来实现MCU在AMetal平台上运行起来。
让MCU跑起来
由于各外设驱动还没有编写,MCU启动后默认会使用内部中速时钟运行,因此我们可以通过debug程序来观察它是否能够进入while(1),如果可以代表MCU运行成功。这里主要涉及到的相关操作为keil工程配置修改以及芯片启动文件的创建。
Keil工程配置的修改
修改keil工程的配置主要包括适配的芯片型号的选择、内核宏的设置、添加包含芯片基础文件的路径,烧录工具及其工程输出文件名等配置。以ZLG116为例,如下图所示为keil芯片型号的选择。
图6 keil芯片型号选择
以ZLG116为例,如下图所示为修改芯片内核宏及其添加芯片基础文件夹的路径。
图7 配置keil工程
至此keil工程修改完成,编译链接工程,无错误即可。
创建启动文件
工程的启动文件一般存储于路径{SDK}\board\{芯片简称}\{工程名}\startup目录下。启动文件可以通过将原厂启动文件进行修改获得,因此可以先将原厂的启动文件存入其中。
相较于原厂的启动文件,我们主要修改启动文件的以下三个部分:
外部中断函数连接:AMetal平台需要将所有外部中断都连接到同一个中断函数;如下所示为ZLG116外部中断映射:
图8 ZLG116外部中断映射
Reset_Handler的修改:根据原厂的Reset_Handler修改即可,AMetal平台复位后直接执行main函数。如下所示为Reset_Handler程序:
图9 Reset_Handler程序
Defult_Handler的修改:
图10 Defult_Handler程序
至此,启动文件修改完成。接下来编译工程并调试程序,全速运行后若能够进入主函数中的while(1),则代表MCU运行成功。
以上就是基于AMetal如何让MCU跑起来的全部内容,相信大家已经熟悉了AMetal平台上适配新型号MCU这一操作。
-
mcu
+关注
关注
146文章
16865浏览量
349853 -
soc
+关注
关注
38文章
4087浏览量
217742 -
函数
+关注
关注
3文章
4276浏览量
62315 -
ametal
+关注
关注
2文章
24浏览量
11386
发布评论请先 登录
相关推荐
评论