工具/软件:Code Composer Studio
您好,
我已经完成了从外部RAM接口到TMS320F2.8335万的执行程序。 但我无法从它执行程序。
这里我给出了相同的命令文件。我也在F2.8335万.gel文件中进行了更改,并注释了如下所示的行
OnReset (内部错误代码)
{
IF (Gel_IsInRealtimeMode()) /* If in Real-time-mode */
{
}
ELSE /*将设备置于C28x模式*/
{
C28x_Mode();
}
解锁_CSM();
ADC_Cal();
XINTF_Enable();/* 取消注释以启用重置时的XINTF */
}
外部RAM的命令文件如下所示
/*
// TI文件$Revision:/main/11 $
//签入$日期:2009年4月15日 09:57:28 $
//###################################################################
//
//文件: 2.8335万_RAM_lnk.cmd
//
//标题: 2.8335万的链接器命令文件,RAM不足的示例
//
// 这仅包括2.8335万设备上的所有SARAM块。
// 这不包括闪存或OTP。
//
// 请记住,L0和L1受代码保护
// 安全模块。
//
// 在大多数情况下,这意味着您要移至
// 另一个已定义更多内存的内存映射文件。
//
//###################################################################
//$TI发行版:2833x/2823x头2823头文件1.32
//$发布日期:2010年6月28日$
//###################################################################
*/
/*===================================================================================
//用于Code Composer Studio 2.2 及更高版本
//----------------
//除了此内存链接器命令文件外,
//将头链接器命令文件直接添加到项目中。
//需要头链接器命令文件来链接
//外围结构到中的正确位置
//内存映射。
//
//头链接器文件位于<base>\DSP2833x_Headers\cmd中
//
//对于BIOS应用程序,添加: DSP2833x_Headers_BIOS.cmd
//对于非BIOS应用程序,添加: DSP2833x_Headers_nonBIOS.cmd
=================================================================================================================== */
/*===================================================================================
//对于2.2 之前的Code Composer Studio
//----------------
//1)使用以下-l语句之一来包括
//项目中的头链接器命令文件。 头链接器
//文件是将外围结构链接到正确的所需的
//内存映射中的位置 */
/*取消注释此行以仅包括非BIOS应用程序的文件*/
/*-l DSP2833x_Headers_nonBIOS.cmd */
/*取消注释此行以包括仅用于BIOS应用程序的文件*/
/*-l DSP2833x_Headers_BIOS.cmd */
/* 2)在项目中,将路径<base>\DSP2833x_headers\cmd添加到
项目->生成选项下的库搜索路径,链接器选项卡,
库搜索路径(-i)。
/*=========================================================================================================== */
/*定义F2.8335万的内存块起始/长度
第0页将用于组织程序部分
第1页将用于组织数据部分
注:
F2.8335万上的内存块是一致的(即相同的
物理内存)。
这是不应出现的相同内存区域
为第0页和第1页定义。
这样做会导致程序损坏
和/或数据。
镜像l0/L1/L2和L3内存块-即
它们可以在高内存或低内存中访问。
为简单起见,此中仅使用一个实例
链接程序文件。
连续的SARAM内存块可以组合使用
如果需要创建更大的内存块。
*/
内存
{
第0页:
/* BEGIN用于“引导至SARAM”引导加载程序模式 */
BEGIN :Origin = 0x0万,length = 0x0.0002万 /* Boot to M0 will go here */(开始:源站= 0x0万,长度= 0x0.0002万 /*引导到M0将在此处*
RAMM0 :原点= 0x0.005万,长度= 0x0003B0
L0123SARAM :原点= 0x0.8万,长度= 0x0.4万 /* L0 - L3 SARAM组合,CSM安全*/
/* RAML0 :原点= 0x0.8万,长度= 0x0.1万
RAML1 :原点= 0x0.9万,长度= 0x0.1万
RAML2 :原点= 0x00A000,长度= 0x0.1万
RAML3 :原点= 0x00B000,长度= 0x0.1万*/
ZONE7A :原点= 0x20万,长度= 0x00FC00 /* XINTF区域7 -程序空间*/
CSM_RSVD :原点= 0x33FF80,长度= 0x0.0076万 /* FLASHA的一部分。 在使用CSM时使用所有0x0000编程。 */
CSM_PWL :原点= 0x33FFF8,长度= 0x0.0008万 /* FLASHA的一部分。 FLASHA */中的CSM密码位置
ADC_CAL :原点= 0x38.008万,长度= 0x0.0009万
重置 :原始= 0x3FFFC0,长度= 0x0.0002万
IQTABLES :原点= 0x3FE000,长度= 0x000b50
IQTABLES2 :原点= 0x3FEB50,长度= 0x0.0008万c
FPUTABLES :原点= 0x3FEBDC,长度= 0x0006A0
BootROM :Origin = 0x3FF27C,length = 0x000D44
第1页:
/* BOOT_RSVD由启动ROM用于堆栈。 */
/*此部分仅保留用于从 */中保留引导ROM
/*在调试过程中损坏此区域 */
BOOT_RSVD :Origin = 0x0.0002万,length = 0x0.0004万E /* M0的一部分,boot ROM将对stack */使用此选项
RAMM1 :原点= 0x0.04万,长度= 0x0.04万 /*片上RAM块M1 */
RAML4 :原点= 0x00C000,长度= 0x0.1万
RAML5 :原点= 0x00D000,长度= 0x0.1万
RAML6 :原点= 0x00E000,长度= 0x0.1万
RAML7 :原点= 0x00F000,长度= 0x0.1万
ZONE7B :原点= 0x20FC00,长度= 0x0.04万 /* XINTF区域7-数据空间*/
}
章节
{
/*“引导至SARAM”模式的设置:
codegstart部分(可在DSP28_CodeStartBranch.asm中找到)
将执行重定向到用户代码的开头。 */
codegstart :> begin, page =0
ramfuns :> ZONE7A, 页=0
.text :> ZONE7A, page =0
.cinit :> ZONE7A, page =0
.Pinit :> ZONE7A, 页数= 0
.SWITCH :> ZONE7A, PAGE = 0
.stack :> RAMM1, 页= 1
.ebss :> RAML4, 页= 1
econst :> RAML5, page =1
esysmem :> RAMM1, 页= 1
IQMath :> ZONE7A, 页数=0
IQmathTables :> IQTABLES, page =0,type = NoLoad
/*如果调用IQNexp()或IQexp(),则取消注释以下部分
从IQMath.lib库中执行函数,以便利用
引导ROM中的相关IQ Math表(这可节省空间和引导ROM
为1等待状态)。 如果此部分未取消注释,请使用IQmathTables2.
将加载到其他存储器(SARAM,闪存等)中并将占用
打开空间,但0等待状态是可能的。
*/
/*
IQmathTables2 :> IQTABLES2,page =0,type = NoLoad
{
IQMath.lib<IQNexpTable.obj>(IQmathTablesRam)
}
*/
FPUmathTables :> FPUTABLES,page =0,type = NoLoad
DMARAML4 :> RAML4, 页面= 1
DMARAML5 :> RAML5, 页面= 1
DMARAML6 :> RAML6, 页面= 1
DMARAML7 :> RAML7, 页面= 1
ZONE7DATA :> ZONE7B, 页= 1.
.reset :> reset, page =0,type = DSECT /* not used */
csm_rsvd :> csm_RSVD page =0,type = DSECT /*不用于SARAM示例*/
csmpewds :> CSM_PWL 页=0,类型= DSECT /*不用于SARAM示例*/
/*分配ADC_CAal函数(出厂时预编程到TI保留内存中)*/
.adc_cal :load = adc_CAL, 页=0,type = NoLoad
}
/*
//===========================================================================================================================================
//文件结束。
//===========================================================================================================================================
*/
请更新!
此致,
Ketan
