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.

EDMA3中源地址和目的地址设置问题

  我用的CCS6.1

  导入OMAPL138_StarterWare_1_10_04_01\build\armv5\cgt_ccs\omapl138\lcdkOMAPL138\edma中的例程

  然后在程序中好像没有找到源地址和目的地址的配置程序,但是编译程序后,在map文件中就已经分配好了地址:

.bss 0 c10844e4 00001624 UNINITIALIZED
c10844e4 00000a00 (.common:_dstBuff)
c1084ee4 00000a00 (.common:_srcBuff)
c10858e4 00000194 system_config.lib : interrupt.obj (.bss:fnRAMVectors)
c1085a78 00000080 (.common:cb_Fxn)
c1085af8 00000004 drivers.lib : edma.obj (.bss)
c1085afc 00000004 (.common:dstBuff)
c1085b00 00000004 (.common:irqRaised)
c1085b04 00000004 (.common:srcBuff)

我想请教一下,这个地址是自动分配的么,如果想人为的设置源地址和目的地址应该怎么做?


还有就是在cmd文件中:

.bss : load > DDR_MEM /* GLOBAL & STATIC VARS */
RUN_START(bss_start),
RUN_END(bss_end)

RUN_START和RUN_END这两句是什么意思?



  • #1. 参考文档spru187里关于DATA_section的说明。

    #2. 参考文档spru186里相应的说明。

  •  关于第一个问题, 我把程序改了一下,

    C中:

    #pragma DATA_SECTION(_srcBuff, "my_sect1")
    #pragma DATA_SECTION(_dstBuff, "my_sect2")
    volatile char _srcBuff[MAX_BUFFER_SIZE];
    volatile char _dstBuff[MAX_BUFFER_SIZE];

    .cmd中:

    MEMORY

    spacename1  o = 0xD000000   l = 0x64
    spacename2  o = 0xD100000   l = 0x64

    SECTIONS

    .my_sect1 > spacename1
    .my_sect2 > spacename2

    这样编译会给警告,

    Description Resource Path Location Type
    #10247-D creating output section "my_sect1" without a SECTIONS specification EDMA3 C/C++ Problem

    Description Resource Path Location Type
    #10247-D creating output section "my_sect2" without a SECTIONS specification EDMA3 C/C++ Problem

    而且好像也没有映射成功,我哪里写的有问题么?

  • fanxuchao 说:
    .my_sect1 > spacename1
    .my_sect2 > spacename2

    名字前多了个".",前面定义时是没有点的。

    fanxuchao 说:
    #pragma DATA_SECTION(_srcBuff, "my_sect1")
    #pragma DATA_SECTION(_dstBuff, "my_sect2")