SemiDrive E3 多核心運行 FreeRTOS 配置介紹

關鍵字 :SemiDriveE3FreeRTOS 配置開發板e3640appgateway調試器

一、概述

本文主要介紹如何通過相關配置,使 Semidrive E3 晶片中的 SF 和 SP0 core 分別運行一套 FreeRTOS 操作系統。

        以 multicore-xip 示例作為基礎,參考 FreeRTOS-xip 示例的配置,將 FreeRTOS 移植至 SF 和 SP0 core 工程上,使 SF 和 SP0 core 分別運行一套 FreeRTOS 系統,更多 core 運行 FreeRTOS 也可參考相同方法實現。

硬體設備:E3640 GATEWAY 開發板

軟體包:SSDK PTG3.0

調試器:J-Link

圖 1.1 E3640 Gateway 開發板

圖 1.1 E3640 Gateway 開發板

二、SDK 下載

        使用 SemiDrive support 系統上的 SSDK Builder,選擇型號 E3640 和示例 app_demo/multicore-xip 及 FreeRTOS-xip 生成參考代碼。

FreeRTOS-xip 示例主要介紹以 xip 方式運行 FreeRTOS,但只有 SF 核單獨運行。

        multicore-xip 示例主要介紹所有的 core 程序都以 xip 方式運行在 flash 上,由 bootloader boot 其餘核的示例。

三、具體配置內容

1. sf 工程

1.1 在 sf 工程中的 main.c 內添加相關頭文件。

圖 3.1 sf 工程添加頭文件

圖 3.1 sf 工程添加頭文件

1.2 在 main() 函數中添加中斷初始化,創建 task 並啟動任務調度,屏蔽不相關代碼。

圖 3.2 sf 工程 main() 函數修改內容

圖 3.2 sf 工程 main() 函數修改內容

1.3 添加 TaskA_Entry() 函數。

圖 3.3 sf 工程添加 TaskA_Entry() 函數

圖 3.3 sf 工程添加 TaskA_Entry() 函數

1.4 修改 config.h 文件,添加 OS 相關宏定義。

圖 3.4 sf 工程中 config.h 添加 OS 相關宏定義

圖 3.4 sf 工程中 config.h 添加 OS 相關宏定義

1.5 參考 FreeRTOS 示例,在 configs 文件夾下添加 FreeRTOSConfig.c 和 FreeRTOSConfig.h 文件。

圖 3.5 sf 工程添加 FreeRTOSConfig.c/h  文件

圖 3.5 sf 工程添加 FreeRTOSConfig.c/h  文件

圖 3.6 sf 工程添加的 FreeRTOSConfig.c 文件內容

圖 3.6 sf 工程添加的 FreeRTOSConfig.c 文件內容

        1.6 在 IAR 工程中添加 rtos Group 和 FreeRTOS 相關文件,其中 port.c 和 portASM.s 文件路徑為 rtos\FreeRTOS\Source\portable\IAR\ARM_CR5;heap_4.c 文件路徑為 rtos\FreeRTOS\Source\portable\MemMang;其餘文件的路徑為 rtos\FreeRTOS\Source。

圖 3.7 sf 工程添加 rtos Group 和 files

圖 3.7 sf 工程添加 rtos Group 和 files

1.7 在 driver Group 中添加 btm 相關文件,文件路徑為 drivers\source\btm。

圖 3.8 sf 工程添加 btm 相關 files

圖 3.8 sf 工程添加 btm 相關 files

        1.8 在 Boards Group 中添加 FreeRTOSConfig.c,文件路徑在剛剛添加的 boards\e3_gateway\app_demo\multicore-xip\sf\configs 下。

圖 3.9 sf 工程添加 FreeRTOSConfig.c 文件

圖 3.9 sf 工程添加 FreeRTOSConfig.c 文件

1.9 修改 IAR 配置,添加引用文件相對路徑。

圖 3.10 sf 工程添加引用文件的相對路徑

圖 3.10 sf 工程添加引用文件的相對路徑

2. sp0 工程

2.1 在 sp0 工程中的 main.c 內添加相關頭文件。

圖 3.11 sp0 工程添加頭文件

圖 3.11 sp0 工程添加頭文件

 

2.2 在 main() 函數中添加 FreeRTOS 相關代碼,創建 task 並啟動任務調度。


