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

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

3天内不再提示

如何搭建工程让MCU运行起来

科技绿洲 来源:立功科技 作者:立功科技 2022-05-01 09:04 次阅读

上期讲述了AMetal平台驱动框架中的配置文件和例程文件的使用,方便用户快速调用MCU相应的外设资源。基于前期对AMetal驱动架构各层文件的详细说明,本次向大家介绍如何搭建工程让MCU运行起来。

要让新的芯片在AMetal平台上运行起来必然需要为它建立一个新的工程,AMetal提供了搭建基础工程的模板工程(具体路径位于{SDK}\board\xxx_core),能够帮助开发者快速完成工程搭建。

poYBAGJZGQOAe7ToAACRhjic664793.png

图1

基础工程搭建

搭建基础工程

根据AMetal提供的模板工程,来创建芯片的基础工程文件夹;并将芯片文件夹的project_template文件夹下所有xxx的字样更改为适配芯片型号,即可搭建完基础工程的基本样式。以ZLG116为例,如下所示为其工程文件。

poYBAGJZGRCAB0ayAAAxsN4jZ28759.png

图2 ZLG116的工程文件

添加芯片基础文件

上一步骤中创建的基础工程文件夹中仅包含MCU的工程文件、配置文件和启动文件;因此我们需要添加MCU相关的描述性文件,通常被定义在soc文件夹内。大家可以根据AMetal提供的示例(具体路径为{SDK}\soc\xxx_soc)来创建芯片文件夹,并将该文件夹放置在对应芯片厂商的文件夹内。同时将该文件下所包含的xxx的字样更改为适配芯片型号。如下图所示为芯片基础文件夹内所包含文件的相关信息

pYYBAGJZGRqAU7geAAENAXkR-ko953.png

图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文件夹:

poYBAGJZGSaAQ3eXAADSVziAFSw823.png

图4 user_config文件夹

2. 打开user_config文件夹中的am_board.c文件,根据适配芯片的SRAM大小,进行修改代码。如下所示为芯片SRAM描述宏:

pYYBAGJZGTOAHIQlAACCdvPxEeA319.png

图5 SRAM描述宏

至此,我们完成了芯片基础工程的搭建;接下来,需要准备下一步的操作来实现MCU在AMetal平台上运行起来。

让MCU跑起来

由于各外设驱动还没有编写,MCU启动后默认会使用内部中速时钟运行,因此我们可以通过debug程序来观察它是否能够进入while(1),如果可以代表MCU运行成功。这里主要涉及到的相关操作为keil工程配置修改以及芯片启动文件的创建。

Keil工程配置的修改

修改keil工程的配置主要包括适配的芯片型号的选择、内核宏的设置、添加包含芯片基础文件的路径,烧录工具及其工程输出文件名等配置。以ZLG116为例,如下图所示为keil芯片型号的选择。

pYYBAGJZGUCALD7nAAE2cSVA2fg808.png

图6 keil芯片型号选择

以ZLG116为例,如下图所示为修改芯片内核宏及其添加芯片基础文件夹的路径。

poYBAGJZGUyAfrPxAAFTxQuvzAE870.png

图7 配置keil工程

至此keil工程修改完成,编译链接工程,无错误即可。

创建启动文件

工程的启动文件一般存储于路径{SDK}\board\{芯片简称}\{工程名}\startup目录下。启动文件可以通过将原厂启动文件进行修改获得,因此可以先将原厂的启动文件存入其中。

相较于原厂的启动文件,我们主要修改启动文件的以下三个部分:

外部中断函数连接:AMetal平台需要将所有外部中断都连接到同一个中断函数;如下所示为ZLG116外部中断映射:

pYYBAGJZGVeAWIOxAAKHO6woOrA109.png

图8 ZLG116外部中断映射

Reset_Handler的修改:根据原厂的Reset_Handler修改即可,AMetal平台复位后直接执行main函数。如下所示为Reset_Handler程序:

poYBAGJZGXqAHSesAABC5oFJVbY334.png

图9 Reset_Handler程序

Defult_Handler的修改:

pYYBAGJZGYKAXzMOAABDPaglZt4045.png

图10 Defult_Handler程序

至此,启动文件修改完成。接下来编译工程并调试程序,全速运行后若能够进入主函数中的while(1),则代表MCU运行成功。

以上就是基于AMetal如何让MCU跑起来的全部内容,相信大家已经熟悉了AMetal平台上适配新型号MCU这一操作。

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

    关注

    146

    文章

    16865

    浏览量

    349853
  • soc
    soc
    +关注

    关注

    38

    文章

    4087

    浏览量

    217742
  • 函数
    +关注

    关注

    3

    文章

    4276

    浏览量

    62315
  • ametal
    +关注

    关注

    2

    文章

    24

    浏览量

    11386
