0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何搭建工程讓MCU運(yùn)行起來

科技綠洲 ? 來源:立功科技 ? 作者:立功科技 ? 2022-05-01 09:04 ? 次閱讀

上期講述了AMetal平臺(tái)驅(qū)動(dòng)框架中的配置文件和例程文件的使用,方便用戶快速調(diào)用MCU相應(yīng)的外設(shè)資源。基于前期對(duì)AMetal驅(qū)動(dòng)架構(gòu)各層文件的詳細(xì)說明,本次向大家介紹如何搭建工程讓MCU運(yùn)行起來。

要讓新的芯片在AMetal平臺(tái)上運(yùn)行起來必然需要為它建立一個(gè)新的工程,AMetal提供了搭建基礎(chǔ)工程的模板工程(具體路徑位于{SDK}\board\xxx_core),能夠幫助開發(fā)者快速完成工程搭建。

poYBAGJZGQOAe7ToAACRhjic664793.png

圖1

基礎(chǔ)工程搭建

搭建基礎(chǔ)工程

根據(jù)AMetal提供的模板工程,來創(chuàng)建芯片的基礎(chǔ)工程文件夾;并將芯片文件夾的project_template文件夾下所有xxx的字樣更改為適配芯片型號(hào),即可搭建完基礎(chǔ)工程的基本樣式。以ZLG116為例,如下所示為其工程文件。

poYBAGJZGRCAB0ayAAAxsN4jZ28759.png

圖2 ZLG116的工程文件

添加芯片基礎(chǔ)文件

上一步驟中創(chuàng)建的基礎(chǔ)工程文件夾中僅包含MCU的工程文件、配置文件和啟動(dòng)文件;因此我們需要添加MCU相關(guān)的描述性文件,通常被定義在soc文件夾內(nèi)。大家可以根據(jù)AMetal提供的示例(具體路徑為{SDK}\soc\xxx_soc)來創(chuàng)建芯片文件夾,并將該文件夾放置在對(duì)應(yīng)芯片廠商的文件夾內(nèi)。同時(shí)將該文件下所包含的xxx的字樣更改為適配芯片型號(hào)。如下圖所示為芯片基礎(chǔ)文件夾內(nèi)所包含文件的相關(guān)信息

pYYBAGJZGRqAU7geAAENAXkR-ko953.png

圖3 芯片基礎(chǔ)文件簡(jiǎn)介

在編寫驅(qū)動(dòng)程序前,我們應(yīng)完成芯片基礎(chǔ)文件夾中各文件內(nèi)容的編寫。下面對(duì)上述芯片基礎(chǔ)文件的內(nèi)容做一個(gè)簡(jiǎn)單介紹:

am_xxx.h:對(duì)當(dāng)前文件夾內(nèi)的.h文件進(jìn)行包含。根據(jù)所適配芯片的內(nèi)核進(jìn)行修改(可參考其它同內(nèi)核芯片該文件相關(guān)配置),模板例程默認(rèn)使用的是Arm? Cortex?-M0的內(nèi)核。

soc_cfg.h:主要完成的是對(duì)DMA通道數(shù)目、Flash大小、扇區(qū)大小的宏定義,用戶需根據(jù)芯片手冊(cè)填寫。

xxx_clk.h:該文件包含各總線和外設(shè)的時(shí)鐘ID宏定義,其值直接決定了clk外設(shè)驅(qū)動(dòng)程序的編寫。

xxx_dma_chan.h:該文件包含各外設(shè)可用DMA通道的情況,該定義直接決定DMA外設(shè)驅(qū)動(dòng)的編寫。

xxx_inum.h:文件涉及到CPU中斷號(hào)的宏定義;并定義枚舉類型IRQn_Type提供給內(nèi)核文件使用。根據(jù)所適配芯片內(nèi)核,需要對(duì)中斷向量表進(jìn)行修改(可參考芯片啟動(dòng)文件)。

xxx_periph_map.h:外設(shè)映射定義,其主要目的是對(duì)各外設(shè)的基地址按照定義的對(duì)應(yīng)外設(shè)結(jié)構(gòu)體解析從而獲取各外設(shè)寄存器塊指針。

xxx_pin.h:包含該芯片各引腳的復(fù)用功能配置宏、模式配置宏、引腳速度配置宏,其應(yīng)該在編寫GPIO驅(qū)動(dòng)時(shí)一同編寫。

xxx_regbase.h:涉及到該芯片各外設(shè)的內(nèi)存基地址定義。

修改工程配置文件

在完成上述操作后就可以對(duì)工程配置文件進(jìn)行修改了,僅需要按照如下操作即可:

1. 在剛創(chuàng)建的芯片基礎(chǔ)工程文件夾內(nèi),修改user_config文件夾下所有xxx的字樣更改為適配芯片型號(hào)。如下所示為user_config文件夾:

poYBAGJZGSaAQ3eXAADSVziAFSw823.png

圖4 user_config文件夾

2. 打開user_config文件夾中的am_board.c文件,根據(jù)適配芯片的SRAM大小,進(jìn)行修改代碼。如下所示為芯片SRAM描述宏:

