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.

[参考译文] TMS320C6455:为什么我构建 c6645 EMIFA 演示项目,它报告了一些未定义的符号问题。

Guru**** 2551170 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/621749/tms320c6455-why-i-build-the-c6645-emifa-demo-project-it-report-some-undefined-symbol-problem

器件型号:TMS320C6455
/*====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*版权所有(c) Texas Instruments Inc 2002、2003、2004、2005
*
*本软件的使用受
提供本软件的许可协议中*的条款和条件控制。
*====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*/

**================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*
*@文件 EMIFA_ReadWrite_Example.c
*
*@path $(CSLPATH)\examples\EMIFA\src
*
@EMIFA 的描述示例
*
========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*@n 目标平台:VDB
*============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*@n 示例说明
*@n 此示例

* 设置异步和同步类型
* 2.初始化并打开 CSL EMFIA 模块。
* 3.设置硬件参数
* 4.将无效值写入 EMIFA CS2区域、以对
*进行写操作 以前的值。
* 5.将有效数据写入 CS2区域。
* 6.进行数据比较以确保写入的数据正确或
* 不是和
* 7.显示基于步骤6的消息
* 8.重复步骤4到步骤7将数据写入到 CS4区域
*
============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*
*运行示例的过程
*@逐字记录
* 1.配置 CCS 设置以与所使用的仿真器配合使用
* 请参阅 CCS 手册以了解设置配置和加载
* 正确的 GEL 文件
* 3.启动 CCS 窗口
* 4.打开项目 EMIFA_ReadWrite_Example.pjt
* 5.编译工程并加载工程的.out 文件。
*
*@endverbatim
*
**/

/*====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*修订历史记录
*===========
* 2005年5月21日 Ramitha Mathew。 已创建
* 2005年7月20日 RM 模块名称从 EMIF64更改为 EMIFA
* 2005年11月30日 NG 已更新文档
* 2006年2月06日 DS Async 和 SYNC START 区域已更改为 CE3 LOaction
*====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*/
#include 
#include 
#include 


//
#define DATA_MATH_SUCCESS 的数据比较成功标志 1
/*结果-失败*/
#define DATA_MATH_FAIL 0

/*数据计数(数字写入/回读)*/
#define DATA_CNT 10

// EMIFA CE3的基地址*/
#define EMIFA_CE3_BASE_ADDR (0xB0000000u)

#define EMIFA_MEMYPE_ASYNC0
#define EMIFA_MEMTYPE_SYNC 1

/* EMIFA 实例的句柄*/CSL_EmifaHandle
hemifa;

/*局部和转发*/
void emifaReadWrite (void);

