主题中讨论的其他器件: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
}/*
//========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//文件结束。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*