Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,全部

我將函數放在 PSRAM 地址中,我檢查地圖,它有效。

但是 HEX 文件不包括 PSRAM 地址。

如何配置 lsl 或工具以獲取 HEX 文件中的 PSRAM 地址?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/AURIX-Development-Studio-outputs-HEX-file-included-RAM-address/td-p/654459

1 解決方案
Translation_Bot
Community Manager
Community Manager
Community Manager

對於待機運行的應用程序,必須初始化在 RAM 中執行的程序代碼。 這通常由 C 啟動代碼完成。 該應用程序的六進製文件確實包含函數代碼的 ROM 複製部分,C starcup 代碼將此功能複製到其 RAM 內存中的地址。 在此事件之後,函數可以被調用。

如果您的目標是跳過初始化階段,但是使用調試器將函數代碼直接下載到 RAM 內存中,則可以實現這一點,例如 在沒有複製項目的 LSL 群組中選取有關區段。 複製輸入會強制連結器創建函數代碼部分的 ROM 副本,該部分將放置在快閃記憶體中,以及複製表中的項目,其中包含有關需要由啟動代碼初始化的資料的所有資訊。 這可以看起來像:

#pragma section code "PSRAM_FUNC"
void func(void)
{
    // function code
}
#pragma section code restore

在 LCF_TASKING_TRICORE_TC.LSL 檔案中,您可以在 PSRAM 程式碼選擇區塊的開頭新增下列項目。 如果該功能應放置在沒有初始化的 PSPR0 RAM 中,則可以看起來如下所示:

    /* PSRAM Code selections*/
    section_layout :vtc:linear
    {
        /*Code Sections, selectable with patterns and user defined sections*/
        group
        {
            /*Program Scratchpad Sections*/
            group
            {
//added entry start
                group PSRAM_FUNC (ordered, attributes=rwx, run_addr=mem:psram0)
                {
                    select ".text.PSRAM_FUNC";
                }
//added entry end
                group code_psram0 (ordered, attributes=rwx, copy, run_addr=mem:psram0)
                {
                    select "(.text.cpu0_psram|.text.cpu0_psram.*)";
                    select "(.text.psram_text_cpu0|.text.psram_text_cpu0.*)";
                }
...

 

最好的問候,

烏爾里希·克洛伊特
任務處理工具支持

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/AURIX-Development-Studio-outputs-HEX-file-included-RAM-address/m-p/655174

在原始文章中檢視解決方案

0
5 回應
Translation_Bot
Community Manager
Community Manager
Community Manager

@Ada

1)如何配置 lsl 或工具以在 HEX 文件中獲取 PSRAM 地址

-實際上,我對您的問題不清楚,要驗證重定位函數的工作效果,請調試演示代碼以檢查函數的指針。
布爾,
傑里米

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/AURIX-Development-Studio-outputs-HEX-file-included-RAM-address/m-p/654564

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,

我的意思是 Hex 文件,它包含 Flash 地址,我想在 Hex 文件中的 ram 地址,我該怎麼做?

Ada_0-1701935601105.png

 

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/AURIX-Development-Studio-outputs-HEX-file-included-RAM-address/m-p/654700

0
Translation_Bot
Community Manager
Community Manager
Community Manager

對於待機運行的應用程序,必須初始化在 RAM 中執行的程序代碼。 這通常由 C 啟動代碼完成。 該應用程序的六進製文件確實包含函數代碼的 ROM 複製部分,C starcup 代碼將此功能複製到其 RAM 內存中的地址。 在此事件之後,函數可以被調用。

如果您的目標是跳過初始化階段,但是使用調試器將函數代碼直接下載到 RAM 內存中,則可以實現這一點,例如 在沒有複製項目的 LSL 群組中選取有關區段。 複製輸入會強制連結器創建函數代碼部分的 ROM 副本,該部分將放置在快閃記憶體中,以及複製表中的項目,其中包含有關需要由啟動代碼初始化的資料的所有資訊。 這可以看起來像:

#pragma section code "PSRAM_FUNC"
void func(void)
{
    // function code
}
#pragma section code restore

在 LCF_TASKING_TRICORE_TC.LSL 檔案中,您可以在 PSRAM 程式碼選擇區塊的開頭新增下列項目。 如果該功能應放置在沒有初始化的 PSPR0 RAM 中,則可以看起來如下所示:

    /* PSRAM Code selections*/
    section_layout :vtc:linear
    {
        /*Code Sections, selectable with patterns and user defined sections*/
        group
        {
            /*Program Scratchpad Sections*/
            group
            {
//added entry start
                group PSRAM_FUNC (ordered, attributes=rwx, run_addr=mem:psram0)
                {
                    select ".text.PSRAM_FUNC";
                }
//added entry end
                group code_psram0 (ordered, attributes=rwx, copy, run_addr=mem:psram0)
                {
                    select "(.text.cpu0_psram|.text.cpu0_psram.*)";
                    select "(.text.psram_text_cpu0|.text.psram_text_cpu0.*)";
                }
...

 

最好的問候,

烏爾里希·克洛伊特
任務處理工具支持

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/AURIX-Development-Studio-outputs-HEX-file-included-RAM-address/m-p/655174

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,

我使用你放的代碼,它有效,

我有一些問題,我放置了 " 閃存擦或 wirte " 等函數,它可以直接在 RAM 地址中執行?

RAM 地址中的 Flash 代碼中有什麼需要特別注意的事情嗎?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/AURIX-Development-Studio-outputs-HEX-file-included-RAM-address/m-p/655288

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@Ada
1)我有一些問題,我放了 " 閃存擦或 wirte " 等函數,它可以直接在 RAM 地址中執行?
-是的
2)RAM 地址中的 Flash 代碼中有什麼需要特別注意的事情嗎?
--如果您想按照上述方法實現搬遷,請確保 RAM 的起始地址為 32 位元對齊。
布爾,
傑里米

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/AURIX-Development-Studio-outputs-HEX-file-included-RAM-address/m-p/655463

0