请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320C6748 工具/软件:Code Composer Studio
现在,对于我的项目,按项目->构建项目,
我可以传递它,并获取 vpif_lcd_loopback.out 文件。
消息显示如下:
-lutils.lib -lplatform.lib -lsystem_config.lib "../common.lib"
"../vpif_lcd_loopback.cmd"
'完成的构建目标:vpif_lcd_loopback.out'
'
然后我通过 Run -> Connect Target、Run -> Load 来运行它,以加载.out 文件
目标,然后在调试模式下运行它。
我发现,我可以运行
if (VLIB_cache_init ())
行,也是
canny_getTestParams (&prm、&test_cases);
行,但我无法运行
VLIB_PROFILE_INIT (2、"VLIB_Canny_Edge_Detection);
行。 因此我将其删除,
// VLIB_PROFILE_INIT (2、"VLIB_Canny_Edge_Detection);
然后继续,我仍然不能跑过去
VLIB_PROFILE_START (VLIB_kernel_opt);
行。
为什么?
我现在该怎么做?
我的源代码如下所示:
uint8_t pInput[4096];
int16_t pBufGradX[4096];// =(int16_t *) VLIB_malloc (buffersize *
sizeof (int16_t));
int16_t pBufGradY[4096];// =(int16_t *) VLIB_malloc (buffersize *
sizeof (int16_t));
int16_t pBufMag[4096];// =(int16_t *) VLIB_malloc (buffersize *
sizeof (int16_t));
uint8_t pScratch[4096];// =(uint8_t *) VLIB_malloc (buffersize *
sizeof (uint8_t));
uint8_t pBufOut[4096];// =(uint8_t *) VLIB_malloc (buffersize *
sizeof (uint8_t));
uint8_t pBufOut_CN[4096];// =(uint8_t *) malloc (buffersize * sizeof
(uint8_t));
//
//
//
//
。
。
。
。
if (VLIB_cache_init ())
{
VLIB_memError ("VLIB_Canny_Edge_Detection");
}
其他
{
;
test_cases = 1;
canny_getTestParams (&prm、&test_cases);
//初始化性能评测
// VLIB_PROFILE_INIT (2、"VLIB_Canny_Edge_Detection);
//运行每个测试用例
// for (TPI=0;TPI < test_cases;TPI++)
TPI = 0;
// {
//初始化状态标志
// int32_t status_NAT_VS_int = VLIB_kernel_pass;//测试状态
:自然 c 与优化
// int32_t STATUS_NAT_VS_ref = VLIB_kernel_pass;//测试状态
:自然 c 与静态基准
STATUS_NAT_VS_INT = VLIB_kernel_pass;
//测试状态:Natural c 与 Optimized
STATUS_NAT_VS_ref = VLIB_kernel_pass;
//测试状态:Natural c 与静态基准
//计算缓冲区大小
// uint32_t buffersize = prm[TPI].width * prm[TPI].height;
buffersize = 64 * 64;//prm[TPI].width * prm[TPI].height;
//为每个测试向量分配缓冲区
// uint8_t * pInput =(uint8_t *) VLIB_malloc (buffersize *
sizeof (uint8_t));
// pInput =(uint8_t *) VLIB_malloc (buffersize * sizeof
(uint8_t));
// * pBufGradX =(Int16_t *) VLIB_malloc (buffersize * sizeof
(int16_t));
// * pBufGradY =(int16_t *) VLIB_malloc (buffersize * sizeof
(int16_t));
// *pBufMag =(Int16_t *) VLIB_malloc (buffersize * sizeof
(int16_t));
// * pScratch =(uint8_t *) VLIB_malloc (buffersize * sizeof
(uint8_t));
// *pBufOut =(uint8_t *) VLIB_malloc (buffersize * sizeof
(uint8_t));
// *pBufOut_CN =(uint8_t *) malloc (buffersize * sizeof (uint8_t));
// pBufGradX =(int16_t *) VLIB_malloc (buffersize * sizeof
(int16_t));
// pBufGrady =(int16_t *) VLIB_malloc (buffersize * sizeof
(int16_t));
// pBufMag =(int16_t *) VLIB_malloc (buffersize * sizeof
(int16_t));
// pScratch =(uint8_t *) VLIB_malloc (buffersize * sizeof
(uint8_t));
// pBufOut =(uint8_t *) VLIB_malloc (buffersize * sizeof
(uint8_t));
// pBufOut_CN =(uint8_t *) malloc (buffersize * sizeof (uint8_t));
//仅在缓冲区分配适合堆时运行测试
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));
对于(i1=0;i1<4096;i1++)
{
pBufGradX[i]= 0;
pBufGradY[i]= 0;
pBufMag[i]= 0;
pBufOut[i]= 0;
pScratch[i]= 0;
}
对于(i1=0;i1<4096;i1++)
{
pInput[i]= gTIexasLogo[i];
}
//测试优化的内核
VLIB_PROFILE_START (VLIB_kernel_opt);
PRM[TPI].width = 64;
PRM[TPI].height = 64;
VLIB_Canny_Edge_Detection (pInput、
pBufGradX、
pBufGradY、
pBufMag、
pBufOut、
pScratch、
项目数(&N)、
PRM[TPI].width、
PRM[TPI].height);
VLIB_PROFILE_STOP();
}
////////////////////////////////////////////////////////////////////////////////////////////////////
等待您的建议。 谢谢!