pYYBAGJZGTOAHIQlAACCdvPxEeA319.png

圖5 SRAM描述宏

至此,我們完成了芯片基礎(chǔ)工程的搭建;接下來,需要準(zhǔn)備下一步的操作來實(shí)現(xiàn)MCU在AMetal平臺(tái)上運(yùn)行起來。

讓MCU跑起來

由于各外設(shè)驅(qū)動(dòng)還沒有編寫,MCU啟動(dòng)后默認(rèn)會(huì)使用內(nèi)部中速時(shí)鐘運(yùn)行,因此我們可以通過debug程序來觀察它是否能夠進(jìn)入while(1),如果可以代表MCU運(yùn)行成功。這里主要涉及到的相關(guān)操作為keil工程配置修改以及芯片啟動(dòng)文件的創(chuàng)建。

Keil工程配置的修改

修改keil工程的配置主要包括適配的芯片型號(hào)的選擇、內(nèi)核宏的設(shè)置、添加包含芯片基礎(chǔ)文件的路徑,燒錄工具及其工程輸出文件名等配置。以ZLG116為例,如下圖所示為keil芯片型號(hào)的選擇。

pYYBAGJZGUCALD7nAAE2cSVA2fg808.png

圖6 keil芯片型號(hào)選擇

以ZLG116為例,如下圖所示為修改芯片內(nèi)核宏及其添加芯片基礎(chǔ)文件夾的路徑。

poYBAGJZGUyAfrPxAAFTxQuvzAE870.png

圖7 配置keil工程

至此keil工程修改完成,編譯鏈接工程,無錯(cuò)誤即可。

創(chuàng)建啟動(dòng)文件

工程的啟動(dòng)文件一般存儲(chǔ)于路徑{SDK}\board\{芯片簡(jiǎn)稱}\{工程名}\startup目錄下。啟動(dòng)文件可以通過將原廠啟動(dòng)文件進(jìn)行修改獲得,因此可以先將原廠的啟動(dòng)文件存入其中。

相較于原廠的啟動(dòng)文件,我們主要修改啟動(dòng)文件的以下三個(gè)部分:

外部中斷函數(shù)連接:AMetal平臺(tái)需要將所有外部中斷都連接到同一個(gè)中斷函數(shù);如下所示為ZLG116外部中斷映射:

pYYBAGJZGVeAWIOxAAKHO6woOrA109.png

圖8 ZLG116外部中斷映射

Reset_Handler的修改:根據(jù)原廠的Reset_Handler修改即可,AMetal平臺(tái)復(fù)位后直接執(zhí)行main函數(shù)。如下所示為Reset_Handler程序:

poYBAGJZGXqAHSesAABC5oFJVbY334.png

圖9 Reset_Handler程序

Defult_Handler的修改:

pYYBAGJZGYKAXzMOAABDPaglZt4045.png

圖10 Defult_Handler程序

至此,啟動(dòng)文件修改完成。接下來編譯工程并調(diào)試程序,全速運(yùn)行后若能夠進(jìn)入主函數(shù)中的while(1),則代表MCU運(yùn)行成功。

以上就是基于AMetal如何讓MCU跑起來的全部?jī)?nèi)容,相信大家已經(jīng)熟悉了AMetal平臺(tái)上適配新型號(hào)MCU這一操作。

