筆者最近在試用一款華芯微特的MCU,SWM32SRET6。其片上有FLASH 512KB, RAM 128KB, 內(nèi)部集成了TFT LCD控制器,并內(nèi)置8MB SDRAM,面向家電、工業(yè)控制、消費電子等需求屏驅(qū)應(yīng)用的場景。這款芯片支持RT-Thread,這也是筆者試用它的重要原因。
Keil內(nèi)置了一些mcu的下載算法,比如綠線勾劃的。同時,Keil也為mcu廠商提供了添加下載算法的方法,即放在DFP之中
再轉(zhuǎn)回RT-Thread Studio,是一樣的道理。RT-Thread Studio使用JLinkGDBServerCL.exe進行固件下載和調(diào)試,J-Link同樣需要下載算法。Supported devices - J-Link列舉了其支持的mcu。對于不支持的,需要額外添加下載算法。
Supported devices - J-Link
https://www.segger.com/downloads/supported-devices.php
在講具體的方法之前,我們先思考一下,為什么需要下載算法?
SWJ-DP
同樣,swm320也是Cortex-M4內(nèi)核,也內(nèi)嵌了與stm32f4xx一樣的SWJ-DP。那么J-Link在下載時為何需要針對不同的mcu(即使是相同的cortex內(nèi)核)選擇不同的下載算法呢?
原因很簡單,雖然swm320與stm32f4xx擁有相同的Cortex-M4內(nèi)核和SWJ-DP,但是它們的外設(shè)是由廠商自行設(shè)計,包括片內(nèi)Flash。從片內(nèi)Flash讀取數(shù)據(jù)與從RAM讀取數(shù)據(jù)一樣,執(zhí)行ARM的讀取指令即可。而向片內(nèi)Flash寫入數(shù)據(jù),即所謂的編程,則要復(fù)雜一些。
下載算法
準(zhǔn)確的說,對于J-Link來說,其下載固件到mcu中,需要一個加載程序Flashloader。Open_Flashloader詳細(xì)講述了如何去為一個新的mcu指定Flashloader。
Open_Flashloader
https://wiki.segger.com/Open_Flashloader
可以指定兩種類型的FlashLoader:
按Open_Flashloader文章的方法開發(fā)出的FlashLoader,是一個elf格式的可執(zhí)行程序。
CMSIS flash loader,通常是FLM格式。
這個FLM,有沒有感覺很親切呢?這就是廠家提供的DFP中的那個東西,也正是Keil所使用的下載算法。把其添加到J-Link軟件之中即可。
找到RT-Thread Studio所使用的J-Link軟件目錄,筆者的為:
ChipInfo是設(shè)備的基本信息,指定內(nèi)核類型、RAM地址和大小。
Vendor | 設(shè)備商名稱 |
Name | 設(shè)備名稱,在工程調(diào)試配置里面會用到. |
WorkRAMAddr | 十六進制格式的RAM首地址,與WorkRAMSize一起指定了J-Link下載固件時可用的內(nèi)存空間。一般可指定為MCU的整個RAM空間。 |
WorkRAMSize | 十六進制格式的RAM大小,單位是字節(jié)。 |
Core | MCU內(nèi)核,比如Cotex-M4對應(yīng)為JLINK_CORE_CORTEX_M4。 |
參數(shù) | 含義 |
---|
FlashBankInfo指定設(shè)備Flash的空間以及下載算法。
Name | 給人看的,取個有意義的即可。比如片內(nèi)Flash可命名為Internal Flash。 |
BaseAddr | 十六進制格式的Flash首地址,與MaxSize一起指定了Flash的空間。 |
MaxSize | 十六進制格式的Flash大小,單位是字節(jié)。 |
Loader | FlashLoader的路徑,可為相對路徑,也可為絕對路徑。如果是相對路徑,則其為相對于JLinkDevices.xml文件的位置。如前所述,可以是elf也可以是FLM。 |
LoaderType | FlashLoader的類型。目前只能為FLASH_ALGO_TYPE_OPEN。 |
AlwaysPresent | 對于片內(nèi)Flash,此值為1,表示本塊Flash是始終存在的。 |
參數(shù) | 含義 |
---|
在此之前,筆者還用過一款國產(chǎn)MCU(華大的HC32L110)。這兩個廠商的產(chǎn)品有一個共同之處:只支持在Keil和IAR中開發(fā)。看過筆者飛控移植系列文章的同學(xué)應(yīng)該有印象,筆者喜歡使用Eclipse家族的IDE,而不喜歡Keil,因為它的代碼瀏覽和編輯功能太簡陋。
Eclipse家族IDE不能用于開發(fā)這些國產(chǎn)MCU,最大的問題就是在于下載和調(diào)試,也就是本文遇到的問題。筆者當(dāng)初在使用HC32L110的時候,選擇了一個折衷的方法。在TRUEStudio(一款Eclipse IDE)中編寫代碼,也可編譯以查看語法錯誤。而真正的編譯固件和下載調(diào)試,則在Keil之中進行。這次看到RT-Thread Studio可以創(chuàng)建出swm320的工程,然而最終還是卡在了下載。筆者不想再妥協(xié)了,于是有了這篇文章。本文的方法不局限于華芯微特的MCU,是一個通用的解決方案噢。
添加下載算法一節(jié)提到兩種方法,這次選擇了第2種,一個快速而簡單的方案。其實筆者在看Open Flashloader那篇wiki時,正襟危坐,仔細(xì)閱讀,準(zhǔn)備大干一翻,自己來開發(fā)這個Flashloader。這應(yīng)該會是一次有趣的體驗,有空時搞一把,到時會分享給大家。
編輯:jq
-
mcu
+關(guān)注
關(guān)注
146文章
17171瀏覽量
351526 -
控制器
+關(guān)注
關(guān)注
112文章
16385瀏覽量
178386 -
IAR
+關(guān)注
關(guān)注
5文章
352瀏覽量
36703 -
代碼
+關(guān)注
關(guān)注
30文章
4793瀏覽量
68703 -
DP
+關(guān)注
關(guān)注
1文章
201瀏覽量
39845
原文標(biāo)題:RT-Thread Studio燒寫國產(chǎn)MCU(SWM32S)固件的方法
文章出處:【微信號:gh_ed4f95bde4df,微信公眾號:華芯微特32位MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論