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/TMS320C6748:TMS320C6748 LCDK

Guru**** 1997655 points
Other Parts Discussed in Thread: CDCE913, TVP5147
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/609760/ccs-tms320c6748-tms320c6748-lcdk

器件型号:TMS320C6748
主题中讨论的其他器件:CDCE913TVP5147

工具/软件:Code Composer Studio

拉胡尔先生:

我在 vpif_lcd_loopback.c 文件中添加了以下内容:


////添加以下2017-07-11

if (VLIB_cache_init ())

VLIB_memError ("VLIB_Canny_Edge_Detection");


其他

//// VLIB_Canny_Edge_Detection_d-aa (0);


canny_getTestParams (&prm、&test_cases);

/*初始化性能评测*/
VLIB_PROFILE_INIT (2、"VLIB_Canny_Edge_Detection);

/*运行每个测试用例*/
for (TPI=0;TPI < test_cases;TPI++)

/*初始化状态标志*/
int32_t status_NAT_VS_int = VLIB_kernel_pass;//测试状态:Natural c vs. Optimized *
int32_t status_NAT_VS_ref = VLIB_kernel_pass;//测试状态:Natural c 与静态基准*

/*计算缓冲区大小*/
uint32_t buffersize = prm[TPI].width * prm[TPI].height;

/*为每个测试向量分配缓冲区*/
uint8_t * pInput =(uint8_t *) VLIB_malloc (buffersize * sizeof (uint8_t));
int16_t * pBufGradX =(int16_t *) VLIB_malloc (buffersize * sizeof (int16_t));
int16_t * pBufGrady =(int16_t *) VLIB_malloc (buffersize * sizeof (int16_t));
int16_t * pBufMag =(int16_t *) VLIB_malloc (buffersize * sizeof (int16_t));
uint8_t * pScratch =(uint8_t *) VLIB_malloc (buffersize * sizeof (uint8_t));
uint8_t * pBufOut =(uint8_t *) VLIB_malloc (buffersize * sizeof (uint8_t));
uint8_t * pBufOut_CN =(uint8_t *) malloc (buffersize * sizeof (uint8_t));
int32_t 数字项目;
int32_t numItems_cn;

/*仅当缓冲区分配适合堆时运行测试*/
if (pInput && pBufGradX && pBufGradY && pBufMag && pScratch && pBufOut && pBufOut_CN)

uint32_t 失败;

/*根据所需的测试模式填充输入数组*/
VLIB_fillBuffer (PRM[TPI].testPattern、
(uint8_t) 127、
pInput、PRM[TPI].input、
PRM[TPI].width、PRM[TPI].height、PRM[TPI].width、
sizeof (uint8_t)、testPatternString);

/*初始化内存*/
memset (pBufGradX、0、buffersize * sizeof (int16_t));
memset (pBufGradY、0、buffersize * sizeof (int16_t));
memset (pBufMag、0、buffersize * sizeof (int16_t));
memset (pBufOut、0、buffersize * sizeof (uint8_t));
memset (pScratch、0、buffersize * sizeof (uint8_t));

/*测试优化的内核*/
VLIB_PROFILE_START (VLIB_kernel_opt);

////添加上述2017-07-11


然后依次选择"Project"->"Build Project"

以下内容将出现在“Console (控制台)”窗口中,


错误:保留的 far 段中的符号不能作为 near;符号进行访问
在 far 部分中添加了"ACT_kernel"
"C:\ti\VLIB_C674x_3_3_0_3\packages/ti\VLIB\lib\cone.ae674

(.far)"在"../vpif_lcd_loopback .obj (.text)"部分中的 near 位置访问
>>编译失败
错误:保留的 far 段中的符号不能作为 near;符号进行访问
远段中的"beg_count"
"C:\ti\VLIB_C674x_3_3_0_3\packages\ti\VLIB\lib\cone.ae674 <VLIB_profile.oe6
74>(.far)"在段中作为 near 进行访问
"../vpif_lcd_loopback.obj (.text)"
错误:保留的 far 段中的符号不能作为 near;符号进行访问
远段中的"beg_count"
"C:\ti\VLIB_C674x_3_3_0_3\packages\ti\VLIB\lib\cone.ae674 <VLIB_profile.oe6
74>(.far)"在段中作为 near 进行访问
"../vpif_lcd_loopback.obj (.text)"
错误:保留的 far 段中的符号不能作为 near;符号进行访问
"test_cases"
"C:\ti\VLIB_C674x_3_3_0_3\packages/ti\VLIB\lib\cone.ae674
(.fardata)"在段中尽可能接近
"../vpif_lcd_loopback.obj (.text)"
错误:保留的 far 段中的符号不能作为 near;符号进行访问
"test_cases"
"C:\ti\VLIB_C674x_3_3_0_3\packages/ti\VLIB\lib\cone.ae674
(.fardata)"在段中尽可能接近
"../vpif_lcd_loopback.obj (.text)"
错误:保留的 far 段中的符号不能作为 near;符号进行访问
"test_cases"
"C:\ti\VLIB_C674x_3_3_0_3\packages/ti\VLIB\lib\cone.ae674
(.fardata)"在段中尽可能接近
"../vpif_lcd_loopback.obj (.text)"
警告:创建不带段的输出段".SRAM_START"
规格

未定义的首次引用
符号
------ --------
_sam_start C:\ti\VLIB_C674x_3_3_0_3\packages/ti\VLIB\lib\cone.ae674
canny_getTestParams ./vpif_lcd_loopback.obj

错误:未解析的符号仍然存在
错误:链接期间遇到错误;未构建"vpif_lcd_loopback.out"
gmake:***[vpif_lcd_loopback.out]错误1.
gmake:目标`全部'不会由于错误而重制。

****构建完成****


我该怎么办?
正在等待您的有用消息。
祝您好运!

张斌,亚历克斯

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

    很可能、您需要将--mem_model 编译器开关设置为 far 或 far_aggregate。 您可以在编译器用户指南中阅读有关该开关和设置的信息。

    此致、
    RandyP
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将根据您的命令重试。 谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    先生:

    现在我使用 Code Composer Studio 版本:5.1.00031  

    我找不到设置 --mem_model 的位置。

    您能给我更多详细的建议吗?

    或者如何获得网站链接或文件,以告诉我 如何将--mem_model 编译器切换为 far?

    正在等待您的回复。

    祝您好运!

    张斌,亚历克斯

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

    很遗憾、我使用的是 CCSv7。 我的编译器版本也可能与您的版本不同。

    但是、请查找编译器的编译器工具版本和优化 C/C++编译器用户指南的正确版本。 您可以浏览多个编译器开关以查找准确的编译器开关-它可能是较旧和较简单的格式。 但将有一个与存储器模型相关的开关。 通过阅读特定的详细信息、了解存储器模型设置的功能非常重要。 对内存模型的更改会影响性能、但也会影响构建过程、就像您的情况一样。

    老实说、当我尝试记住一些我不经常使用的编译器开关时、我将转到 CCS 中的"Project Properties"对话框、选择"Compiler"、甚至是"Linker"、 并将查看可选择的每个项目以及显示的所有开关。 这就是我了解可用内容或刷新特定交换机语法的内存的方法。 这可能比使用编译器用户指南更容易、但两者都将提供信息。

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

    链接期间遇到错误;未构建"vpif_lcd_loopback.out"


    保留的 far 段中的符号不能作为 near;符号进行访问


    未解析的符号_SRAM_START、首先在 C:\ti\VLIB_C674x_3_3_0_3\packages/ti\VLIB\lib\cone.ae674中引用


    未解析的符号 canny_getTestParams、首先在./vpif_lcd_loopback.obj 中引用


    未解析的符号仍然存在





    以上是 I Project -> Build Project 之后遇到的错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RandyP 先生(以英语发言):

    根据 Project -> Properties -> Build -> C6000 Compiler -> Runtime Model Options -> Const Access Model,我选择“far”选项,然后选择“Data Access Model”,我选择“far”选项。
    我对吗?

    但在 I Project -> Build Project 之后仍然出现五个错误,如下所示:

    错误(5项)

    链接期间遇到错误;未构建"vpif_lcd_loopback.out"


    保留的 far 段中的符号不能作为 near;符号进行访问


    未解析的符号_SRAM_START、首先在 C:\ti\VLIB_C674x_3_3_0_3\packages/ti\VLIB\lib\cone.ae674中引用


    未解析的符号 canny_getTestParams、首先在./vpif_lcd_loopback.obj 中引用


    未解析的符号仍然存在
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您似乎没有使用示例项目附带的 lnk.cmd。 请参阅 VLIB_C674x_3_3_0_3\packages/ti\VLIB\src\con\c64P 文件夹中的 lnk.cmd 文件。


    您可能缺少 lnk.cmd 文件中的以下行:

    .SRAM_START (_SRAM_START)> L2_SRAM NOINIT
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    杰西·维拉里尔先生:

    现在、我使用目录下的示例项目

    PKD_C6748_2_0_0_0 / C6748_StarterWare_1_20_03_03 /示例/ lcdkC6748 /

    vpif_lcd_loopback,在 PKD_C6748_2_0_0_0 directy 及其子目录下,没有 lnk.cmd,但具有 vpif_lcd_loopback.cmd。


    在修改 vpif_lcd_loopback.cmd 文件之前,它的内容如下所示:

    //

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    //链接 c674 DSP 程序的链接器命令文件
    //
    //这些链接器选项仅用于命令行链接。 对于 IDE 链接、
    //应在 Project Properties 中设置链接器选项。
    // -c 使用 C 惯例进行链接
    // -stack 0x1000 软件栈大小
    // 堆0x1000 堆区域大小
    //====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    -stack 0x1000
    堆0x1000

    //

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    // 指定系统内存映射
    //

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    存储器

    L1P:O = 0x11E00000 L = 0x00008000
    L1D:O = 0x11F00000 L = 0x00008000
    L2: O = 0x11800000 L = 0x00040000
    DDR2:O = 0xC0000000 L = 0x08000000


    //

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    // 指定段分配到内存中
    //

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    部分



    .cinit > DDR2 //初始化表
    .pinit > DDR2 //构造函数表
    .init_array > DDR2 //
    二进制文件 > DDR2 //引导表
    .const > DDR2 //常量数据
    切换 > DDR2 //跳转表
    .text > DDR2 //可执行代码
    .text:_c_int00:align=1024 > DDR2 // Entrypoint

    组(NEARDP_DATA) //分组近数据

    .neardata
    rodata
    .bss //注:已删除填充= 0
    } > DDR2
    far:fill = 0x0、load > DDR2 // far 全局和静态变量
    fardata > DDR2 // far RW 数据
    堆栈 > DDR2 //软件系统堆栈
    sysmem > DDR2 //动态内存分配

    面积

    .cio > DDR2 // C I/O 缓冲器
    向量 > DDR2 //中断矢量



    然后,今天,我将其修改为:


    //

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    //链接 c674 DSP 程序的链接器命令文件
    //
    //这些链接器选项仅用于命令行链接。 对于 IDE 链接、
    //应在 Project Properties 中设置链接器选项。
    // -c 使用 C 惯例进行链接
    // -stack 0x1000 软件栈大小
    // 堆0x1000 堆区域大小
    //====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    -stack 0x1000
    堆0x1000

    //

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    // 指定系统内存映射
    //

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    存储器

    L1P:O = 0x11E00000 L = 0x00008000
    L1D:O = 0x11F00000 L = 0x00008000
    L2: O = 0x11800000 L = 0x00040000
    DDR2:O = 0xC0000000 L = 0x08000000


    //

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    // 指定段分配到内存中
    //

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    部分



    ////添加2017-07-18
    .SRAM_START (_SRAM_START)> L2_SRAM NOINIT

    //.kernel{
    // VLIB.a*<*。o*>(.text:优化)
    //}size (_kernel_size)> DDR2

    //.kernel_data{
    // VLIB.a*<*。o*>(.bss)
    // VLIB.a*<*。o*>(.const)
    // VLIB.a*<*。o*>(.neardata)
    // VLIB.a*<*。o*>(.rodata)
    // VLIB.a*<*。o*>(.far)
    // VLIB.a*<*。o*>(.fardata)
    // VLIB.a*<*。o*>(.switch)
    //}size (_data_size)> DDR2

    ////添加



    .cinit > DDR2 //初始化表
    .pinit > DDR2 //构造函数表
    .init_array > DDR2 //
    二进制文件 > DDR2 //引导表
    .const > DDR2 //常量数据
    切换 > DDR2 //跳转表
    .text > DDR2 //可执行代码
    .text:_c_int00:align=1024 > DDR2 // Entrypoint

    组(NEARDP_DATA) //分组近数据

    .neardata
    rodata
    .bss //注:已删除填充= 0
    } > DDR2
    far:fill = 0x0、load > DDR2 // far 全局和静态变量
    fardata > DDR2 // far RW 数据
    堆栈 > DDR2 //软件系统堆栈
    sysmem > DDR2 //动态内存分配

    面积

    .cio > DDR2 // C I/O 缓冲器
    向量 > DDR2 //中断矢量


    然后我执行、Project -> Build All、

    结果如下:


    ****为项目构建配置调试

    vpif_lcd_loopback_C674x_C6748_lcdkC6748 ****

    C:\ti\ccsv5\utils\bin.gmake -k all
    '构建目标:vpif_lcd_loopback.out'
    '调用:C6000链接器'
    "C:/ti/ccsv5/tools/compiler/c6000/bin/cl6x "-mv6740 -g -gcc -define=C6748 -

    -diag_warning=225 --mem_model:const=far --mem_model:data=far --abi=eabi -z -

    m"vpif_lcd_lcd_loopback _C674x_C6748_lcdkC6748.map"-warn_sections -

    "C:/ti/ccsv5/tools/compiler/c6000/lib -

    "C:/ti/ccsv5/tools/compiler/c6000/include -

    i"../../../../../../../binary/c674x/cgt_ccs/c6748/drivers/Debug -

    i"../../../../../../../binary/c674x/cgt_ccs/c6748/lcdkC6748/platform/Debug -

    i"../../../../../../../binary/c674x/cgt_ccs/c6748/system_config/Debug -

    i"../../../../../../../binary/c674x/cgt_ccs/c6748/ipclib/Debug -

    i"../../../../../../../binary/c674x/cgt_ccs/c6748/usblib/Debug -

    i"../../../../../../../binary/c674x/cgt_ccs/utils/Debug -

    i"../../../../../../../binary/c674x/cgt_ccs/grlib/Debug -

    i"../../../../../../../binary/c674x/cgt_ccs/nandlib/Debug --reread_libs --

    rom_model -o "vpif_lcd_loopback.out""./vpif_lcd_loopback.obj"

    "./tvp5147.obj""./i2cgpio.obj""./codecif.obj""/cdCE913.obj"

    "./cbcr422sp_TO_rgb565_dsp.obj""/adv7343.obj"-l"libc.a"-

    l"C:\ti\VLIB_C674x_3_3_0_3\packages/ti\VLIB\lib\VLIB_CN.lib"-

    l"C:\ti\VLIB_C674x_3_3_0_3\packages/ti\VLIB\lib\VLIB.lib"-

    l"C:\ti\VLIB_C674x_3_3_0_3\packages/ti\VLIB\lib\cone.lib"-ldrivers.lib -

    lutils.lib -lplatform.lib -lsystem_config.lib "./vpif_lcd_loopback.cmd"

    "./vpif_lcd_loopback .cmd"、第32行:警告:未找到存储器范围:L2_SRAM
    第0页
    "./vpif_lcd_loopback.cmd"、第32行:错误:无有效存储器范围(空)
    可用于放置".SRAM_START"
    "./vpif_lcd_loopback.cmd"、第32行:错误:对象的运行放置失败
    ".SRAM_START"、大小0x1 (第0页)

    未定义 第一个参考
    符号 文件中
    ------ --------
    canny_getTestParams ./vpif_lcd_loopback.obj

    错误:未解析的符号仍然存在
    错误:链接期间遇到错误;未构建"vpif_lcd_loopback.out"

    >>编译失败
    gmake:***[vpif_lcd_loopback.out]错误1.
    gmake:目标`全部'不会由于错误而重制。

    ****构建完成****


    i konw 我无法添加".sram_start (_sam_start)>L2_SRAM NOINIT "

    正确地说,您能给出一些建议吗?

    正在等待您的回复!

    祝您好运!

    张斌,亚历克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    杰西·维拉里尔先生:

    修改 vpif_lcd_loopback.cmd 文件后,现在没有错误,但出现警告:


    "./vpif_lcd_loopback .cmd"、第41行:警告:无匹配段
    "./vpif_lcd_loopback.cmd"、第45行:警告:无匹配段
    "./vpif_lcd_loopback.cmd"、第46行:警告:无匹配段
    "./vpif_lcd_loopback.cmd"、第47行:警告:无匹配段
    "./vpif_lcd_loopback.cmd"、第48行:警告:无匹配段
    "./vpif_lcd_loopback.cmd"、第49行:警告:无匹配段
    "./vpif_lcd_loopback.cmd"、第50行:警告:无匹配段
    "./vpif_lcd_loopback.cmd"、第51行:警告:无匹配段

    如何保存这些警告?



    我的 vpif_lcd_loopback.cmd 文件如下所示:

    40 内核{
    41. VLIB.a*<*。o*>(.text:优化)
    42} size (_kernel_size)> DDR2
    43.
    44. 内核数据{
    45. VLIB.a*<*。o*>(.bss)
    46. VLIB.a*<*。o*>(.const)
    47. VLIB.a*<*。o*>(.neardata)
    48 VLIB.a*<*。o*>(.rodata)
    49 VLIB.a*<*。o*>(.far)
    50 VLIB.a*<*。o*>(.fardata)
    51. VLIB.a*<*。o*>(.switch)
    52}size (_data_size)> DDR2

    正在等待您的回复。 谢谢!

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

    Alex、

    您看到的警告不是致命的、因为它们不会导致任何功能问题。 导致某些错误的原因是您是链接器命令文件中与 COFF 编译相对应的段、但编译器现在构建 ELF 二进制代码。

    processors.wiki.ti.com/.../C6000_EABI_Migration

    对于近数据、rodata 和 BSS、请尝试添加以下内容:

    GROUP (NEARL_DP_Relative)
    {
    .neardata
    rodata
    .bss
    }> DDR2 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    拉胡尔·拉巴胡先生:

    现在,在我的项目中,有关 canny 的内容无法正常工作。

    因此,我想根据 VLIB_Canny_Edge_Detection_d.c 文件进行尝试。

    但我找不到 gTIexasLogo 和 gTIexasLogoCannyRef 的定义,
    您能告诉我如何获得它们吗?

    静态 canny_testParams_t testParams[]=

    /*********
    testPattern、
    *输入、*重新输出、重新编号项目、
    宽度、高度
    (小部分 /

    静态、
    gTIexaslogo、gTIexasLogoCannyRef、307、
    64、64
    }、



    另一个问题是,

    如果我想使用 gTIexaslogo 来验证 canny、

    如下所示,

    /*测试优化的内核*/
    VLIB_PROFILE_START (VLIB_kernel_opt);
    VLIB_Canny_Edge_Detection (pInput、
    pBufGradX、
    pBufGradY、
    pBufMag、
    pBufOut、
    pScratch、
    项目数(&N)、
    PRM[TPI].width、
    PRM[TPI].height);

    “TPI”应该是1,对吧?
    pInput 应该是 gTIexaslogo,对吧?

    之后,您能给我提供 pBufOut 的正确内容吗?

    我想使用此方法逐步调试程序。

    可以帮帮我吗?

    正在等待您的回复。 谢谢!

    祝您好运!

    张斌,亚历克斯