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/TMS320F28335:将代码下载到闪存无法正常工作。 请帮助。

Guru**** 2595805 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/957720/ccs-tms320f28335-download-code-to-flash-not-working-please-help

器件型号:TMS320F28335
主题中讨论的其他器件:C2000WARE

工具/软件:Code Composer Studio

大家好、CCS9不会将我的代码下载到我的 F28335闪存中。 如果我下载到 RAM、它将起作用、但我需要它将代码下载到闪存并从闪存运行。

我已更改.CMD 文件以将 FLASHA 更改为 FLASHH 组。 当我构建代码时、CCS 显示它存储在 FLASHA 中、正如我在.cmd 文件中所请求的那样。

我的程序构建良好、没有错误。 然后、我选择调试、当使用 RAM 时、它会下载到 F28335、但当使用闪存时、我会收到此错误。

C28xx:闪存编程器:写入闪存存储器时遇到错误

C28xx:文件加载程序:内存写入失败:未知错误

C28xx:GEL:文件:/Users/a1234/Desktop/TI_Workspace/Max1010_MoveOS2_1/Debug/Max1010_MoveOS2_1.out:加载失败。

下面是我编辑过的.CMD 文件。 有人能不能告诉我、我还没有把代码下载到闪存中、然后从闪存中运行。

非常紧急。

谢谢、希望很快能收到您的回复。

Peter。

/*
// TI 文件$Revision:/main/11 $
//签入$Date:2009年4月15日09:57:28 $
//################################################################################################
//
////文件:28335_RAM_lnk.cmd
//
//标题:针对运行于 RAM 之外的28335示例的链接器命令文件
//
这仅包括28335器件上的所有 SARAM 块。
// 这不包括闪存或 OTP。
//
// 请记住、L0和 L1受代码
//保护 安全模块。
//
// 这意味着、在大多数情况下、您需要移至
// 另一个定义了更多存储器的存储器映射文件。
//
//##########################################################################################################################
//$TI 发布:$
//$发布 日期:$
//##############################################################################################
/*

====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//对于 Code Composer Studio V2.2和更高版本
//------------
//除了这个内存连接器命令文件之外,
//将头连接器命令文件直接添加到项目中。
//将
//外设结构链接到
//内存映射中的适当位置需要使用头链接器命令文件。
//
//可以在中找到头文件链接器 \DSP2833x_Headers\cmd
//
//对于 BIOS 应用程序添加: DSP2833x_Headers_BIOS.cmd
//对于非 BIOS 应用程序,添加:DSP2833x_Headers_nonBIOS.cmd
========================================================================================== /*

====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//对于 V2.2之前的 Code Composer Studio
,//----------------
// 1)使用以下-l 语句之一在
工程中包含//头链接器命令文件。 将
外设结构链接到
存储器映射中的适当//位置需要使用头链接器//文件 //

////*取消注释此行以仅包含非 BIOS 应用程序的文件*//
/*-l DSP2833x_Headers_nonBIOS.cmd */

//*取消注释此行以仅包含 BIOS 应用程序的文件*/
/*-l DSP2833x_Headers_BIOS.cmd */

//* 2)在项目中添加路径 \DSP2833x_headers\cmd 至
project->build options、linker tab、
library search path (-i)下的库搜索路径。
/*================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ //

*定义 F28335
页的内存块开始/长度0将用于组织程序段
页1将用于组织数据段

注:
F28335上的存储器块是一致的(即相同的
物理存储器)。
不应该是相同的存储器区域
同时为 PAGE 0和 PAGE 1定义。
这样做将导致程序损坏
和/或数据。

L0/L1/L2和 L3存储器块被镜像-即
它们可以在高内存或低内存中访问。
为简单起见、其中仅使用了一个实例
链接器文件。

可组合连续 SARAM 存储器块
如果需要创建更大的存储器块。
*/


