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.

[参考译文] AM3359:EtherCAT 从站 ESC 用户 RAM

Guru**** 2601915 points
Other Parts Discussed in Thread: SYSBIOS, AM3359

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/648387/am3359-ethercat-slave-esc-user-ram

器件型号:AM3359
Thread 中讨论的其他器件:SYSBIOS

请告诉我如何实现"用户 RAM"(Sitara EtherCAT 从控制器中寄存器空间的地址0x0F80 - 0x0FFF)。 我在文档中没有找到任何内容。

谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有几种方法可以查看如何使用存储器。 项目将创建一个映射文件。 对于全功能 EtherCAT 构建的默认安装、它将为:C:\ti\PRU-ICSS-EtherCAT_Slave_01.00.04.02\protocol\EtherCAT_slave\projects\EtherCAT_SLAVE_FULL_AM335x_ARM\AM335x_RELEAS\EtherCAT_SLAVE_FULL_AM335x_ARM.map

    有时我觉得这很难使用。

    我的首选方法是将位于同一目录中的输出文件:C:\ti\PRU-ICSS-EtherCAT_Slave_01.00.04.02\protocol\EtherCAT_slave\projects\EtherCAT_slave_full_AM335x_arm\AM335x_release\EtherCAT_slave_full_AM335x_arm.out 复制到临时目录中。

    "I create a DOS window and CD to that directory (我创建 DOS 窗口并将 CD 放入该目录)"。 在 DOS 窗口中、我应用

    C:\ti\gcc-arm-none-eabi-4_9-2015q3\bin\arm-none-eabi-objdump.exe -x -w EtherCAT_SLAVE_FULL_AM335x_ARM.out > ethercat_slave_full_AM335x_arm.txt

     

    这将创建一个包含存储器区域摘要和符号表的文本文件。

    如果我将文本文件导入到 Excel 中、将其作为空格分隔的文件导入、其中所有内容均作为文本项导入(以保留十六进制值)。 然后、我通常将符号表复制到单独的工作表中、以便重新格式化并对其进行排序。

    摘要表如下所示:

    章节:
    IDX 名称 大小 尺寸 VMA LMA 文件 关闭 阿尔格恩 标志
    0 c_int00 180 000000b4. 8000000 8000000 00008000 2**2. 内容、 Alloc、 负载、 只读、 代码
    1 TI.SYSBIOS.family.ARM.A8.mutableSection 16384 00004000 80004000 80004000 000080b4. 2** 14. 分配
    2. XDC.meta 311. 00000137 80008000 80008000 00034058. 2**2. 内容、 只读
    3. .text 146132 00023AD4. 80008140 80008140 00008140 2**4. 内容、 Alloc、 负载、 只读、 代码
    4. rodata 26004. 00006594 8002bc18 8002bc18 0002bc18 2**3. 内容、 Alloc、 负载、 只读、 数据
    5. 向量 64 00000040 80032400 80032400 00032400 2**10. 内容、 Alloc、 负载、 只读、 数据
    6. arm.exidx 8. 00000008 80032440 80032440 00032440. 2**2. 内容、 Alloc、 负载、 只读、 数据
    7. .data 7184. 00001c10 80032448 80032448 00032448. 2**3. 内容、 Alloc、 负载、 数据
    8. .bss 60408. 0000ebf8 80034058. 80034058. 00034058. 2**3. 分配
    9. 堆栈 16384 00004000 80042c50 80042c50 00034058. 2**3. 分配
    10. .comment 00000150 00000000 00000000 0003418 f 2**0 内容、 只读
    11. arm.attributes 0000003d 00000000 00000000 000342df 2**0 内容、 只读
    12. .debug_aranges 00003990 00000000 00000000 00034320 2**3. 内容、 只读、 调试
    13. debug_info 0007a9c8. 00000000 00000000 00037cb0 2**0 内容、 只读、 调试
    14. .debug_Abbrev 0000fa1b 00000000 00000000 000b2678 2**0 内容、 只读、 调试
    15. 调试行 00024a8d 00000000 00000000 000c2093 2**0 内容、 只读、 调试
    16. debug_frame 00008b48 00000000 00000000 000e6b20 2**2. 内容、 只读、 调试
    17. .debug_str 00035498 00000000 00000000 000ef668 2**0 内容、 只读、 调试
    18 .debug_loc 00027e01 00000000 00000000 00124b00 2**0 内容、 只读、 调试
    19. debug_ranges 00004230 00000000 00000000 0014c908 2**3. 内容、 只读、 调试

     

    您感兴趣的存储器区域的符号表为:

    符号 表:
    十六进制加法 十进制大小 十六进制大小 符号
    00000001 L *绝对* 0 00000000 XDC_RAuntime_Startup__EXECFXN__C
    00000001 L *绝对* 0 00000000 XDC_Runtime_Startup__RESETFXN__C
    00000004 L *绝对* 0 00000000 arg1
    00000040 L *绝对* 0 00000000 cache_sizeL1dCacheLine
    00000040 L *绝对* 0 00000000 cache_sizeL1pCacheLine
    00000040 L *绝对* 0 00000000 cache_sizeL2CacheLine
    00000400 L *绝对* 0 00000000 HEAPSIZE
    00004000 G *绝对* 0 00000000 _stack_size
    00004000 G *绝对* 0 00000000 _TI_STACK_SIZE
    0001c000 L *绝对* 0 00000000 STACKSIZE
    48200000 G *绝对* 0 00000000 TI_SYSBIOS_family_ARM_A8_intcps_Hwi_INTC
    8000000 L D c_int00 0 00000000 c_int00
    8000000 G c_int00 0 00000000 _c_int00
    8000009c L c_int00 0 00000000 _RESET_Fxns_DONE
    80004000 L D TI.SYSBIOS.family.ARM.A8.mutableSection 0 00000000 TI.SYSBIOS.family.ARM.A8.mutableSection
    80004000 G o TI.SYSBIOS.family.ARM.A8.mutableSection 16384 00004000 TI_SYSBIOS_family_ARM_A8_MMU_Module_State_0_tableBuf__A

     

    David

     

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

    很抱歉、我将尝试更好地解释、我的问题是指 TI ESC 的实现、它运行在 AM3359的 PRU-ICSS 中、并模拟 Beckhoff ET1100、但有一些例外。 在"EtherCAT_firmware_API_Guide.pdf"文档中有一章"AM335x EtherCAT 寄存器列表"、其中列出了 ESC 寄存器、对 ESC 和 EtherCAT 主站都可见、其中包含一列专用于"寄存器偏移量"、但没有有关0x0F80 和0x 0FFF 之间间隔的信息、 在 Bechoff ET1100数据表中被命名为"用户 ram"。 这两个  报告都没有任何内容。 我需要知道0x0F80 - 0x 0FFF 间隔内的寄存器或者其中的一部分被执行。

    提前感谢

    兰贝托

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的更新。 让我与开发团队核实一下。

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

    不使用区域0x0F80 - 0x 0FFF。 您可以使用此区域,但需要在 tisebsp.c 中相应地编辑寄存器权限。
    默认情况下、寄存器空间(< 0x1000)中所有未记录的地址都设置为无读取和无写入访问。

    David