基于VSCode軟件框架的RISC-V IDE MRS2正式上線發(fā)布
一、概述
MounRiver Studio Ⅱ(MRS2)為MounRiver Studio的換代版本,從V2.1開(kāi)始,框架更換至更現(xiàn)代的VSCode,并深度定制開(kāi)發(fā)。在工程管理、代碼編輯、編譯、調(diào)試等方面均兼容之前版本,并在效率和功能等方面進(jìn)行提升,著力將MRS打造為更加輕量化、智能化、高效化的RISC-V IDE。同時(shí),提供Windows/Linux/macOS 以及國(guó)產(chǎn)操作系統(tǒng)版本,用戶可前往MRS官網(wǎng)進(jìn)行下載。
二、MRS2亮點(diǎn)
- 高速化軟件啟動(dòng):針對(duì)安裝速度、軟件框架啟動(dòng)速度進(jìn)行了專項(xiàng)優(yōu)化。
自動(dòng)化工程配置:從模板無(wú)需設(shè)置直接創(chuàng)建工程、自帶默認(rèn)的編譯配置、工具鏈切換時(shí)編譯選項(xiàng)聯(lián)動(dòng)修改。 - 實(shí)時(shí)化全局搜索:搜索結(jié)果根據(jù)實(shí)際文件內(nèi)容實(shí)時(shí)刷新。
智能化代碼輔助:支持代碼導(dǎo)航、補(bǔ)全、診斷、格式化、重構(gòu)以及代碼的實(shí)時(shí)靜態(tài)語(yǔ)法分析; - 可視化代碼分析:支持圖表化顯示代碼中ROM,RAM用量占比、函數(shù)及變量占用內(nèi)存大小及變化、輸出文件各段數(shù)據(jù)實(shí)際大小等。
- 高效化芯片調(diào)試:除常用的在線仿真調(diào)試外,還支持在線異常追蹤調(diào)試以及遠(yuǎn)程調(diào)試。
- 多樣化輔助工具:集成HEX/BIN文件處理、串口調(diào)試、ISP下載、二進(jìn)制文件瀏覽等多種嵌入式開(kāi)發(fā)輔助工具。
三、核心功能介紹
3.1工程創(chuàng)建
- 內(nèi)置芯片模板工程,支持快速創(chuàng)建項(xiàng)目
MRS2內(nèi)置了沁恒微RISC-V芯片裸機(jī)及嵌入式實(shí)時(shí)操作系統(tǒng)工程模板,配套提供完整的編譯、下載、調(diào)試參數(shù)文件,無(wú)需手動(dòng)逐一設(shè)置,可直接一鍵式創(chuàng)建項(xiàng)目。 - 自定義工程模板創(chuàng)建、導(dǎo)入、導(dǎo)出功能
MRS2支持將自定義的項(xiàng)目創(chuàng)建為芯片工程模板并導(dǎo)出,再由安裝在其他主機(jī)上的MRS2導(dǎo)入后,即可在新建工程時(shí)使用自定義的芯片工程模板創(chuàng)建項(xiàng)目。
3.2工程管理
- 支持多種工程加載方式,便捷切換目標(biāo)芯片型號(hào)
MRS2兼容舊版MRS創(chuàng)建的工程、解決方案以及WCH EVT工程,可雙擊.wvproj/.wvsln文件或軟件內(nèi)菜單項(xiàng)加載工程/解決方案。MRS2還支持切換當(dāng)前目標(biāo)芯片型號(hào),同時(shí)自動(dòng)設(shè)置對(duì)應(yīng)的下載、調(diào)試參數(shù)。 - 內(nèi)置文件版本管理功能,支持回溯歷史版本源碼
MRS2在文件保存時(shí)會(huì)自動(dòng)按照分鐘級(jí)的時(shí)間跨度進(jìn)行版本備份,用戶可以查看、對(duì)比任意備份的文件歷史版本,并支持同步兩個(gè)文件歷史版本間的代碼差異。
3.3代碼編輯
- 自由添加文件書簽、筆記
MRS2可通過(guò)快捷鍵或右鍵菜單添加代碼書簽、筆記,支持快捷鍵方式跳轉(zhuǎn)、專屬頁(yè)面全局管理,該功能不會(huì)像代碼注釋一樣修改源碼,修改后不影響源碼編譯結(jié)果,有助于審閱、瀏覽代碼時(shí)添加備注信息。 - 主動(dòng)式文件編碼識(shí)別,避免中文字符出現(xiàn)亂碼
由于在Windows/Linux/macOS等平臺(tái)下,文件的默認(rèn)編碼方式不同,導(dǎo)致更換平臺(tái)加載工程時(shí),包含中文的源碼往往會(huì)顯示為亂碼,此時(shí)用戶需要手動(dòng)調(diào)整當(dāng)前編輯器或整個(gè)集成開(kāi)發(fā)環(huán)境(IDE)的默認(rèn)文件編碼。而當(dāng)一個(gè)工程中包含多種編碼方式的文件時(shí),大多數(shù)只支持設(shè)置全局文件編碼的IDE更是無(wú)法準(zhǔn)確加載每個(gè)文件的中文字符。
MRS2支持在打開(kāi)文件時(shí)自動(dòng)識(shí)別其編碼方式,并提供切換瀏覽、保存文件時(shí)編碼的快捷按鈕,輕松應(yīng)對(duì)跨平臺(tái)瀏覽源碼、加載包含不同編碼文件工程等IDE使用場(chǎng)景。 - 主動(dòng)式標(biāo)點(diǎn)轉(zhuǎn)換,防止符號(hào)誤輸入
在編寫代碼過(guò)程中,開(kāi)發(fā)者經(jīng)常面臨在集成開(kāi)發(fā)環(huán)境與其他軟件之間不斷切換使用的場(chǎng)景,可能導(dǎo)致部分全角符號(hào)被誤輸入到代碼中,尤其是逗號(hào)、分號(hào)、圓角括號(hào)等半角、全角模式下外觀差異不大的標(biāo)點(diǎn)符號(hào)。開(kāi)發(fā)者需要依賴集成開(kāi)發(fā)環(huán)境在語(yǔ)法分析、代碼編譯階段的報(bào)錯(cuò)提示,才能逐個(gè)修復(fù)誤輸入的符號(hào)。
而MRS2在支持上述被動(dòng)檢測(cè)符號(hào)語(yǔ)法的基礎(chǔ)上,還增加了主動(dòng)式標(biāo)點(diǎn)轉(zhuǎn)換功能,可以將代碼編輯區(qū)輸入的逗號(hào)、分號(hào)、圓角括號(hào)等全角字符直接轉(zhuǎn)換為半角字符,避免了后續(xù)手動(dòng)修改的步驟,提升了代碼開(kāi)發(fā)效率。
3.4智能代碼輔助
- 代碼補(bǔ)全
在MRS2中,可以通過(guò)使用代碼補(bǔ)全來(lái)更快輸入代碼。只要開(kāi)始輸入關(guān)鍵字、變量名或函數(shù)名,MRS2便會(huì)提供一系列匹配的建議供你選擇。 - 代碼格式化
在軟件開(kāi)發(fā)過(guò)程中,代碼的整潔性和一致性對(duì)于提升代碼質(zhì)量和維護(hù)效率至關(guān)重要。為此,我們提供了強(qiáng)大的代碼格式化功能,幫助開(kāi)發(fā)者輕松修正代碼的縮進(jìn)、換行以及重新排列注釋,以確保代碼結(jié)構(gòu)的清晰和易讀。
此外,我們還支持自定義代碼格式模板,允許開(kāi)發(fā)者根據(jù)自己的編碼習(xí)慣和項(xiàng)目需求,靈活設(shè)置代碼的格式規(guī)范。有助于保持代碼風(fēng)格的一致性,從而減少因格式差異而導(dǎo)致的代碼審查沖突和誤解。 - 代碼導(dǎo)航:精準(zhǔn)定位,實(shí)時(shí)更新
在軟件開(kāi)發(fā)過(guò)程中,高效地導(dǎo)航代碼是提升開(kāi)發(fā)效率的關(guān)鍵。MRS2提供的代碼導(dǎo)航功能,不僅能夠快速跳轉(zhuǎn)至代碼的聲明、定義和引用位置,而且具備實(shí)時(shí)更新的能力,確保即使文件經(jīng)過(guò)修改,導(dǎo)航也不會(huì)跳轉(zhuǎn)至過(guò)時(shí)的位置。 - 代碼重構(gòu):全局多次重命名,安全可靠
在軟件開(kāi)發(fā)過(guò)程中,全局重命名是一項(xiàng)至關(guān)重要的功能,它允許開(kāi)發(fā)者快速且準(zhǔn)確地更新代碼中的變量名、函數(shù)名等符號(hào),以保持代碼的一致性和可讀性。
MRS2支持跨文件的多次全局重命名,在進(jìn)行全局重命名時(shí)能夠理解代碼中的上下文和作用域,即使存在相同名稱但作用域不同的局部變量,也能被準(zhǔn)確地區(qū)分和重命名,而且無(wú)論涉及的文件數(shù)量多少,都能準(zhǔn)確且一次性地完成所有相關(guān)標(biāo)識(shí)符的更新。
- 代碼分析:代碼質(zhì)量實(shí)時(shí)監(jiān)控(clang-tidy實(shí)時(shí)分析)
MRS2能夠?qū)崟r(shí)監(jiān)控代碼,尋找其中可能存在的錯(cuò)誤。一旦發(fā)現(xiàn)任何潛在問(wèn)題,它會(huì)在編輯器中高亮顯示可疑的代碼段,幫助開(kāi)發(fā)者迅速定位并解決問(wèn)題。 - 代碼診斷:快速修復(fù),高效解決編譯問(wèn)題
MRS2支持快速修復(fù)功能。該功能能夠自動(dòng)為許多常見(jiàn)的編譯問(wèn)題提供修復(fù)建議,并且可以根據(jù)建議自動(dòng)更新代碼。
另外MRS2能夠智能識(shí)別代碼中的點(diǎn)操作符(.)和箭頭操作符(->),并完成兩者的自動(dòng)轉(zhuǎn)換,有助于減少因操作符使用不當(dāng)而導(dǎo)致的編譯錯(cuò)誤。
3.5代碼編譯
- 可視化編譯分析,輸出段用量占比全展示
在嵌入式開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者經(jīng)常需要留意編譯輸出文件中芯片F(xiàn)LASH及RAM區(qū)的使用情況,防止出現(xiàn)代碼超出芯片容量的情況。而大多數(shù)集成開(kāi)發(fā)環(huán)境在結(jié)束編譯后,對(duì)此類信息的提示往往不夠明顯、詳細(xì),無(wú)形中增加了開(kāi)發(fā)者在此類頻繁操作上的時(shí)間成本和犯錯(cuò)風(fēng)險(xiǎn)。
MRS2支持在結(jié)束編譯后可視化展示輸出段的詳細(xì)信息:輸出段空間占比,F(xiàn)LASH/RAM使用情況,各變量、函數(shù)所在地址、大小、增刪狀態(tài)及所占空間大小變化。所有編譯輸出的關(guān)鍵信息一目了然,一定程度上提升了嵌入式項(xiàng)目的開(kāi)發(fā)效率。 - 精準(zhǔn)鏈接錯(cuò)誤跳轉(zhuǎn)
在嵌入式開(kāi)發(fā)過(guò)程中,GCC鏈接階段報(bào)錯(cuò)信息的準(zhǔn)確性一直是開(kāi)發(fā)者關(guān)注的焦點(diǎn)。傳統(tǒng)的報(bào)錯(cuò)信息往往不夠精確,錯(cuò)誤跳轉(zhuǎn)位置指向模糊,導(dǎo)致開(kāi)發(fā)者在排查問(wèn)題時(shí)耗時(shí)耗力。
MRS2改善這一情況,優(yōu)化了錯(cuò)誤報(bào)告機(jī)制,實(shí)現(xiàn)了精準(zhǔn)的鏈接錯(cuò)誤跳轉(zhuǎn)功能,以提升開(kāi)發(fā)效率。
(MRS2)
(舊版MRS)
3.6代碼優(yōu)化
- 快速中斷:
增添了一種全新的中斷服務(wù)程序處理模式,該中斷服務(wù)程序?qū)⒃镜?16 個(gè)寄存器的壓棧、出棧操作予以減少,轉(zhuǎn)而由硬件自動(dòng)進(jìn)行保存,提高了硬件中斷服務(wù)程序的響應(yīng)時(shí)間
(未開(kāi)啟優(yōu)化)
(開(kāi)啟優(yōu)化)
- 優(yōu)化程序存儲(chǔ)結(jié)構(gòu):
增加了highcode段,并將其部署在RAM區(qū)運(yùn)行,且段中的函數(shù)將不會(huì)被內(nèi)聯(lián),并對(duì)未使用的 highcode 段函數(shù)加以優(yōu)化,降低 RAM和FLASH 的使用量
(未開(kāi)啟優(yōu)化)
(開(kāi)啟優(yōu)化)
- 自定義壓縮指令:
新增8 條針對(duì) MCU 8/16位數(shù)據(jù)操作的XW擴(kuò)展壓縮指令,使用MRS2內(nèi)置的GCC12.2進(jìn)行測(cè)試。利用 CSIBE Benchmark 進(jìn)行 CodeSize 的對(duì)比實(shí)驗(yàn),CSIBE套件中最好的優(yōu)化比例為4.01%。 - 添加mcpy指令
mcpy指令功能與c語(yǔ)言庫(kù)函數(shù)memcpy相同,使用于內(nèi)存復(fù)制搬運(yùn)場(chǎng)景,能夠提高在內(nèi)存區(qū)域與數(shù)據(jù)寬度非對(duì)其時(shí)內(nèi)存搬運(yùn)的速度。 - 兼容軟件浮點(diǎn)庫(kù)
對(duì)工具鏈中的 lib 庫(kù)生成器以及 link 鏈接器的代碼加以修改,針對(duì)未涵蓋浮點(diǎn)數(shù)的庫(kù)源碼進(jìn)行處理,生成能夠同時(shí)兼容 ILP32、ILP32F 這兩種 ABI 的庫(kù),使得所生成的庫(kù)能夠在具備硬件浮點(diǎn)擴(kuò)展和不具備硬件浮點(diǎn)擴(kuò)展的工程中均能正常使用,降低了開(kāi)發(fā)者對(duì)庫(kù)的維護(hù)工作量。 - 運(yùn)行庫(kù)優(yōu)化
添加基于定點(diǎn)運(yùn)算的數(shù)學(xué)函數(shù)庫(kù) IQMATH
添加專有打印函數(shù)printf,用以縮減代碼規(guī)模
GCC8和GCC12生成的庫(kù),在鏈接時(shí)能夠彼此兼容
3.7代碼下載
- 內(nèi)置專屬下載模塊,支持啟用外部下載工具
MRS2內(nèi)置了適配WCH-Link系列硬件調(diào)試器的代碼下載模塊,支持查詢硬件調(diào)試器模式、開(kāi)啟/禁用芯片代碼保護(hù)功能、設(shè)置芯片ROM+RAM分配狀態(tài)、禁用芯片兩線調(diào)試接口、全擦、下載、校驗(yàn)、復(fù)位、啟用SDI打印等功能。同時(shí),MRS2還支持切換為其他硬件調(diào)試器,按用戶指定的啟動(dòng)參數(shù)調(diào)用外部軟件來(lái)完成下載操作。 - 支持遠(yuǎn)程下載功能
MRS2還支持遠(yuǎn)程下載功能,通過(guò)近、遠(yuǎn)端MRS2中運(yùn)行的遠(yuǎn)程協(xié)助模塊將近端(調(diào)試方)編譯生成的目標(biāo)文件加密發(fā)送至遠(yuǎn)端(被調(diào)試方),再自動(dòng)調(diào)用遠(yuǎn)端連接的WCH-Link硬件調(diào)試器完成下載操作,并將程序運(yùn)行結(jié)果回顯到近端。 - 集成多種獨(dú)立下載工具
除了內(nèi)置的下載功能模塊,MRS2還集成了WCHISPStudio、WCH-LinkUtility等獨(dú)立下載工具,以實(shí)現(xiàn)在不同的使用場(chǎng)景、芯片預(yù)留接口條件下滿足開(kāi)發(fā)者的代碼下載需求。
3.8代碼調(diào)試
- 完整的在線仿真調(diào)試功能
MRS2支持單步運(yùn)行、重新運(yùn)行、暫停運(yùn)行等在線仿真調(diào)試功能,提供了代碼反匯編、寄存器、外設(shè)、調(diào)用棧、變量等監(jiān)控窗口。 - 支持一鍵開(kāi)啟RISC-V半主機(jī)模式(semihosting)
MRS2支持一鍵開(kāi)啟semihosting功能,無(wú)需開(kāi)發(fā)者手動(dòng)移植相關(guān)接口函數(shù),可直接將打印函數(shù)輸出的內(nèi)容顯示到控制臺(tái)。配合簡(jiǎn)化的printf函數(shù),在減少代碼占用的同時(shí),不再額外需要串口硬件、上位機(jī)串口接收軟件,簡(jiǎn)化了代碼的調(diào)試環(huán)境搭建過(guò)程。 - 在線異常追蹤調(diào)試
在實(shí)際的嵌入式產(chǎn)品使用場(chǎng)景中,有部分代碼異常運(yùn)行現(xiàn)象只會(huì)在特定的軟硬件環(huán)境下偶現(xiàn)。此時(shí)如果采用常規(guī)的在線仿真調(diào)試手段,需要先復(fù)位芯片再進(jìn)入調(diào)試模式,從而導(dǎo)致多次重試都無(wú)法復(fù)現(xiàn)之前的異常現(xiàn)象,極大降低了此類問(wèn)題的處理效率。
MRS2針對(duì)此類應(yīng)用場(chǎng)景,特別支持了在線異常追蹤調(diào)試方法,通過(guò)GDB指令,獲取芯片當(dāng)前變量、寄存器、Flash、調(diào)用棧內(nèi)容,無(wú)需芯片先復(fù)位、運(yùn)行再去監(jiān)控變量、寄存器等內(nèi)容,最大程度保留硬件瞬時(shí)狀態(tài),利于追蹤代碼問(wèn)題。
- 支持遠(yuǎn)程源碼級(jí)、目標(biāo)代碼級(jí)調(diào)試
MRS2還支持遠(yuǎn)程調(diào)試功能,通過(guò)近、遠(yuǎn)端MRS2中運(yùn)行的遠(yuǎn)程協(xié)助模塊將近端(調(diào)試方)編譯生成的目標(biāo)文件、調(diào)試指令等加密發(fā)送至遠(yuǎn)端(被調(diào)試方),再自動(dòng)調(diào)用遠(yuǎn)端連接的WCH-LinkE硬件調(diào)試器與芯片通信,完成各項(xiàng)單步操作,并將單步調(diào)試執(zhí)行結(jié)果回顯到近端。MRS2也支持遠(yuǎn)程目標(biāo)代碼級(jí)調(diào)試:近端用戶將修改后編譯生成的目標(biāo)文件遠(yuǎn)程下載到目標(biāo)芯片,然后根據(jù)遠(yuǎn)端回顯的芯片運(yùn)行時(shí)打印信息來(lái)調(diào)整近端源碼,再重復(fù)上述下載、查看回顯信息過(guò)程,直到確定最終的代碼內(nèi)容。
四、開(kāi)放性
- 開(kāi)放式廠商組件
MRS2支持在線更新各類模塊組件,如SDK、OpenOCD等。芯片及開(kāi)發(fā)板廠商可以通過(guò)MounRiver組件發(fā)布平臺(tái),上傳組件供其他用戶下載使用。
五、下載與更新
- 訪問(wèn)我們的官方網(wǎng)站:http://www.mounriver.com/download,根據(jù)操作系統(tǒng)選擇對(duì)應(yīng)的安裝包進(jìn)行下載。
- 軟件支持在線、離線更新操作。
六、反饋與建議
審核編輯 黃宇
-
軟件框架
+關(guān)注
關(guān)注
0文章
22瀏覽量
9878 -
集成開(kāi)發(fā)環(huán)境
+關(guān)注
關(guān)注
0文章
64瀏覽量
17724 -
RISC-V
+關(guān)注
關(guān)注
45文章
2292瀏覽量
46247
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論