近期有客戶遇到程序運行的 RAM 空間不足的問題,客戶使用的 IDE 環境是 SEGGER,下文結合芯馳支持系提供的 XIP 例程和鏈腳本文件進行說明。
SEGGER Embedded Studio 簡稱 SES,是 SEGGER 開發的一款專業的嵌入式集成開發環境(IDE),支持 ARM 和 RISC-V 兩種處理器架構。跨平台,支持 Window 和 Linux 操作系統。
SES Demo 工程適配的 E3 晶片型號,配置在 .emProject 文件中。
硬體使用 SD07_E3106 開發板,軟體包使用 SSDK-Builder (PTG3.0)在線生成。
圖1 硬體環境
支持系統在 E3 SSDK PTG3.0 的下載選項里新增了 SES(v712a)的安裝包。
SEGGER 官網 SES 安裝包下載地址:
https://www.segger.com/downloads/embedded-studio/
JLink 官網安裝包下載地址:
https://www.segger.com/downloads/jlink
二、FlashLoader 和 PART_ID 配置
- FlashLoader 配置
在 JLink AppData 目錄下(常見為 C:\Users\XXX\AppData\Roaming\SEGGER)添加 SemiDrive devices。具體方法為:將 ssdk\prebuilts\JLinkDevices 目錄拷貝到 Link AppData 目錄下的 SEGGER 文件夾內。其中,包含 JLinkDevices.xml 文件和 Devices\SemiDrive 文件夾所有晶片 Part 的 Flashloader。
圖2 FlashLoader 配置
2.在 IDE 中修改 PART_ID
右擊 Solution ,選擇 Options ,在 Code -> Build 標籤下的 Project Macros 選項中修改 PART_ID,如果需要切換到 FlashDebug 模式,需要再次修改 FlashDebug 模式下的 PART_ID。
三、 XIP 工程運行和調試
1.bootloader 配置 flash 類型
打開 bootloader 工程,右擊 Solution ,選擇 Options 。在 Code -> Preprocessor 標籤欄中點擊 Preprocessor Definitions 選項。如果是 HyperFlash,添加 CONFIG_HYPERBUS_MODE=1 ,NorFlash 則添加 CONFIG_HYPERBUS_MODE=0 。保存配置,Rebuild bootloader 工程。
圖4 配置 flash 類型
- 打開 app 工程,編譯 XIP 工程的 Debug 模式或者 FlashDebug 模式工程。
編譯完成後會在 bootloader 工程的 SES\Output\Debug\Exe 目錄中生成 bootloader 的簽名文
件 sf_signed.bin。
- Debug 模式運行在 SES IDE 中點擊 Debug -> Go 直接運行;FlashDebug 模式點擊 Target ->Download sf ,下載完成後調整撥碼開關到 0000 模式,重新上電啟動。所有XIP工程的下載都在sf中執行。
圖6 sf工程
- 例程運行結果分析
sf 程序以 XIP 方式運行在 Flash ,被 __SECTION(“XXX”) 修飾的程序運行在指定的地址內。
sf 切換到 Debug,Rebuild 後直接 Start Debugging。
圖8 分步調試對照
由工程鏈接的 xip.ld (gcc 編譯鏈接文件,定義程序入口地址、Flash、RAM 中代碼和數據的存放位置)可以看出,sf 工程代碼以 XIP 方式運行在 Flash,被__SECTION(xxx)修飾的函數分別運行在指定地址範圍內。
- 程序運行空間的設置
以文件或目錄為單位設置,修改驅動到 ram 運行(.ld 鏈接腳本文件有各段的定義)。右擊後選中 Options->Code->Section,默認的.text 對應 Flash,可修改為 .ram.text 對應 ram。
圖10 xip.ld 連接腳本文件中 SECTIONS 定義
圖11 設置 board.c 到 ram.text 運行
重新編譯後,下方Output 欄內可見運行空間的分配結果。Log 輸出列印函數運行地址範圍在 ram空間。
四、 參考文檔
《 SemiDrive E3 SSDK User Guide》
歡迎在博文下方留言評論,我們會及時回復您的問題。
如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com 作者:Alan Li / 李亞楠
更多資訊,請掃碼關注我們!
評論