MEMORY
{
PAGE 0:
/* BEGIN 用于“引导至 SARAM”引导加载程序模式 */

开始 :origin = 0x000000,length = 0x000002 /*从此处引导至 M0 */
RAMM0 :origin = 0x000050、length = 0x0003B0
RAML0 :origin = 0x008000、length = 0x001000
RAML1 :origin = 0x009000、length = 0x001000
RAML2 :origin = 0x00A000、length = 0x001000
RAML3 :origin = 0x00B000、length = 0x001000
ZONE7A :origin = 0x200000、length = 0x00FC00 // XINTF 区域7 -程序空间*/
csm_RSVD:origin = 0x33FF80、length = 0x000076 /* FLASHA 的一部分。 当 CSM 正在使用时、使用所有0x0000进行编程。 //
csm_PWL:origin = 0x33FFF8,length = 0x000008 /* FLASHA 的一部分。 FLASHA 中的 CSM 密码位置 */
ADC_CAL:origin = 0x380080,length = 0x000009
reset :origin = 0x3FFFC0、length = 0x000002
IQTABLES:origin = 0x3FE000、length = 0x000b50
IQTABLES2:origin = 0x3FEB50、length = 0x00008c
FPUTABLES:origin = 0x3FEBDC、length = 0x0006A0
BootROM:origin = 0x3FF27C、length = 0x000DAC

:origin = 0x338000,length = 0x007F80
FLASHB:origin = 0x330000,length = 0x007FFF
FLASHC:origin = 0x328000,length = 0x007FFF
FLASHD:origin = 0x320000,length = 0x007FFF
FLASHE:origin = 0x318000,length = 0x007FFF FLASHD
:length = 0x007FFF = 0x0000F
origin = 0x308000、length = 0x007FFF
FLASHH:origin = 0x300000、length = 0x007FFF


PAGE 1:
// boot_RSVD 被引导 ROM 用于堆栈。 /*
保留此部分仅用于防止引导 ROM 在
调试过程中损坏此区域 //

boot_RSVD:origin = 0x000002,length = 0x00004E // M0的一部分,引导 ROM 将此用于栈*/
RAMM1 :origin = 0x000400、length = 0x000400 /*片上 RAM 块 M1 */
RAML4 :origin = 0x00C000、length = 0x001000
RAML5 :origin = 0x00D000、length = 0x001000
RAML6 :origin = 0x00E000、length = 0x001000
RAML7 :origin = 0x00F000、length = 0x001000
ZONE7B :origin = 0x20FC00,length = 0x000400 /* XINTF 区域7 -数据空间*/
}
段
{

//分配程序区域:*/
.cinit :> FLASHA、 PAGE = 0、ALIGN (4)
.pinit :> FLASHA、 PAGE = 0、ALIGN (4)
.text :>> FLASHA | FLASHB | FLASHC | FLASHD | FLASHE | FLASHF | FLASHH PAGE = 0,ALIGN (4)
。switch:> FLASHA,PAGE = 0
codestart:> Begin,PAGE = 0,ALIG(4)

//针对“引导至 SARAM”模式的设置:
codestart 段(可在 DSP28_CodeStartBranch.asm 中找到)
将执行重定向到用户代码的开始。 *

/* codestart :>开始, PAGE = 0 */

#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>= 15009000
.TI.ramfunc:{}> RAML0, PAGE = 0
#else
ramfuncs :> RAML0, PAGE = 0
#endif
#endif
/*
.text :> RAML1, PAGE = 0
.cinit :> RAML0, PAGE = 0.Pinit
:> RAML0, PAGE = 0.switch
:> RAML0, PAGE = 0
*/
.stack :> RAMM1, PAGE = 1.ebss
:> RAML4, PAGE = 1.econst
:> RAML5, PAGE = 1
.esysmem :> RAMM1, PAGE = 1

IQmath :> RAML1, PAGE = 0
IQmathTables :>IQTABLES,page = 0,type = NoLoad

//如果调用 IQNexp()或 IQexp(),取消注释以下段
库中的函数、以便利用
引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
1个等待状态)。 如果此部分未注释、则为 IQmathTables2
将被加载到其他存储器(SARAM、闪存等)中并将采用
上行空间、但0等待状态是可能的。
//
/*
IQmathTables2:> IQTABLES2,page = 0,type = NoLoad
{

IQMath.lib (IQmathTablesRam)

}
*/

FPUmathTables:> FPUTABLES,page = 0,type = NoLoad

DMARAML4 :> RAML4, PAGE = 1
DMARAML5 :> RAML5, PAGE = 1
DMARAML6 :> RAML6, PAGE = 1
DMARAML7 :> RAML7, PAGE = 1

ZONE7DATA :>ZONE7B,PAGE=1

.reset :>重置, PAGE = 0、TYPE = DSECT /*未使用 */
csm_rsvd :>csm_RSVD page = 0,type = DSECT //不用于 SARAM 示例*/
csmpasswds :>csm_PWL page = 0、type = DSECT //*不用于 SARAM 示例*

//*分配 ADC_cal 函数(出厂时已预先编程到 TI 保留存储器中)*/
.ADC_cal :load = ADC_CAL,page = 0,type = NoLoad

}/*


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

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

    Peter、

    1.既然你说编译时没有警告/错误,我觉得这是一个板问题。

    您是否能够在过去的任何时间成功加载到此板上的闪存?

    您能否尝试加载 C2000Ware 中提供的示例(C2000Ware_3_03_00_00\device_support\F2833x\examples\flash_F28335)、而不是您的应用?

    它可以告诉您这是电路板问题还是应用问题。

    2.是否可以在调试器内存窗口中检查密码位置的内容?  让我们知道其中存在什么。

    3.我看到.TI.ramfunc/ramfuncs 映射到 RAM。  您需要在运行时将其加载到闪存并复制到 RAM。

    请查看 位于 C2000Ware_3_03_00_00\device_support\f2833x\con\cmd 的 F28335.cmd

    4.当闪存擦除/编程正在进行时、确保电源轨处于数据表中规定的工作规格范围内。

    谢谢、此致、

    Vamsi

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

    Vamsi 您好、感谢您的回复。 来回答您的问题。

    这是我第一次对板进行编程。 将代码下载到 RAM 还可以、但不下载到闪存。

    我将尝试下载 C2000Ware flash_f28835中的示例、并告知您该示例是否有效。

    2.这是 DigiKey 推出的一款新芯片,因此它以前从未进行过编程,因此密码保护应该是明确的(生产后默认设置)

    3.我将检查 ramfunc 并根据您的要求进行更改。

    4.我也会检查电源轨。 我上次检查时、CPU VCC 线路上的电压为3.3V 或 IOVCC 和1.8V、但今天我要再次检查。

    再次感谢您、我将告诉您我的工作原理。

    彼得:)

     

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

    Peter、

    明白了。  请尝试、我将在下周初检查您的更新。

    谢谢、此致、

    Vamsi

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

    Peter、

    您对此有更新吗?  我可以关闭此帖子吗?

    谢谢、此致、

    Vamsi

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

    你好,Vamsi,很抱歉我离开了。 不幸运的是、CCS9不会将我的代码直接下载到闪存中。

    接下来该怎么办?

    Peter

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

    Peter、

    您是否尝试过我之前提到的建议来找出问题?  请告诉我。

    谢谢、此致、

    Vamsi

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

    Peter、

    希望问题现在可以解决。  由于没有人答复,我将关闭这篇文章。

    请根据需要打开新帖子。

    谢谢、此致、
    Vamsi