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