SES 調試 SemiDrive E3 SSDK XIP 的鏈接文件

一、 概述

        近期有客戶遇到程序運行的 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 配置

  1. 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 類型

 

  1. 打開 app 工程,編譯 XIP 工程的 Debug 模式或者 FlashDebug 模式工程。

       編譯完成後會在 bootloader 工程的 SES\Output\Debug\Exe 目錄中生成 bootloader 的簽名文

件 sf_signed.bin。

 

  1. Debug 模式運行在 SES IDE 中點擊 Debug -> Go 直接運行;FlashDebug 模式點擊 Target ->Download sf ,下載完成後調整撥碼開關到 0000 模式,重新上電啟動。所有XIP工程的下載都在sf中執行。

 

 



圖6 sf工程

 


  1. 例程運行結果分析

sf  程序以 XIP 方式運行在 Flash ,被 __SECTION(“XXX”) 修飾的程序運行在指定的地址內。

          sf 切換到 Debug,Rebuild 後直接 Start Debugging。



圖8 分步調試對照 


        由工程鏈接的 xip.ld (gcc 編譯鏈接文件,定義程序入口地址、Flash、RAM 中代碼和數據的存放位置)可以看出,sf 工程代碼以 XIP 方式運行在 Flash,被__SECTION(xxx)修飾的函數分別運行在指定地址範圍內。



 

  1. 程序運行空間的設置

       以文件或目錄為單位設置,修改驅動到 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 / 李亞楠


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

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

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

評論