/*====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

*@func main
*
*@desc
* 这是文件的主例程。
*
*============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*/
void main (
void
)
{
/*启用 EMIFA */
CSL_FINST ((((CSL_DevRegs*) CSL_DEV_regs)->PERCFG1、DEV_PERCFG1_EMIFACTL、\
使能);

emifaReadWrite();

返回;
}/*====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================



*@func emifaReadWrite
*
*@arg
* 无
*
*@desc
* 此函数演示 EMIFA 的设置功能
* 它执行以下步骤
* 1.打开 EMIFA 模块 CSL
* 调用 CSL_emifaHwSetup 以进行模块配置
* 3.写入配置为同步存储器和
*的 CE4区域 配置为异步存储器回读的 CE2区域、以使
* 确保数据确实被写入。
* 4、EMIFA 模块 CSL 闭合。
*
*@return
* 无
*
*====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*/
void emifaReadWrite (
void
)
{
uint32. 结果、索引、tempData;
CSL_EmifaObj emifaObj;
CSL_Status 状态;
CSL_EmifahwSetup hwSetup;

CSL_EmifaMemType asyncVal、syncVal;
CSL_EmifaAppanWait asyncWait = CSL_EMIFA_ASNCWAIT_DEFAULTS;
CSL_Emifa异 步 asyncMem = CSL_EMIFA_ASINCCFG_DEFAULTS;
CSL_EmifaSync syncMem = CSL_EMIFA_SYNCCFG_DEFAULTS;

/*指向异步(CE3)起始区域的指针*/
uint32 * p23数据=(uint32 *) EMIFA_CE3_base_ADDR;

指向同步(CE3)开始区域的/*指针*/
uint32 * pSyncData =(uint32 *) EMIFA_CE3_base_ADDR;

/*清除本地数据结构*/
memset (&emifaObj、0、sizeof (CSL_EmifaObj));
memset (&hwSetup、0、sizeof (CSL_EmifaHwSetup));

/*异步类型的设置*/
asyncVal.sel = EMIFA_MEMYPE_ASYNC;
asyncVal.async =&asyncMem;
asyncVal.sync =空;

/*同步类型的设置*/
syncVal.sel = EMIFA_MEMTYPE_SYNC;
synctval.async =空;
synctval.sync = syncdem;

/*设置硬件参数*/
hwSetup.asyncWait =&asyncWait;
hwSetup.ceCfg[0]=&asyncVal;
hwSetup.ceCfg[1]=空;
hwSetup.ceCfg[2]=&synctval;
hwSetup.ceCfg[3]=空;

printf ("\TInfo:EMIFA 的读写操作\n");

/*初始化 EMIFA CSL 模块*/
状态= CSL_emifaInit (NULL);
if (status!= CSL_Sok){
printf ("EMIFA:初始化错误。\n");
printf ("\叛国:cSL_emifaInit [状态= 0x%x]。\n"、状态);
返回;
}
否则{
printf ("EMIFA:模块已初始化。\n");
}

/*打开 EMIFA 实例*/
hemifa = CSL_emifaOpen (&emifaObj、CSL_EMIFA、NULL、&STATUS);
if ((status!= CSL_Sok)||(hEmifa = NULL)){
printf ("EMIFA:打开实例时出错。 [状态= 0x%x、hEmifa \
= 0x%x]\n"、状态、hemifa);
返回;
}
否则{
printf ("EMIFA:模块实例已打开。\n");
}

/*使用 HwSetup 设置配置参数*/
status = CSL_emifaHwSetup (hEmifa、hwSetup);
if (status!= CSL_Sok){
printf ("EMIFA:硬件设置中出错。\n");
printf ("读写操作失败\n"\n);
返回;
}
否则{
printf ("EMIFA:模块硬件设置成功。\n");
}

printf ("\TInfo:异步读写\n");
/*将"无效"值写入 EMIFA CS2区域。 这将覆盖
*以前的有效值。
*
tempData = 0xdeadf牛肉;
对于(索引= 0;索引< DATA_CNT;索引++){
pAppData [index]= tempData;
}

/*将**有效**值写入 CS2区域。 *
tempData = 0x55550000;
对于(索引= 0;索引< DATA_CNT;索引++){
pAppData [index]= tempData + INDEX;
}

/*验证数据是否确实已写入*/
结果= DATA_MATH_SUCCESS;
对于(索引= 0;索引< DATA_CNT;索引++){
if (如果)(如果)(如果)=(tempData + index)){
结果= DATA_MATH_FAIL;
中断;
}
}

/*打印适当的消息*/
if (结果= data_match_Success){
printf ("\n 异步读写成功\n");
}
否则{
printf ("\n 异步读写操作不成功\n");
}

printf ("\TInfo:同步读取写入\n");
/*将"无效"值写入 EMIFA CS4区域。 这将覆盖
*以前的有效值。
*

tempData = 0xdeadf牛肉;
对于(索引= 0;索引< DATA_CNT;索引++){
pSyncData[index]= tempData;
}

/*将**有效**值写入 CS4区域。 *
tempData = 0x56780000;
对于(索引= 0;索引< DATA_CNT;索引++){
pSyncData[index]= tempData + INDEX;
}

/*验证数据是否确实已写入*/
结果= DATA_MATH_SUCCESS;
对于(索引= 0;索引< DATA_CNT;索引++){
if (pSyncData[index]!=(tempData +索引)){
结果= DATA_MATH_FAIL;
中断;
}
}

/*打印适当的消息*/
if (结果= data_match_Success){
printf ("\n 同步读写成功\n");
}
否则{
printf ("\n 同步读写操作不成功\n"\});
printf ("\叛国:读取数据时出错。[状态= 0x%x]\n"、状态);
}
返回;
}

我尚未修改代码、CCS 显示以下错误:

未定义               第一个参考
符号                    文件中
------ --------
_CSL_emifaHwSetup     /EMIFA_ReadWrite_Example.obj
_CSL_emifaInit          /EMIFA_ReadWrite_Example.obj
_CSL_emifaOpen        /EMIFA_ReadWrite_Example.obj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已通知软件团队。 他们的反馈将在此处发布。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用的是哪个版本的编译器? 是构建 COFF 还是 ELF 二进制文件。 当 ELF 代码与带有前导下划线的 COFF 目标文件链接时、会显示您报告的错误。 较新的编译器默认生成 ELF 二进制文件、您需要添加--abi=coffabi 来构建 COFF 二进制文件。

    请参阅以下内容:
    processors.wiki.ti.com/.../C6000_EABI_Migration

    希望这对您有所帮助。

    此致、
    Rahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复。我正在使用 TI v7.4.18构建传统 COFF。 但它不起作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请提供编译器选项、并确保报告链接器错误的文件使用与应用程序代码相同的标志。

    此致、

    Rahul

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

    以下是我的选项、我不知道如何查找链接器错误。 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为什么要使用大端字节序? 这并不常见、尽管不是您所看到的任何问题的原因。

    链接器选项中没有任何内容可告诉链接器要从中读取哪些库。 它知道在工程中编译了哪些文件、但除非您明确告知它、否则它不知道库。

    此致、
    RandyP