GD32VF103 開發(fā)板
去年九月份的時(shí)候 RT-Thread 的 Andy Chen 組織定做了一塊 GD32V 開發(fā)板,托 Andy 的福,我也搭車買了一塊。
這塊開發(fā)板小巧精美,供電、燒錄、調(diào)試信息打印都是通過一個(gè) Type-C USB 接口進(jìn)行,更重要的是它所搭載的主控芯片 GD32VF103 是一顆采用 RISC-V 內(nèi)核設(shè)計(jì)的 MCU,這對于對 RISC-V 感興趣的同學(xué)來說,具有十足的吸引力。
GD32VF103 系列 SOC 是兆易創(chuàng)新與芯來科技合作,基于 RISC-V 架構(gòu)設(shè)計(jì)的一款面向 IOT 領(lǐng)域的 MCU,主頻最高 108 MHZ,根據(jù)定位差異,片內(nèi) Flash 16~128 KB,片上 SRAM 8~32 KB。
在定制這塊板子的時(shí)候,陳老大為我們選了 Flash 和 SRAM 容量最大的那顆,所以在選擇上大家不用糾結(jié)。
更加難能可貴的是兆易開放了完整的用戶手冊,有 500 多頁。這顆芯片采用的 RISC-V 內(nèi)核是芯來科技設(shè)計(jì)的,代號(hào) Bumblebee,芯來科技也開放了一份關(guān)于 Bumblebee 的指令架構(gòu)手冊,詳細(xì)描述了這顆芯片采用的 RISC-V 指令集、內(nèi)核特權(quán)架構(gòu)、中斷異常、Timer 以及低功耗相關(guān)的機(jī)制,總的來說,用這顆芯片來做 RISC-V 相關(guān)的研究學(xué)習(xí),還是很合適的。
SDK
隨開發(fā)板配套了一份 RT-Thread Nano SDK,里面還包含有開發(fā)板的原理圖和簡單的使用手冊以及代碼燒寫工具 GigaDevice MCU ISP Programmer ,整套 SDK 可以在 https://realthread.cowtransfer.com/s/8350a2c039b740 下載。
由于當(dāng)時(shí)為了讓大家盡快拿到開發(fā)板,所以倉促中板子上的 JTAG 口留下了一點(diǎn)小瑕疵——如果要連 JTAG 的話,需要做一點(diǎn)小修改,這個(gè)在開發(fā)板原理圖《GD32VF_EVB_V1_20190901》中有說明。
參考配套文檔《GD32VF使用說明_20190919》 即可完成 RT-Thread 代碼的編譯,然后根據(jù)該文檔描述的固件燒錄方法,按著板子的 BOOT0 按鍵,再按 RESET 按鍵使板子進(jìn)入燒寫模式,然后通過GigaDevice MCU ISP Programmer 燒錄固件到板子上。
需要注意的是,板子燒錄固件是通過板子上的 UART 轉(zhuǎn) USB 燒寫的,燒錄時(shí)串口波特率需要設(shè)置為 256000,系統(tǒng)啟動(dòng)后,RT-Thread 也通過這個(gè) UART 打印調(diào)試信息,打印調(diào)試信息的波特率為 115200,注意不要搞錯(cuò)了。
另外,同一時(shí)刻,串口調(diào)試工具和 GigaDevice MCU ISP Programmer 燒錄軟件,只有一個(gè)能占用串口,所以在燒錄固件之前要記得關(guān)閉串口調(diào)試工具,否則有可能會(huì)無法正常進(jìn)入燒錄模式。
運(yùn)行 RT-Thread mainline
如果是做產(chǎn)品的話,使用芯片供應(yīng)商提供的 SDK 是最靠譜的,如果是學(xué)習(xí)研究的話,我一向喜歡嘗試最新的代碼,所以 RT-Thread mainline 是一定要試一試的。
安裝 ENV 工具 和 risc-v toolchain
RT-Thread 支持 Windows 和 Linux 兩種編譯開發(fā)環(huán)境,這里我打算在 Windows 下編譯開發(fā),所以需要先去 RT-Thread 官網(wǎng)下載一個(gè) ENV 工具:https://www.rt-thread.org/page/download.html
工具下載下來后解壓到任何你喜歡的地方,但是記住路徑里面不要有中文字符,雙擊 env.exe 可執(zhí)行程序就可以啟動(dòng)進(jìn)入命令行模式,還可以通過右鍵把它添加到 Windows 的開始工具欄。
關(guān)于 ENV 的詳細(xì)使用說明可以參考《Env用戶手冊》和 《RT-Thread 編程指南》,這兩份文檔在 RT-Thread 官網(wǎng)都可以下載:https://www.rt-thread.org/document/site/
我發(fā)現(xiàn)工具里面默認(rèn)只帶了 arm_gcc 的 toolchain,這里要編譯 RISC-V,所以還需要下載 RISC-V 的 toolchain,RISC-V 官方的 toolchain 在 Github 上,地址如下:https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases :
選擇對應(yīng)的版本,下載后解壓到 ENV 工具的 /tools/gnu_gcc/risc-v/目錄下。
為了能在 ENV 命令行里面認(rèn)到 riscv-none-embed-gcc 相關(guān)的命令,還需要做如下修改:
即在 env 的 tools/ConEmu/ConEmu/CmdInit.cmd 文件里重新設(shè)置 RTT_EXEC_PATH 環(huán)境變量,把原來的 arm_gcc 路徑替換成剛才下載的 risc-v toolchain 的安裝路徑。
我查閱了前面提到的兩份RT-Thread 文檔和官網(wǎng)論壇上關(guān)于 ENV 的常見問題問答貼,沒找到關(guān)于在 ENV 里面添加 命令的修改說明,所以上面這個(gè)修改方法是我嘗試出來的,不一定科學(xué),如果有人知道更科學(xué)的修改方法,請告訴我。
當(dāng)然,前面的 SDK 包里也提供了 env 和 risc-v toolchain,但是在這里我想用最新的工具和代碼從頭開始嘗試下整個(gè)過程。
修改 RT-Thread mainline 代碼
RT-Thread 的官方代碼托管在 Github 上,可以通過 git 下載:
git clone https://github.com/RT-Thread/rt-thread.git
其實(shí) RT-Thread mainline 已經(jīng)支持了 GD32VF103 ,不過對應(yīng)的開發(fā)板是 GigaDevice 官方的 gd32vf103-eval。
這塊開發(fā)板和我手上的開發(fā)板有個(gè)很重要的區(qū)別——這塊開發(fā)板上面有貼一顆外部高速晶振,而我手上的板子沒有貼,芯片是依靠內(nèi)部的 8M RC 振蕩時(shí)鐘工作的,內(nèi)部振蕩時(shí)鐘的精度要低一些,但是對于不使用以太網(wǎng)的場合,基本是夠用的。
所以在系統(tǒng)時(shí)鐘配置部分需要做如下修改:
即把 __SYSTEM_CLOCK_108M_PLL_IRC8M 這個(gè)宏打開, __SYSTEM_CLOCK_108M_PLL_HXTAL 這個(gè)宏屏蔽。
我們板子上有帶 三個(gè) LED、所以流水燈這種經(jīng)典項(xiàng)目必須加上:
在 bsp/gd32vf103v-eval/applications/main.c 文件的 main 函數(shù)中加入如下內(nèi)容:
rt_kprintf('Hello GD32VF103VBT6! build %s %s ', __DATE__, __TIME__); // gpio clk rcu_periph_clock_enable(RCU_GPIOE); // gpio init gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_3); gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_4); gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_5); while (1) { gpio_bit_reset(GPIOE, GPIO_PIN_3);rt_thread_mdelay(300); gpio_bit_reset(GPIOE, GPIO_PIN_4);rt_thread_mdelay(300); gpio_bit_reset(GPIOE, GPIO_PIN_5);rt_thread_mdelay(300); gpio_bit_set(GPIOE, GPIO_PIN_3);rt_thread_mdelay(30); gpio_bit_set(GPIOE, GPIO_PIN_4);rt_thread_mdelay(30); gpio_bit_set(GPIOE, GPIO_PIN_5);rt_thread_mdelay(30); }
修改后的代碼我推送到了Gitee 上,如果有同學(xué)感興趣,可以直接 clone 下來 have a try:
git clone https://gitee.com/andyshrk/rt-thread.git
編譯
打開 ENV 工具,進(jìn)入 RT-Thread 源碼的 /bsp/gd32vf103v-eva/ 目錄下運(yùn)行 scons 命令進(jìn)行編譯:
編譯成功會(huì)生成 rtthread.bin 文件,參考提到的文檔使用 GigaDevice MCU ISP Programmer 燒寫到開發(fā)板上。
系統(tǒng)成功啟動(dòng)后在串口中會(huì)看到如下打印,并且板子上的 3 個(gè) LED 燈會(huì)輪流閃爍:
這個(gè) warning 似乎是因?yàn)槟硞€(gè)堆棧設(shè)置的太小了,等我后面具體看下代碼再處理掉。
上一篇:【GD32H757Z海棠派開發(fā)板使用手冊】第十一講 SPI-SPI NOR FLASH讀寫實(shí)驗(yàn)
下一篇:如何使用串口來給GD32F10x燒寫程序
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- LTC3621HMS8E-3.3 1.2V 輸出、同步至 600kHz、強(qiáng)制連續(xù)模式同步降壓型穩(wěn)壓器的典型應(yīng)用
- 基于磁性旋轉(zhuǎn)編碼器的 AS5145B-EK-AB-STM1.0、AS5145B Eval-Kit 步進(jìn)電機(jī)
- AKD4621-B,AK4621 24 位音頻編解碼器評估板
- DC2716A,基于 LT8364 低 IQ 升壓/SEPIC/反相穩(wěn)壓器的演示板,4.5V 至 20VIN 低 EMI 升壓,VOUT = 24V @ 高達(dá) 1.6A,2MHz 開關(guān)
- 用于 SMPS 的 L6566B 多模式控制器的典型(全功能、QR 操作)應(yīng)用
- LTC4229 理想二極管和熱插拔控制器的典型應(yīng)用
- LT1634BCS8-2.5 超準(zhǔn)確 ±4.096V 輸出電壓基準(zhǔn)的典型應(yīng)用
- 面向模擬可編程邏輯控制器模塊的超小型 1W、12V-36V 隔離式電源參考設(shè)計(jì)
- ADR366A 3.3V 輸出低功耗、低噪聲電壓基準(zhǔn)的典型應(yīng)用,具有灌/拉能力
- 使用 Infineon Technologies AG 的 BTS 610 L1 的參考設(shè)計(jì)
- 汽車交流發(fā)電機(jī)的構(gòu)造
- 汽車電源系統(tǒng)常見故障檢修
- 汽車電源系統(tǒng)的工作過程
- 影響國內(nèi)電動(dòng)汽車市場發(fā)展的因素有哪些
- 對于純電動(dòng)汽車來說需要換機(jī)油嗎
- 電動(dòng)汽車對于懸架的要求會(huì)不會(huì)比較高
- 是德科技探討AI數(shù)據(jù)中心:下一代AI網(wǎng)絡(luò)需要更高階的驗(yàn)證
- 你會(huì)在車上找到哪一些物聯(lián)網(wǎng)技術(shù)
- 區(qū)塊鏈?zhǔn)侨绾螛?gòu)建車聯(lián)網(wǎng)的安全性的
- Microchip推出Adaptec? SmartRAID 4300 系列加速器
- 指靜脈識(shí)別會(huì)是下一個(gè)爆點(diǎn)嗎?
- 從HUD到AR-HUD,只是開啟了未來車窗交互的“序幕”
- 英國錫里斯電力與日產(chǎn)合作深化 研發(fā)低成本電動(dòng)車固態(tài)氧化物燃料電池技術(shù)
- 自動(dòng)駕駛汽車需要什么樣的OTA架構(gòu)?
- 我國網(wǎng)絡(luò)安全依舊存在短板,要想解決國家網(wǎng)絡(luò)安全問題必須先知道這三大策略!
- STM32F1xx ADC 采樣 頻率的確定
- 新能源汽車深入二三線城市 岳陽首塊新能源車號(hào)牌上路
- stm32f4開發(fā)板驅(qū)動(dòng)LCD液晶屏的個(gè)人總結(jié)
- STM32的FSMC驅(qū)動(dòng)TFT筆記
- 汽車的電瓶用電快?這些惡習(xí)要杜絕