收藏 人收藏

    评论

    相关推荐

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

    再重新发明轮子。我们今天将和大家一起实战操作基于立功科技的AMetal平台的MM32 MCU的新建工程。立功科技基于AMetal平台为灵动微电子MM32 MCU适配了底层驱动及标准接口,用户使用时
    发表于 05-22 17:04

    怎样搭建环境与CCS6创建工程模板

    DSP 基础学习 1:搭建环境与CCS6创建工程模板1 DSP简介1.1 DSP 发展1.2 DSP 应用领域1.3 DSP 产品现状1.4 哈佛结构1.5 TMS320F28335 简介2 搭建
    发表于 08-06 08:28

    利用STM32创建工程模板的方法

    STM32学习1:创建工程模板1,建立工程文件夹2,Keil新建工程3,Keil工程配置4,收尾  STM32是基于ARM内核(cortex-m3系列属于armv7架构)的32位
    发表于 02-14 06:54

    STM32单片机如何搭建工程

    STM32单片机如何搭建工程
    发表于 02-17 07:36

    求助大佬,关于RT-Thread Studio创建工程时的MCU选项问题求解

    需要使用的MCU是GD32,在 Chip_Support_Packages 中没有,而在 Board_Support_Packages 里有。但是产品电路板肯定与开发板的管脚分配不一样,怎么选择基于芯片创建工程
    发表于 05-20 15:16

    如何在CPK-RA6M4 MCU评估板上RT-Thread运行起来

    RT-Thread 运行起来。开发环境的搭建将分为以下几个部分:RA 开发环境搭建基于 RT-Thread Studio开发环境搭建2、R
    发表于 07-13 11:28

    Vivado中新建工程或把IP搭建成原理图详解

    本文主要详解Vivado中新建工程或把IP搭建成原理图,具体的跟随小编一起来了解一下。
    的头像 发表于 06-30 04:51 1.3w次阅读
    Vivado中新<b class='flag-5'>建工程</b>或把IP<b class='flag-5'>搭建</b>成原理图详解

    HC32L系列MCU在KEIL新建工程后在Jli

    **HC32L系列MCU在KEIL新建工程后在Jli
    发表于 11-18 17:36 13次下载
    HC32L系列<b class='flag-5'>MCU</b>在KEIL新<b class='flag-5'>建工程</b>后在Jli

    DSP 基础学习 1:搭建环境与CCS6创建工程模板

    DSP 基础学习 1:搭建环境与CCS6创建工程模板1 DSP简介1.1 DSP 发展1.2 DSP 应用领域1.3 DSP 产品现状1.4 哈佛结构1.5 TMS320F28335 简介2 搭建
    发表于 11-26 10:36 17次下载
    DSP 基础学习 1:<b class='flag-5'>搭建</b>环境与CCS6创<b class='flag-5'>建工程</b>模板

    使用STM32 CUBE搭建工程实现MPU6050的角度测量

    使用STM32 CUBE搭建工程实现MPU6050的角度测量
    发表于 12-06 12:51 17次下载
    使用STM32 CUBE<b class='flag-5'>搭建工程</b>实现MPU6050的角度测量

    STM32学习1:创建工程模板

    STM32学习1:创建工程模板1,建立工程文件夹2,Keil新建工程3,Keil工程配置4,收尾  STM32是基于ARM内核(cortex-m3系列属于armv7架构)的32位
    发表于 12-08 19:06 4次下载
    STM32学习1:创<b class='flag-5'>建工程</b>模板

    STM32CubeMX 创建工程模板

    STM32CubeMX 创建工程模板
    发表于 12-08 20:06 20次下载
    STM32CubeMX 创<b class='flag-5'>建工程</b>模板

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

    上期讲述了搭建工程MCU在AMetal平台运行起来,为后续开发外设驱动奠定基础。接下来可以进入下一步的通用驱动外设开发工作,本次向大家介绍
    的头像 发表于 04-27 16:58 1778次阅读
    AMetal开发通用外设的流程与规范

    Linux内核的编译和运行

    Linux内核代码跑起来,得先搭建编译和运行代码的环境。
    发表于 06-23 11:56 1247次阅读
    Linux内核的编译和<b class='flag-5'>运行</b>

    基于IAR IDE创建工程程序不能运行怎么解决

    除错后运行一切正常。但如果他基于IARIDE创建工程并使用相同的用户代码时,发现程序没法正常运行,同时还没有任何报错。颇为奇怪。 经进一步了解。他的代码要实现的一个主要功能就是ADC,并利用通用DMA将ADC结果搬运到内存。现在
    的头像 发表于 07-22 17:27 1601次阅读
    基于IAR IDE创<b class='flag-5'>建工程</b>程序不能<b class='flag-5'>运行</b>怎么解决