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.

[参考译文] CCS/LAUNCHXL-F28379D:无法将程序加载到闪存

Guru**** 2563960 points
Other Parts Discussed in Thread: CONTROLSUITE, SFRA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/808853/ccs-launchxl-f28379d-unable-to-load-program-to-flash

器件型号:LAUNCHXL-F28379D
Thread 中讨论的其他器件:controlSUITESFRA

工具/软件:Code Composer Studio

您好!

我正在 使用 controlSUITE 中的基于使用 FCL 示例项目的双电机控制的项目。 到目前为止、所有开发都是在具有 RAM 配置的 CCS 调试模式下进行的。 现在、我想在独立模式下测试它、这意味着将程序加载到闪存中并在 RAM 中运行。 因此、我可以在没有调试器的情况下以独立模式启动。 我不想从闪存执行任何代码。

我已完成的步骤:

 切换到闪存模式: 生成配置>设置为活动>选择 F2837x_Flash

2.使用项目文件中提供的默认链接器 cmd 文件:


存储器

第0页:/*程序内存*/
/*内存(RAM/FLASH)块可移动到 Page1进行数据分配*/
/* begin 用于"引导至闪存"引导加载程序模式*/

开始:origin = 0x080000,length = 0x000002
RAMM0:origin = 0x000122、length = 0x0002DE
RAMD0:origin = 0x00B000、length = 0x000800
RAMLS0:origin = 0x008000、length = 0x000800
RAMLS1:origin = 0x008800,length = 0x000800
RAMLS2:origin = 0x009000,length = 0x000800
/* RAMLS3:origin = 0x009800,length = 0x000800
RAMLS4:origin = 0x00A000,length = 0x000800
*
RAMLS3_4:origin = 0x009800、length = 0x001000
复位:origin = 0x3FFFC0,length = 0x000002

/*闪存扇区*/
FLASHA:origin = 0x080002,length = 0x001FFE /*片上闪存*/
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 = 0x002000 //片上闪存*/

第1页:/*数据存储器*/
/*内存(RAM/FLASH)块可移动到 PAGE0进行程序分配*/

BOOT_RSVD:origin = 0x000002,length = 0x000120 // M0的一部分,引导 ROM 将此用于栈*/
RAMM1:origin = 0x000400、length = 0x000400 //片上 RAM 块 M1 *
RAMD1:origin = 0x00B800,length = 0x000800

RAMLS5:origin = 0x00A800,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


部分

/*分配计划领域:*/
.cinit:> FLASHB PAGE = 0,ALIGN (4)
.pinit:> FLASHB,PAGE = 0,ALIGN (4)
.text:>> FLASHB | FLASHC | FLASHD | FLASHE PAGE = 0,ALIG(4)
codestart:> begin page = 0,align (4)
#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>=15009000
.TI.ramfunc:{}负载= FLASHD,
运行= RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3_4、//| RAMLS4、*
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (4)
其他
ramfuncs:load = FLASHD,
运行= RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3_4、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (4)
#endif

#endif

/*分配未初始化的数据段:*/
.stack:>RAMM1 page = 1.
.ebss:>> RAMLS5 | RAMGS0 | RAMGS1 PAGE = 1.
.esysmem:> RAMLS5 PAGE = 1.

/*初始化段进入闪存*/
econst:>> FLASHF | FLASHG | FLASHH PAGE = 0,ALIGN (4)
.switch:> FLASHB PAGE = 0,ALIGN (4)

.reset:> reset,page = 0,type = DSECT //未使用,*/

RAMS0:>RAMGS0,PAGE = 1
ramgs1:>RAMGS1,page = 1.

/*以下部分定义适用于 SDFM 示例*/
filter1_RegsFile:> RAMGS1,PAGE = 1,fill=0x1111
Filter2_RegsFile:> RAMGS2,PAGE = 1,fill=0x2222
Filter3_RegsFile:> RAMGS3,PAGE = 1,fill=0x3333
Filter4_RegsFile:> RAMGS4,PAGE = 1,fill=0x4444
Differit_RegsFile:>RAMGS5,PAGE = 1,fill=0x3333

// DCL 库
Dclfuncs:>> FLASHB | FLASHC | FLASHD | FLASHE PAGE = 0,ALIG(4)

/* SFRA 测试*/
SFRA_F_Data:> RAMGS11,PAGE = 1

/*
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//文件结束。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*

3.成功构建。

4.尝试加载失败,并出现以下错误:

C28xx_CPU1:文件加载器:验证失败:地址0x86000@程序的值不匹配请验证目标存储器和存储器映射。
C28xx_CPU1:GEL:文件:C:\ti\controlSUITE\libs\app_libs\motor_control\libs\fcl_SFRA\v01_00_00\examples\git_repo\FCL_28379D\F2837x_flash\FCL_379XL_git.out 发生数据验证错误、数据加载失败。

是否有任何关于如何解决此问题的建议? 我还尝试了其他 F28379D 的链接器 cmd 文件、这些文件是我从 controlSUITE 中找到的、但我得到了相同的错误。 我使用的是 CCS8。

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

    您好!

    1) 1)当您在调试器的存储器窗口中查看地址0x86000时、您会看到什么? 数据是否全部为0x0000?

    2) 2)您是否对任何 DCSM 设置进行了编程? 如果是、您能否检查为密码位置编程的值?

    此外、请检查 CCS 中的更新并安装以下软件包的任何可用更新:

    (i) TI C2000器件支持包

    (ii) CCS 闪存内容(有时此软件包被命名为“Debug Server Flash”)

    (iii) 调试服务器

    谢谢、此致、
    Vamsi

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

    感谢您的快速回复。

    1) 1)无法访问调试器、因为它未加载程序。

    2) 2)未触摸 DCSM 设置。

    3) 3)帮助更新 C2000支持包。 不再出现错误、独立启动正常。 谢谢!

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

    您好!

    很高兴它能为您提供帮助。

    我建议也更新 TI 仿真器软件包-更新到版本8.1.0.00012或更高版本。  需要此仿真器更新来修复有关多核仿真的错误。  如果您已更新、请忽略。  只是想为您保存另一个调试周期、以防您使用错误版本。

    谢谢、此致、

    Vamsi