上期講述了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文章
17837瀏覽量
360408 -
soc
+關注
關注
38文章
4338瀏覽量
221691 -
函數
+關注
關注
3文章
4371瀏覽量
64197 -
ametal
+關注
關注
2文章
24瀏覽量
11520
發布評論請先 登錄
靈動微課堂 (第122講) | 基于MM32 MCU的OS移植與應用:AMetal平臺新建工程
怎樣搭建環境與CCS6創建工程模板
利用STM32創建工程模板的方法
求助大佬,關于RT-Thread Studio創建工程時的MCU選項問題求解
如何在CPK-RA6M4 MCU評估板上讓RT-Thread運行起來
DSP 基礎學習 1:搭建環境與CCS6創建工程模板

STM32學習1:創建工程模板

基于IAR IDE創建工程程序不能運行怎么解決

評論