織女星開發板啟動模式修改——從ARM M4核啟動


前言

剛開始玩織女星開發板的時候,想先從熟悉的ARM核入手,連上Jlink,打開MDK版本的Demo程序,編譯OK,卻檢測不到芯片,仔細看了一下文檔,原來RV32M1芯片默認從RISC-V核啟動,如果想要調試下載ARM核程序,需要切換為ARM核啟動,然后按照文檔操作步驟,完成了啟動模式的修改,現在分享給大家。

RV32M1芯片內核簡介

織女星開發板主控芯片RV32M1,片上集成了四個核。

兩個RISC-V內核:

  • RISC-V RI5CY Core
  • RISC-V ZERO_RISCY Core

兩個ARM內核:

  • ARM Cortex-M4F Core(CM4)
  • ARM Cortex-M0+ Core(CM0+)

兩個ARM核共用一個JTAG調試口,兩個RISC-V核共用一個JTAG調試口,每個核都可以運行在48MHz頻率,但在高速模式(HSRUN)時,可達72MHz,如果要查看系統當前的運行頻率,可以在主程序中使用如下函數來獲取系統時鍾頻率:

    uint32_t SysClk;
    SystemCoreClockUpdate();  
    SysClk = SystemCoreClock; 
    PRINTF("系統時鍾: %d \r\n", SysClk);

4個核被分為兩個子系統,大核CM4F/RI5CY和小核CM0+/ZERO-RISCY,片上集成1.25 MB Flash 、384 KB SRAM,其中1 MB的Flash被大核所使用,起始地址0x0000_0000,另外的256 KB Flash被小核所使用,起始地址0x0100_0000。

Flash地址示意

為了支持多核運行模式,RV32M1片上集成了多核管理系統(Multi_Core Unit),包括消息傳遞單元(Messaging Unit)、信號量2(SEMA42)、系統控制模塊 (MSCM)、 擴展資源控制器 (XRDC)等模塊,用於多核間的通信和控制。

內部整體框圖

關於RV32M1多核開發的詳細介紹,可以參考官方文檔:Develop_Multicore_Application_on_RV32M1.pdf

啟動模式的配置

通過配置RV32M1片上的FOPT寄存器(Flash Option Register),可以支持上電時從不同的核來啟動,默認從RISC-V RI5CY內核啟動,如果要進行ARM核開發,如M4開發,則必須切換為從ARM核啟動,否則當使用調試器進行程序下載時,根本不能識別到ARM芯片,這一點要特別注意。關於FOPT寄存器各位的描述,可以查看RV32M1參考手冊P450,為了便於切換啟動模式,官方已經為我們寫好了配置文件,直接通過openocdtelnet軟件就可以完成對FOPT寄存器的配置。

安裝openocd調試軟件

  • 解壓Toolchain_Windows.zip中的openocd.zip,解壓路徑可任意,建議解壓到Eclipse安裝目錄下的[DISK:]\eclipse\GNU MCU Eclipse\openocd\bin

  • 為了能在cmd命令端直接使用openocd命令,我們需要在環境變量PATH中添加一條,值為openocd下bin文件夾的路徑,我的是在:F:\VEGA_Board\IDE\eclipse\GNU MCU Eclipse\openocd\bin

  • 測試是否安裝成功。在cmd命令窗口輸入openocd回車,彈出如下命令,說明安裝成功。

      C:\Users\LAPTOP>openocd
      Open On-Chip Debugger 0.10.0+dev-00433-g849f49ca (2019-01-04-07:48)
      Licensed under GNU GPL v2
      For bug reports, read
              http://openocd.org/doc/doxygen/bugs.html
    

安裝 telnet 客戶端應用

Windows系統可以通過如下命令安裝使用:

  • cmd命令窗口輸入如下命令來安裝telnet:

      pkgmgr /iu:"TelnetClient"
    
  • 測試是否安裝成功。cmd命令窗口輸入telnet命令,彈出如下窗口,說明安裝成功。

      歡迎使用 Microsoft Telnet Client
      Escape 字符為 'CTRL+]'
      Microsoft Telnet>
    
  • 輸入help查看幫助信息:

      Microsoft Telnet> help
      
      命令可能是縮寫。支持的命令為:
      
      c    - close                    關閉當前連接
      d    - display                  顯示操作參數
      o    - open hostname [port]     連接到主機(默認端口 23)。
      q    - quit                     退出 telnet
      set  - set                      設置選項(鍵入 'set ?' 獲得列表)
      sen  - send                     將字符串發送到服務器
      st   - status                   打印狀態信息
      u    - unset                    解除設置選項(鍵入 'set ?' 獲得列表)
      ?/h  - help                     打印幫助信息
    

升級Jlink固件

修改啟動模式,只能通過RISC-V內核來修改啟動模式,即通過RISC-V JTAG調試口,

  • 升級當前Jlink驅動程序為支持RISC-V調試的驅動程序,即設備管理器里為

  • 確保openocd已經添加到環境變量
  • 打開SDK目錄下的\rv32m1_sdk_riscv\boards\rv32m1_vega目錄

  • 在當前窗口打開cmd命令窗口,在路徑欄輸入cmd即可在當前路徑下打開cmd命令窗口

  • 在打開的命令窗口輸入openocd -f rv32m1_ri5cy.cfg,彈出如下窗口說明連接成功。

  • 按Win+R快捷鍵,輸入cmd,再打開一個cmd命令窗口,輸入telnet localhost 4444命令

      C:\Users\LAPTOP>telnet localhost 4444
      正在連接localhost....
    

彈出telnet窗口,輸入cm4_boot,選擇從CM4核啟動

	Open On-Chip Debugger
	>cm4_boot

先按住板子上的復位按鍵SW1,然后按回車執行命令。

	>cm4_boot
	>

稍等1秒鍾,成功執行。然后重新上電,此時就是從ARM CM4核啟動的。

如果想直接使用板載調試器來調試ARM核,Jlink驅動程序需要恢復為原來的J-link driver,操作步驟可以參考:織女星開發板調試器升級為Jlink固件,打開ARM SDK目錄下的點燈程序,目錄為:rv32m1_sdk_arm\boards\rv32m1_vega\driver_examples\gpio\led_output\cm4\mdk,編譯,下載,調試,均正常。

使用批處理文件來簡化操作

為了更方便的來修改啟動模式,可以把上述的兩條命令寫成批處理文件:

  • 在rv32m1_ri5cy.cfg所在的路徑,新建一個1_openocd.txt文件,以記事本方式打開,輸入命令openocd -f rv32m1_ri5cy.cfg,文件擴展名修改為bat,即成為批處理文件。
  • 在rv32m1_ri5cy.cfg所在的路徑,新建一個2_telnet.txt文件,輸入命令telnet localhost 4444,修改擴展名為abt
  • 在以后需要更改啟動配置時,只需要雙擊1_openocd.bat文件,然后雙擊2_telnet.bat文件,然后輸入對應的啟動命令。如ri5cy_bootcm4_bootzero_bootcm0_boot,然后重新上電,芯片就會從配置的核啟動。

一些奇怪的事情

  • 當配置為從ARM CM4核啟動時,上電之后,執行程序會延時幾秒鍾。
  • 配置成CM0啟動時,能檢測到芯片,但是程序下載不進去,不知道這是為什么。

而配置成RI5CY和ZERO_RISCY核啟動時,下載調試均正常。

參考資料

歷史精選


歡迎關注我的個人博客www.wangchaochao.top

或微信掃碼關注我的公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM