This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/RM57L843:将 SRAM (异步存储器)与 RM57微控制器相连-稳压器 链接器文件编辑

Guru**** 3001220 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/922990/ccs-rm57l843-interfacing-sram-asynchronous-memory-with-rm57-micro-controller---reg-linker-file-editing

器件型号:RM57L843

工具/软件:Code Composer Studio

你好!

我将 SRAM 器件(512K X 16位)与 RM57微控制器相连。 您可能知道 SRAM 是异步存储器。 我已经使用 EMIF 模块来执行这个功能。 我使用 EMIF 的芯片选择4作为 SRAM 的芯片选择。

基本上、我的问题是有关链接器文件更新的问题、我必须执行这些操作;将控制器的 CS4存储器映射到 SRAM 存储器。 对于链接器文件的概念、我是新手、因此我想知道为了支持 SRAM 访问、必须对链接器文件进行哪些必要的更改(添加或删除)。

作为示例的代码片段将非常有用。

此致、

Chetan。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chetan、

    下面是一个链接器命令示例、其中包含 MEMORY 指令中的 SDRAM 和在 SDRAM 中分配的段。 底部的链接是一个用于了解链接器 cmd 文件的良好链接:

    /*内存映射*/

    存储器
    {
    /*用户代码开始(2)*/
    /*用户代码结束*/
    引导程序(X):origin=0x00000000 length=0x00000020
    FLASH0 (RX):origin=0x00000020 length=0x001FFFE0
    FLASH1 (RX):origin=0x00200000 length=0x00200000
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0007EB00

    /*用户代码开始(3)*/
    SDRAM (rwx):origin=0x8000000 length=0200000000
    /*用户代码结束*/
    }

    /*用户代码开始(4)*/
    /*用户代码结束*/


    /*------------------ *
    /*段配置*/

    部分
    {
    /*用户代码开始(5)*/
    /*用户代码结束*/
    .intvecs:{}>向量
    .text align (32):{}> FLASH0 | FLASH1
    .const align (32):{}> FLASH0 | FLASH1
    .cinit align (32):{}> FLASH0| FLASH1
    .pinit align (32):{}> FLASH0 | FLASH1
    .bss:{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM

    /*用户代码开始(6)*/
    telem:{}>SDRAM
    /*用户代码结束*/
    }

    /*用户代码开始(7)*/
    /*用户代码结束*/

    http://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的王先生:

    感谢您的回复! 我之前确实浏览过这个网站、它让我对这些指令有了一些了解。

    在上面的示例中、您使用".telem"作为映射到 SDRAM 存储器区域的所有代码或数据的输出段、对吧? (根据您共享的链接中的内容)。

    最后、在应用程序代码中、使用如下 pragma:

    #pragma DATA_SECTION 数据(".telem")

    uint32温度;

    uint8 uC_cnt;

    默认为#pragma DATA_SECTION

    这意味着变量"Temp"和"uC_cnt"映射到 SDRAM 中、对吧? 理解是否正确? pragma CODE_SECTION 也是如此、对吧?

    此致、

    Chetan。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    C 语言中 pragma 的语法为:

    #pragma DATA_SECTION (abc、"MyData_SECTION);

    uint32_t abc;

    该 pragma 在 C++中的语法为:  

    #pragma DATA_SECTION ("MyData_SECTION ");

    uint32_t abc;

    #pragma CODE_SECTION (fn、"my_sect")

    int fn (int x){

      返回 x;

    }

    #pragma SET_CODE_SECTION (".blinky_section")

    空闪烁()
    {
        int i;
        gioSetDirection (hetPORT1、1);
        while (1)
        {
           gioToggleBit (hetPORT1、0);
           for (i=0;i<1000000;i++);
        }
    }

    #pragma SET_CODE_SECTION ()

    DATA_SECTION pragma 和 CODE_SECTION pragma 在编译器用户指南中进行了介绍。