主题中讨论的其他器件: HALCOGEN、 C2000WARE
我开始在 TMS320F28388D 上实现仿真 EEPROM (FEE)、而我仅将 此 线程作为支持材料。
我计划从 HALCoGen 工具(http://www.ti.com/tool/HALCOGEN)中针对"TMS570LS31x_21x"(Fee_Write_Read)提供的示例开始讲解。
它是正确的起点吗?
另一个问题是我无法在 用户手册中找到内存布局、您有在哪里找到它的指导吗?
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.
我开始在 TMS320F28388D 上实现仿真 EEPROM (FEE)、而我仅将 此 线程作为支持材料。
我计划从 HALCoGen 工具(http://www.ti.com/tool/HALCOGEN)中针对"TMS570LS31x_21x"(Fee_Write_Read)提供的示例开始讲解。
它是正确的起点吗?
另一个问题是我无法在 用户手册中找到内存布局、您有在哪里找到它的指导吗?
H Ahmed,
我们现在有一个 C2000器件的示例。 请访问 https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1301228/tms320f28379d-eeprom-emulation
谢谢。此致、
瓦姆西
我看到在示例(C:\ti\c2000\C2000Ware_5_01_00\driverlib\f28p65x\examples\C28x\flash)中没有 memmap、同时您尝试将一些段从闪存加载到 RAM 中
我的问题是,您如何仅挑选这些段进行处理,或者您只需将所有.text 从 FLASH_BANK0复制到 RAMD0中?!
.TI.ramfunc : LOAD = FLASH_BANK0, RUN = RAMD0, // Can run in RAM for optimal cycle performance LOAD_START(RamfuncsLoadStart), LOAD_SIZE(RamfuncsLoadSize), LOAD_END(RamfuncsLoadEnd), RUN_START(RamfuncsRunStart), RUN_SIZE(RamfuncsRunSize), RUN_END(RamfuncsRunEnd), ALIGN(8)
此外、我正在使用 TMS320F28388D、这意味着每个 CPU 都有一个存储体、因此:
领域 | |||
扇区0 | 8K x 16 | 0x00080000 | 0x00081FFF |
扇区1 | 8K x 16 | 0x00082000 | 0x00083FFF |
扇区2 | 8K x 16 | 0x00084000 | 0x00085FFF |
科3 | 8K x 16 | 0x00086000 | 0x00087FFF |
科4 | 32公里 x 16 | 0x00088000 | 0x0008FFFF |
科5 | 32公里 x 16 | 0x00090000 | 0x00097FFF |
科6 | 32公里 x 16 | 0x00098000 | 0x0009FFFF |
科7 | 32公里 x 16 | 0x000A0000 | 0x000A7FFF |
扇区8 | 32公里 x 16 | 0x000A8000 | 0x000AFFFF |
科9 | 32公里 x 16 | 0x000B0000 | 0x000B7FFF |
科10 | 8K x 16 | 0x000B8000 | 0x000B9FFF |
科11 | 8K x 16 | 0x000BA000 | 0x000BBFFF |
科12 | 8K x 16 | 0x000BC000 | 0x000BDFFF |
科13 | 8K x 16 | 0x000BE000 | 0x000BFFFF |
您好、Ahmed、
1) 1)您能否解释一下示例中未提供的 memmap 是什么意思? 您的意思是问应用的不同部分如何映射到不同的存储器范围? 如果愿意、它会如你所知、出现在连接器命令文件中。
2)关于选择段用于 RAM 执行而非闪存执行: 有两种代码需要从 RAM 运行。
第一个 是需要从 RAM 运行的配置代码/时间敏感代码(加载到 RAM、但复制到 RAM 以供执行)-示例: (i)闪存只能通过从 RAM 执行的代码进行配置。 (ii)延迟功能、旨在提供可配置延迟。
第二个是性能关键型代码:当从0等待状态 RAM 而不是大于0等待状态闪存运行时、用户应用程序可能具有性能关键型代码。
3)每个 CPU 都有一个专用的512KB 内存库。
4)仿真扇区:您可以根据应用需求以及应用设计方式来决定相关情况。 如果 CPU1具有需要存储在闪存(作为 EEPROM)中的数据、那么您可以在 CPU1闪存组中分配几个扇区。 或者、如果 CPU1上有一些性能关键型严格控制循环、您可以决定改为考虑 CPU2以将数据存储在其闪存组中(如果适用于您的应用)。
5)每个 CPU 的闪存映射: 每个 CPU 都有其专用的闪存组-然而,CPU 之间的地址不是唯一的。 CPU1从 CPU1的0x80000地址开始、是专用的闪存存储体。 另外、 CPU2具有从 CPU2的0x80000地址开始的专用闪存组。
6) 6)正如我们在数据表的表7-5闪存等待状态中提到的、闪存在200MHz 时需要3个等待状态。
7) 7)由于 flash_programming_f28p65x.h 实际上是从闪存编程示例中为其他定义复制的、因此它可能是多余的。 我将请我们的团队 为您确认这一点。
谢谢。此致、
瓦姆西