Thread 中讨论的其他器件:SYSBIOS、
请告诉我如何实现"用户 RAM"(Sitara EtherCAT 从控制器中寄存器空间的地址0x0F80 - 0x0FFF)。 我在文档中没有找到任何内容。
谢谢你
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.
有几种方法可以查看如何使用存储器。 项目将创建一个映射文件。 对于全功能 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 间隔内的寄存器或者其中的一部分被执行。
提前感谢
兰贝托