審核編輯:彭菁
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16664

    瀏覽量

    347728
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4021

    瀏覽量

    217012
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4235

    瀏覽量

    61962
  • ametal
    +關(guān)注

    關(guān)注

    2

    文章

    24

    瀏覽量

    11374
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    靈動(dòng)微課堂 (第122講) | 基于MM32 MCU的OS移植與應(yīng)用:AMetal平臺(tái)新建工程

    再重新發(fā)明輪子。我們今天將和大家一起實(shí)戰(zhàn)操作基于立功科技的AMetal平臺(tái)的MM32 MCU的新建工程。立功科技基于AMetal平臺(tái)為靈動(dòng)微電子MM32 MCU適配了底層驅(qū)動(dòng)及標(biāo)準(zhǔn)接口,用戶使用時(shí)
    發(fā)表于 05-22 17:04

    怎樣搭建環(huán)境與CCS6創(chuàng)建工程模板

    DSP 基礎(chǔ)學(xué)習(xí) 1:搭建環(huán)境與CCS6創(chuàng)建工程模板1 DSP簡(jiǎn)介1.1 DSP 發(fā)展1.2 DSP 應(yīng)用領(lǐng)域1.3 DSP 產(chǎn)品現(xiàn)狀1.4 哈佛結(jié)構(gòu)1.5 TMS320F28335 簡(jiǎn)介2 搭建
    發(fā)表于 08-06 08:28

    利用STM32創(chuàng)建工程模板的方法

    STM32學(xué)習(xí)1:創(chuàng)建工程模板1,建立工程文件夾2,Keil新建工程3,Keil工程配置4,收尾??STM32是基于ARM內(nèi)核(cortex-m3系列屬于armv7架構(gòu))的32位
    發(fā)表于 02-14 06:54

    STM32單片機(jī)如何搭建工程?

    STM32單片機(jī)如何搭建工程?
    發(fā)表于 02-17 07:36

    求助大佬,關(guān)于RT-Thread Studio創(chuàng)建工程時(shí)的MCU選項(xiàng)問題求解

    需要使用的MCU是GD32,在 Chip_Support_Packages 中沒有,而在 Board_Support_Packages 里有。但是產(chǎn)品電路板肯定與開發(fā)板的管腳分配不一樣,怎么選擇基于芯片創(chuàng)建工程?
    發(fā)表于 05-20 15:16

    如何在CPK-RA6M4 MCU評(píng)估板上RT-Thread運(yùn)行起來

    RT-Thread 運(yùn)行起來。開發(fā)環(huán)境的搭建將分為以下幾個(gè)部分:RA 開發(fā)環(huán)境搭建基于 RT-Thread Studio開發(fā)環(huán)境搭建2、R
    發(fā)表于 07-13 11:28

    Vivado中新建工程或把IP搭建成原理圖詳解

    本文主要詳解Vivado中新建工程或把IP搭建成原理圖,具體的跟隨小編一起來了解一下。
    的頭像 發(fā)表于 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
    發(fā)表于 11-18 17:36 ?13次下載
    HC32L系列<b class='flag-5'>MCU</b>在KEIL新<b class='flag-5'>建工程</b>后在Jli

    DSP 基礎(chǔ)學(xué)習(xí) 1:搭建環(huán)境與CCS6創(chuàng)建工程模板

    DSP 基礎(chǔ)學(xué)習(xí) 1:搭建環(huán)境與CCS6創(chuàng)建工程模板1 DSP簡(jiǎn)介1.1 DSP 發(fā)展1.2 DSP 應(yīng)用領(lǐng)域1.3 DSP 產(chǎn)品現(xiàn)狀1.4 哈佛結(jié)構(gòu)1.5 TMS320F28335 簡(jiǎn)介2 搭建
    發(fā)表于 11-26 10:36 ?17次下載
    DSP 基礎(chǔ)學(xué)習(xí) 1:<b class='flag-5'>搭建</b>環(huán)境與CCS6創(chuàng)<b class='flag-5'>建工程</b>模板

    使用STM32 CUBE搭建工程實(shí)現(xiàn)MPU6050的角度測(cè)量

    使用STM32 CUBE搭建工程實(shí)現(xiàn)MPU6050的角度測(cè)量
    發(fā)表于 12-06 12:51 ?17次下載
    使用STM32 CUBE<b class='flag-5'>搭建工程</b>實(shí)現(xiàn)MPU6050的角度測(cè)量

    STM32學(xué)習(xí)1:創(chuàng)建工程模板

    STM32學(xué)習(xí)1:創(chuàng)建工程模板1,建立工程文件夾2,Keil新建工程3,Keil工程配置4,收尾??STM32是基于ARM內(nèi)核(cortex-m3系列屬于armv7架構(gòu))的32位
    發(fā)表于 12-08 19:06 ?4次下載
    STM32學(xué)習(xí)1:創(chuàng)<b class='flag-5'>建工程</b>模板

    STM32CubeMX 創(chuàng)建工程模板

    STM32CubeMX 創(chuàng)建工程模板
    發(fā)表于 12-08 20:06 ?20次下載
    STM32CubeMX 創(chuàng)<b class='flag-5'>建工程</b>模板

    AMetal開發(fā)通用外設(shè)的流程與規(guī)范

    上期講述了搭建工程MCU在AMetal平臺(tái)運(yùn)行起來,為后續(xù)開發(fā)外設(shè)驅(qū)動(dòng)奠定基礎(chǔ)。接下來可以進(jìn)入下一步的通用驅(qū)動(dòng)外設(shè)開發(fā)工作,本次向大家介紹
    的頭像 發(fā)表于 04-27 16:58 ?1679次閱讀
    AMetal開發(fā)通用外設(shè)的流程與規(guī)范

    Linux內(nèi)核的編譯和運(yùn)行

    Linux內(nèi)核代碼跑起來,得先搭建編譯和運(yùn)行代碼的環(huán)境。
    發(fā)表于 06-23 11:56 ?999次閱讀
    Linux內(nèi)核的編譯和<b class='flag-5'>運(yùn)行</b>

    基于IAR IDE創(chuàng)建工程程序不能運(yùn)行怎么解決

    除錯(cuò)后運(yùn)行一切正常。但如果他基于IARIDE創(chuàng)建工程并使用相同的用戶代碼時(shí),發(fā)現(xiàn)程序沒法正常運(yùn)行,同時(shí)還沒有任何報(bào)錯(cuò)。頗為奇怪。 經(jīng)進(jìn)一步了解。他的代碼要實(shí)現(xiàn)的一個(gè)主要功能就是ADC,并利用通用DMA將ADC結(jié)果搬運(yùn)到內(nèi)存?,F(xiàn)在
    的頭像 發(fā)表于 07-22 17:27 ?1508次閱讀
    基于IAR IDE創(chuàng)<b class='flag-5'>建工程</b>程序不能<b class='flag-5'>運(yùn)行</b>怎么解決