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.

[参考译文] TMS320F28379D:F28379D:闪存

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1375034/tms320f28379d-f28379d-flash

器件型号:TMS320F28379D

工具与软件:

您好!

我已将项目从 RAM 传输到闪存。 在我的测试期间、我正在调试项目、同时项目位于闪存存储器中。 在该过程中、某些变量显示为+INF、但以相同方式定义且正在进行相同过程的其他变量可以正常运行。

此外、当我将系统加载到闪存、重置系统并在不使用调试模式的情况下直接运行它时、系统会正常工作。 这可能是什么问题? 我在配置闪存时执行了错误的分配吗? 您可以帮助我解决这个问题吗?



小程序

RAMM0:origin = 0x000123、length = 0x0002DD
RAMM1:origin = 0x000400、length = 0x0003F8
CLATOCPU_MSGRAM:origin = 0x001480、length = 0x000080
CPUTOCLA_MSGRAM:origin = 0x001500、length = 0x000080
RAMLS0:origin = 0x008000、length = 0x000800
RAMLS1:origin = 0x008800、length = 0x000800
RAMLS2:origin = 0x009000、length = 0x000800
RAMLS3:origin = 0x009800、length = 0x000800
RAMLS_4_5:origin = 0x00A000、length = 0x001000
RAMD0:origin = 0x00B000、length = 0x000800
RAMD1:origin = 0x00B800、length = 0x000800
RAMGS0:origin = 0x00C000、length = 0x001000
RAMGS1:origin = 0x00D000、length = 0x001000
RAMGS2 : origin = 0x00E000 , length = 0x001000
RAMGS3 : origin = 0x00F000, length = 0x001000
RAMGS4:origin = 0x010000、length = 0x001000
RAMGS5:origin = 0x011000、length = 0x001000
RAMGS6:origin = 0x012000、length = 0x001000
RAMGS7:origin = 0x013000、length = 0x001000
RAMGS8:origin = 0x014000、length = 0x001000
RAMGS9:origin = 0x015000、length = 0x001000
RAMGS10:origin = 0x016000、length = 0x001000
RAMGS11:origin = 0x017000、length = 0x001000
RAMGS12:origin = 0x018000、length = 0x001000
RAMGS13:origin = 0x019000、length = 0x001000
RAMGS14:origin = 0x01A000、length = 0x001000
RAMGS15:origin = 0x01B000、length = 0x000FF8
CPU2TOCPU1RAM:origin = 0x03F800、length = 0x000400
CPU1TOCPU2RAM:origin = 0x03FC00、length = 0x000400
FLASHA:origin = 0x080000、length = 0x002000
FLASHB:origin = 0x082000、length = 0x002000
FLASHC:origin = 0x084000, length = 0x002000
FLASHD:origin = 0x086000、length = 0x002000
FLASHE:origin = 0x088000、length = 0x008000
FLASHF:origin = 0x090000、length = 0x008000
FLASHG:origin = 0x098000、length = 0x008000
FLASHH:origin = 0x0A0000、length = 0x008000
FLASHI:origin = 0x0A8000、length = 0x008000
FLASHJ:origin = 0x0B0000、length = 0x008000
FLASHK:origin = 0x0B8000、length = 0x002000
FLASHL:origin = 0x0BA000、length = 0x002000
FLASHM:origin = 0x0BC000、length = 0x002000
FLASHN : origin = 0x0BE000、length = 0x001FF0
复位:origin = 0x3FFFC0、length = 0x000002
}


部分中)

//
// C28x 段
//
.reset :> RESET , TYPE = DSECT /* NOT USED ,*/
codestart :> 0x080000
.text :>> FLASHB | FLASHC | FLASHD | FLASHE
对齐(8)
.TI.ramfunc:加载> FLASHD、
Run > RAMD0、
表(BINIT)、
load_start (loadStart_ramfunc)、
load_end (loadEnd_ramfunc)、
load_size (loadSize_ramfunc)、
RUN_START (runStart_ramfunc)、
RUN_END (runEnd_ramfunc)、
RUN_SIZE (runSize_ramfunc)、
对齐(8)
.binit :> FLASHA,
对齐(8)
.ovly :> FLASHA,
对齐(8)
cinit :> FLASHA,
对齐(8)
.stack :> RAMM1.
.init_array :> FLASHB,
对齐(8)
.bss :> RAMLS2
.const :>> FLASHF | FLASHG | FLASHH,
对齐(8)
.data :>> RAMGS0 | RAMGS1 | RAMGS2 | RAMLS2 | RAMLS3.
.switch :> FLASHA,
对齐(8)
.sysmem :> RAMLS2
Cla1Prog : Load > FLASHD,
Run > RAMLS_4_5、
表(BINIT)、
Load_start (loadStart_cla1Prog)、
LOAD_END (loadEnd_cla1Prog)、
load_size (loadSize_cla1Prog)、
RUN_START (runStart_cla1Prog)、
对齐(8)
.const_cla:加载> FLASHB、
Run (运行)> RAMLS1、
表(BINIT)、
LOAD_START (loadStart_claConst)、
load_size (loadSize_claConst)、
RUN_START (runStart_claConst)、
对齐(8)
.scratchpad :> RAMLS1
bss_cla :> RAMLS1.
cla1ToCpuMsgRAM:> CLATOCPU_MSGRAM
cpuToCla1MsgRAM:>CPUTOCLA_MSGRAM.

//
//用户部分
//
userSection1{*(控制变量)}>> RAMLS0 | RAMLS1
userSection4{*(SHARERAMGS4)}> RAMGS4
userSection6{*(SHARERAMGS5)}> RAMGS5
MSGRAM_CPU1_TO_CPU2:> CPU1TOCPU2RAM、type=NOINIT
MSGRAM_CPU2_TO_CPU1:>CPU2TOCPU1RAM、type=NOINIT

}

#endif

/*
//________________________________________________====
//文件结尾。
//________________________________________________====
*/

此致、

Enes

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

    Enes、

    从你已经设置的映射文件中、可以使用.cmd 来对负载执行引导初始化、将其从 RAM 段闪存/运行、在启动过程中将闪存复制到 RAM 与在应用程序中手动执行 mem_copy 相比。

    我认为、连接调试器时的问题在于、CCS 尝试通过直接转到 main 而不是在您独立运行时会发生的完整启动流程来提供"帮助"。  这将跳过引导初始化等、从而使程序无法正常工作。

     我们需要在连接调试器/CCS 时模拟闪存引导。  加载程序后、请尝试以下操作:

    1)执行 CPU 重置

    2)在"Scripts (脚本)"下、应该有一个 EMUBoot 项、将鼠标悬停在此项上并选择"flash boot (闪存引导)"

    3)运行

    这应该完全模仿独立运行中发生的情况、它正在工作、并有望修复您的问题。

    此致!

    Matthew