XMC7200是英飛凌推出的一款32位雙核CPU子系統(tǒng)(ARM Cortex-M7 和 ARM Cortex-M0)的開發(fā)板。該XMC7200D專為工業(yè)應(yīng)用而設(shè)計,是一款真正的可編程嵌入式片上系統(tǒng),集成了多達兩個 350MHz Arm Cortex-M7 作為主應(yīng)用處理器,一個 100MHz Arm Cortex-M0+ 。
RT-Thread已率先支持英飛凌XMC7200系列,本文將介紹RT-Thread基于開發(fā)板xmc7200-kit_xmc7200_evk的移植經(jīng)驗:
XMC7200測評活動
1. 前期準(zhǔn)備
1.1 英飛凌燒錄工具——Cypress programmer
我們把代碼編譯好后使用Cypress programmer進行燒錄。
官方下載鏈接:Cypress Programmer - Infineon Developer Center
1.2 英飛凌官方IDE——ModusToolbox
我們會使用到官方的IDE去獲取所需要的文件,如驅(qū)動文件、啟動文件、編譯腳本等等。
官方下載鏈接:ModusToolbox - Infineon Developer Center
1.3 Keil_MDK && ENV環(huán)境
ENV環(huán)境會幫我們生成Keil工程,然后使用Keil進行代碼編寫。(如果是用主線代碼,需要下載ENV2.0)
使用參考:RT-Thread之ENV工具_rt-thread env-CSDN博客
ENV2.0下載教程:【重要通知】ENV-Windows v2.0.0版本發(fā)布
2. 移植準(zhǔn)備
2.1 了解RT-Thread目錄結(jié)構(gòu)
在大多數(shù)的BSP中,都會包含一下文件:
文件名稱 | 文件說明 | |
.settings | 用于生成RT-Thread Studio工程 | |
applications | 存放用戶代碼,通常會有一個main.c文件 | |
board | 里面通常會放有l(wèi)inker_scripts(各類編譯器的編譯腳本)、board.c/.h(板級相關(guān)的初始化和配置) | |
drivers | 設(shè)備驅(qū)動代碼,里面存放各種外設(shè)的驅(qū)動,例如GPIO、UART等等,一般會放在BSP上一級目錄下的libraries下的HAL_Drivers里面 | |
figures | 開發(fā)板照片以及.md說明里用到的圖片 | |
.config, rtconfig.h, Kconfig | Kconfig配置系統(tǒng)相關(guān)文件(在本篇中不涉及語法使用教程) | |
rtconfig.py, SConscript, SConstruct | scons構(gòu)建系統(tǒng)相關(guān)文件(在本篇中不涉及語法使用教程) | |
template.uvprojx, template.uvoptx | keil模板工程 | |
project.uvprojx, project.uvoptx | keil工程(由模板工程生成得來) | |
template.eww, template.ewp | iar模板工程 | |
project.eww, project.ewp | iar工程 |
在了解了目錄以后我們就能根據(jù)所需要的文件一步一步完成BSP了。
2.2 使用ModusToolBox生成示例工程
2.2.1 生成工程
接下來我們使用官方的IDE生成一個示例工程獲取其驅(qū)動庫、啟動文件、鏈接腳本等。
在彈出的窗口中選擇我們本次用到的芯片類型然后點擊Next。
然后選擇‘Hello World’工程,選擇好保存位置后就可以創(chuàng)建了。
2.2.2 生成文件
2.2.2.1 mtb_shared文件
當(dāng)我們的工程創(chuàng)建好以后,我們會使用到這兩個文件
在mtb_shared里面存放著:
我們會使用到下面的文件
文件名稱 | 文件說明 | |
cat1cm0p | 包含了與基于 Cortex-M0+ 核心的微控制器相關(guān)的代碼和資源,低功耗的控制代碼 | |
cmsis | ARM的一套標(biāo)準(zhǔn)化軟件接口 | |
core-lib | 核心庫,定義一些參數(shù)、類型的值 | |
mtb-hal-cat1 | 硬件抽象層庫 | |
mtb-pdl-cat1 | 硬件驅(qū)動層庫 | |
retarget-io | 包含重定向輸入輸出的文件 |
2.2.2.2 工程下文件
在生成的示例工程中,bsps目錄下會存放著相應(yīng)開發(fā)板的相關(guān)鏈接腳本以、包含板載初始化的文件以及啟動文件,這個我們待會也會使用到。
3. 文件移植
我們在同系列下新建一個文件夾。
3.1 applications文件
在這個文件夾中我們存放的是用戶代碼,一般初始的時候只有一個main.c和一個Sconscript。可以去其它系列復(fù)制一個applications文件夾過來放在底下。
3.2 board文件
在這個文件中存放的是一些編譯器鏈接腳本以及板載初始化用到的文件。
3.2.1 鏈接腳本
鏈接腳本我們?nèi)サ绞纠こ滔抡遥?/p>
把其修改好名稱后放在board下的linker_scripts文件夾下。
3.2.2 board.c/.h文件
在board.c/.h文件中,一般會存放一些在板載初始化階段要使用的函數(shù),每個廠商需要的初始化流程不同,會有不一樣內(nèi)容。在本次移植中,就需要加入cybsp_init()功能,這個函數(shù)可以幫我們配置系統(tǒng)時鐘、電源管理和資源管理等。這個可以去同系列里面復(fù)制粘貼過來就好。
然后就是要修改board.h里面的SRAM大小跟起始地址,這個需要查看芯片的數(shù)據(jù)書冊。
3.2.3 Scons&&KConfig
還有就是Scons跟KConfig文件,這個主要是涉及編譯跟配置的,這個復(fù)制過來以后需要做一些修改。
首先就是需要指定一下不同編譯器實現(xiàn)底層系統(tǒng)庫函數(shù),這個源文件在mtb_shared目錄下。
然后是各種參與編譯的宏,這個需要使用到ModusToolBox編譯示例工程,然后在生成的compile_commands.json里尋找以-D開頭的參數(shù),這些都是參與編譯的宏。然后把這些宏加入到Sconscript里面。
然后是Kconfig的,在這里配置我們需要使用的外設(shè)選項,本次移植只需要使用到串口跟GPIO,所以板載外設(shè)配置里面就只有這里兩項配置。在復(fù)制文件過來的基礎(chǔ)上進行增刪改就可以了。在硬件驅(qū)動配置這里我們仿照其它系列進行修改。同時也要在libraries下的Konfig進行修改(后面有提及)。
3.3 lib文件
我們需要把剛剛示例工程下生成bsps目錄下的TARGET_APP_KIT_XMC72_EVK文件復(fù)制過來,同時也要編寫一個Sconscript,在這里我們需要使用到里面的配置、啟動文件。
3.4 MDK工程
先從其它工程里面把有關(guān)MDK的工程文件復(fù)制過來。
然后修改模板工程里面的芯片類型。如果沒有顯示的話需要先下載一下英飛凌的Pack包。
可以通過Keil內(nèi)置的下載器下載,也可通過鏈接路徑下載
下載路徑:https://raw.githubusercontent.com/Infineon/cmsis-packs/master/CAT1C_DFP/Infineon.CAT1C_DFP.1.0.0.pack
3.5 rtconfig.h/.py、Konfig、.config
這幾個文件是負責(zé)硬件配置相關(guān)的,我們復(fù)制過來后可以根據(jù)需求直接修改.config里面的設(shè)置,然后用ENV進入menuconfig保存一下更新rtconfig.h。例如這里需要把控制臺串口設(shè)置為串口3。
也可以用ENV進入到menuconfig里面去修改:
3.6 SConscript、SConsturct
這類型的文件主要與編譯相關(guān)。從其它BSP復(fù)制過來后,SConscript文件一般不需要進行修改,SConstruct文件要看自己的需要修改一下文件路徑。
如這里將英飛凌驅(qū)動庫做成了軟件包的形式,就需要重新指定一下路徑,大家根據(jù)自己的需求修改。
3.7 Libraries修改
3.7.1 修改Kconfig
在libraries目錄下的Kconfig里,我們需要添加上我們的板子信息,仿照其它系列就好了。
3.7.2 修改HAL_Drivers文件
在驅(qū)動庫中,有些地方還需要我們進行調(diào)整。
在uart_config.h里,修改串口的引腳。
不同于已適配的英飛凌Psoc6系列,中斷配置會有所不同,這里也需要修改。如果是相同系列同樣配置的話無需操作。
4. 做成軟件包
移植工作完成后,我發(fā)現(xiàn)英飛凌自身的驅(qū)動庫體積比較大,所以將其整合了一下,做成了軟件包的形式。同時也將其它系列也修改為依賴軟件包的形式,大家在使用的時候記得先進入ENV中使用pkgs --update的命令將軟件包下載下來。如果是其它系列的則可以參考其它文章將生成的驅(qū)動庫放在合適的位置。
5. 使用
到這里就適配完成了,接下來就是進行編譯與下載。
5.1 生成MDK工程
待軟件包安裝好后,在ENV環(huán)境下輸入SCons --target==MDK5命令,ENV會自動生成MDK5工程。
然后進入MDK中進行編譯
(可以看到,剛剛所寫的編譯宏會顯示在這里)
這里記得勾選上生成HEX文件用于待會的燒錄
5.2 燒錄
打開官方的燒錄軟件Cypress。選擇好對應(yīng)的板子。
選擇剛剛編譯好的.hex然后點擊連接。
然后點擊這個按鈕進行下載即可
-
英飛凌
+關(guān)注
關(guān)注
66文章
2183瀏覽量
138652 -
mcu
+關(guān)注
關(guān)注
146文章
17135瀏覽量
351023 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1285瀏覽量
40094
發(fā)布評論請先 登錄
相關(guān)推薦
評論