圖 3.12 sp0 工程 main() 函數添加 FreeRTOS 相關代碼

2.3 添加 TaskB_Entry() 函數。

圖 3.13 sp0 工程添加 TaskB_Entry() 函數   

圖 3.13 sp0 工程添加 TaskB_Entry() 函數

2.4 修改 config.h 文件,添加 OS 相關宏定義。

圖 3.14 sp0 工程中 config.h 添加 OS 相關宏定義   

圖 3.14 sp0 工程中 config.h 添加 OS 相關宏定義

        2.5 與 sf 工程一樣,參考 FreeRTOS 示例,在 configs 文件夾下添加 FreeRTOSConfig.c 和 FreeRTOSConfig.h 文件,其中使用的 BTM 改為 BTM2,修改對應的 base 和 irq,並修改名稱 btm1 為 btm2。

圖 3.15 sp0 工程添加 FreeRTOSConfig.c/h 文件

圖 3.15 sp0 工程添加 FreeRTOSConfig.c/h 文件

圖 3.16 sp0 工程添加的 FreeRTOSConfig.c 文件內容

圖 3.16 sp0 工程添加的 FreeRTOSConfig.c 文件內容

        2.6 與 sf 的 IAR 工程修改內容一致,添加 rtos Group 和 FreeRTOS 相關文件,其中 port.c 和 portASM.s 文件路徑為 rtos\FreeRTOS\Source\portable\IAR\ARM_CR5;heap_4.c 文件路徑為 rtos\FreeRTOS\Source\portable\MemMang;其餘文件的路徑為 rtos\FreeRTOS\Source。

圖 3.17 sp0 工程添加 rtos Group 和 files

圖 3.17 sp0 工程添加 rtos Group 和 files

2.7 在 driver Group 中添加 btm 相關文件,文件路徑為 drivers\source\btm。

圖 3.18 sp0 工程添加 btm 相關 files

圖 3.18 sp0 工程添加 btm 相關 files

        2.8 在 Boards Group 中添加 FreeRTOSConfig.c,文件路徑在剛剛添加的 boards\e3_gateway\app_demo\multicore-xip\sp0\configs 下。

圖 3.19 sp0 工程添加 FreeRTOSConfig.c 文件

圖 3.19 sp0 工程添加 FreeRTOSConfig.c 文件

2.9 修改 IAR 配置,添加應用文件相對路徑。

圖 3.20 sp0 工程添加引用文件的相對路徑

圖 3.20 sp0 工程添加引用文件的相對路徑

3. bootloader 工程

       打開 bootLoader 示例,切換至 FlashDebug 模式,因為測試只涉及 SF 和 SP0 core,所以需要修改一下配置,去掉 SP1 、SX0 和 SX1 相關內容。

3.1 代碼中 main() 函數內,將 boot SP1 、SX0 和 SX1 相關代碼屏蔽。

圖 3.21 bootloader 中屏蔽 boot sp1、sx0 和 sx1 代碼

圖 3.21 bootloader 中屏蔽 boot sp1、sx0 和 sx1 代碼

3.2 修改 IAR 配置,刪除 Linker - Extra Options 中 SP1、SX0 和 SX1 的 image input 腳本。

3.22 bootloader 工程 IAR 配置修改   

3.22 bootloader 工程 IAR 配置修改

四、代碼編譯和調試

        首先使用 J-LINK 連接開發板,撥碼至 0b0000 模式啟動開發板。先分別編譯 sf 和 sp0 工程,然後編譯 bootLoader 工程(FlashDebug),bootloader 工程中 Extea Options 的腳本,會把 SFS + bootloader 程序 + sf/sp0 的 XIP 程序整體編譯為一個 elf 文件;

然後點擊 Erase memory 先擦除flash(推薦但非必須);

        最後點擊 Download active application 按鈕,IAR flashloader 下載上述 elf 到 flash 中,以 0b0000 模式啟動開發板,UART 列印輸出,此時可以觀察到 sf 和 sp0 核的 task 均運行起來。

 圖 4.1 串口 log 信息

圖 4.1 串口 log 信息

五、參考文檔

  • 《SemiDrive_E3_SSDK_User_Guide》


歡迎在博文下方留言評論,我們會及時回復您的問題。

如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com   
作者:Nostalgia


更多資訊,請掃碼關注我們!


★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論