先楫半導體的HPM6750集成2個RISC-V 處理器,主頻高達816MHz。既然有兩個CPU,豈可讓它白白浪費?本文來帶你一起嘗試雙核例程,體驗雙引擎帶來的風馳電掣般的感覺。
HPM6750雙核采用主從結構,CPU0 和CPU1 采用相同配置:
●支持相同指令集
●相同容量的L1 指令和數據緩存
●相同容量的指令和數據本地存儲器:256 KB ILM 和256 KB DLM
CPU0 和CPU1 采用相同的存儲器映射,以下為例外:
● CPU 自身的指令/數據本地存儲器ILM / DLM 為私有;
●FGPIO 為私有
●平臺中斷控制器PLIC 為私有
●軟件中斷控制器PLICSW 為私有
●機器定時器MCHTMR 為私有
CPU0 和CPU1 采用相同的特權模式設置。

CPU0 為主CPU,CPU1 為從CPU,當復位發生時,系統總是由CPU0 啟動,而CPU1 處于待機狀態。需要時,由CPU0 裝載CPU1 的程序鏡像,之后釋放CPU1,步驟如下:
1. CPU0 將CPU1 的代碼鏡像地址寫入SYSCTL_CPU1_GPR0 寄存器
2. CPU0 將CPU1 啟動代號寫入SYSCTL_CPU1_GPR1 寄存器,代號為0xC1BEF1A9
3. CPU0 將SYSCTL_CPU1_LP [HALT] 位清0,即可釋放CPU1
雙核應用程序的開發步驟如下:

根據
“E:\sdk_env_v0.9.0\hpm_sdk\samples\multicore\hello”中README_zh.md文件如下:
多核示例工程在Core0上運行"hello word"示例,在core1上運行"rgb_led"示例。
在本工程中:
- 串口輸出 "hello world"; 鍵盤手動輸入字符串信息,通過串口打印出來
- RGB LED會在紅、綠、藍三色中依次切換
## 硬件設置
BOOT_PIN 應該設置為:0-OFF, 1-OFF
## 生成和編譯多核工程
本示例中:core0示例在FLASH中原地執行, core1工程在ILM里執行。
用戶必須先生成和編譯__Core1__工程
用戶必須在生成和編譯完core1工程后再生成和編譯__Core0__工程
### 生成core1工程
__CMAKE_BUILD_TYPE__ 必須是 下列選項中的一種:
- *"sec_core_img"*
- *"sec_core_img_release"*
若通過SDK env 包來生成工程,需要用 *"-t sec_core_img"*
### 生成core0工程
__CMAKE_BUILD_TYPE__ 無限制
## 運行現象
- 下載core0示例到設備并運行
- 下載core1示例到設備并運行
本文參照以上說明將在core0和core1中分別新建FreeRTOS相關程序,即在雙核上各自運行RTOS。
新建Core1程序的SES工程
復制HPM 6750的SDK文件夾“sdk_env_v0.9\hpm_sdk\samples\rtos”下面的freertos_hello實例工程,復制到“sdk_env_v0.9.0\hpm_sdk\samples\multicore\hello\”并重新命名成“FreeRTOS_RISCV1”。

修改CMakeLists.txt文件中的配置,增加core1的鏈接文件,如下圖所示:

然后根據SDK 開發指南文檔《HPM6750EVKMINI_UG》中的工程生成步驟,來生成segger embedded studio的工程文件。SDK env 包來生成工程,需要增加"-t sec_core_img"*

新建Core0程序的SES工程
復制HPM 6750的SDK文件夾“sdk_env_v0.9\hpm_sdk\samples\rtos”下面的freertos_hello實例工程,復制到“sdk_env_v0.9.0\hpm_sdk\samples\multicore\hello\”并重新命名成“FreeRTOS_RISCV”。
修改CMakeLists.txt文件中的配置,增加core0的鏈接文件,如下圖所示:

然后根據SDK 開發指南文檔《HPM6750EVKMINI_UG》中的工程生成步驟,來生成segger embedded studio的工程文件。

編譯Core1程序的SES工程
因為core0程序中依賴core1工程編譯并轉換的源文件,因此,在編譯core0程序前,必須先將core1工程編譯好。
SDK會生成工程文件FreeRTOS_RISCV在FreeRTOS_RISCV\hpm6750evkmini_build\segger_embedded_studio文件路徑下面,通過雙擊該文件可以直接進入SES(segger embedded studio),并打開該工程,然后編譯。
在core1的工程編譯完成會生成文件“sec_core_img.c”,并被自動拷貝到core0的工程路徑FreeRTOS_RISCV/src/。在core1的FreeRTOS例程中主要完成RGBLED的依次點亮運行。
編譯Core0程序的SES工程
在core0的FreeRTOS例程中主要完成RTOS多任務運行。
先在core0的工程增加從核鏡像加載處理接口。

并將該接口放置在board_init之后

多核調試
在進行雙核程序調試時,先下載并啟動core0的程序。


先在core0的SES工程中按F5,讓core0主核的程序運行;再在core1的SES工程中按F5,讓core1的程序運行。

可以看出core0的程序任務1和任務2,能夠輪流執行,并且IDLE任務在他們休眠的間隙能夠被調度執行。
對上面的代碼稍作調整,調整任務1和任務2的延時時間,其中task2不再延時。
結論
HPM6750 采用雙RISC-V 內核,可以方便的適配主核和從核的各種接口,能夠充分靈活地利用soc的各種資源。為實時性要求高,控制內容多樣的應用提供更為友好的體驗。
-
雙核
+關注
關注
0文章
40瀏覽量
15591
發布評論請先 登錄
先楫方案 | LED車尾燈純硬件高刷新率解決方案
經驗分享 | eclipse搭建先楫開發環境
先楫半導體榮膺“年度優秀AI機器人創新產品獎” | “芯”動力賦能產業升級
先楫半導體閃耀2025灣芯展:以RISC-V技術賦能機器人產業創新
先楫半導體完成B+輪融資,中移和創投資加持
先楫半導體獲浦東產業基金戰略投資,深入布局機器人賽道創“芯”領域
運控龍頭“芯”動向 | 雷賽智能戰略投資先楫半導體
雙口萬兆光纖網卡:解鎖高速視覺系統的澎湃動力
先楫半導體高性能MCU入駐立創商城,國產芯勢力再添新動能
國產“HPM芯”賦能機器人關節,先楫半導體亮相松山湖IC創新論壇
先楫半導體HPM6E8Y:先楫實時控制芯片驅動的機器人關節“芯”時代
人形機器人火爆背后,先楫半導體解構運動控制芯片進化密碼
600MHz RISC-V 雙核加持!先楫HPM6P00重新定義國產高性能混合信號MCU
“狂飆!來感受先楫芯高速雙引擎的澎湃動力。”
評論