器件型号:TDA2EG
你(们)好
我正在处理 CSI2用例、并尝试从捕获中转储帧、以将其保存为 SD 卡中的图像文件。
用于在链路为 iss 捕获时转储帧。
那么、我想问、是否有一些有关如何使用这些帧转储命令的文档或示例?
谢谢
Xuanbo
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.
器件型号:TDA2EG
你(们)好
我正在处理 CSI2用例、并尝试从捕获中转储帧、以将其保存为 SD 卡中的图像文件。
用于在链路为 iss 捕获时转储帧。
那么、我想问、是否有一些有关如何使用这些帧转储命令的文档或示例?
谢谢
Xuanbo
您好、Brijesh
我认为我已经找到问题的原因、它可能是 Vision SDK 的错误:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~μ A
vision_sdk\links_fw\src\rtos\links_IPU\iss_capture\issCaptureLink_drv.c:
Int32 IssCaptureLink_drvSaveFrame (IssCaptureLink_Obj *对象、UINT32 *通道)
{
int32 status = system_link_status_EFAIL;
if (pObj->createArgs.allocBufferForRawDump!= 0U)
{
pObj->saveFrame = true;
pObj->saveChId =*Chid;
status = system_link_status_sok;
}
返回(状态);
}
Int32 IssCaptureLink_drvGetSaveFrameStatus (const IssCaptureLink_Obj * pObj、
IssCaptureLink_GetSaveFrameStatus *pPrm)
{
int32 status = system_link_status_EFAIL;
pPrm->isSaveFrameComplete = false;
pPrm->bufAddr = 0;
pPrm->bufSize = 0;
if (pObj->createArgs.allocBufferForRawDump!= 0U)
{
if (pObj->saveFrame == false)
{
pPrm->isSaveFrameComplete = true;
/* MISRA.CAST.PTR_TO_INT
* MISRAC_2004规则11.3
*在指针和整型之间进行转换
* KW 州:推迟->弃权->按案例分类
* MISRAC_弃权 声明:指针地址以的形式存储
* uint32。 在将指针地址分配给该地址后、将对其进行检查
*它仅包含堆的有效地址。
*
pPrm->bufAddr =(uint32) pObj->saveFrameBufAddr;
pPrm->bufSize = pObj->drvCalCfg.inFmt[0].pitch[0]*
pObj->createArgs.outParams[0U].height;
}
status = system_link_status_sok;
}
返回(状态);
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~μ A
我们可以看到 IssCaptureLink_drvSaveFrame 的作用是将 pObj->saveFrame 从 false 设置为 true,然后可以在 IssCaptureLink_drvGetSaveFrameStatus()中完成真正的缓冲区抑制工作。 因此, 在 IssCaptureLink_drvGetSaveFrameStatus 中,我认为我们应该使用“if (pObj->saveFrame == true)”,而不是“if (pObj->saveFrame == false)”。 在我更改此内容后、我可以在 SD 卡中获取原始文件:
[IPU1-0] 189.633868 s:存在文件名 raw0004.RAW 4。。。。 跳过
[IPU1-0] 189.636308 s:文件:写入文件[raw0005.raW](1843200字节)...
[IPU1-0] 205.361770 s:文件:文件写入完成。 [1843200字节]
[IPU1-0] 205.366497 s:将图像 raw0005.txt 写入文件
[IPU1-0] 205.366589 s:文件:写入文件[raw0005.txt](24字节)...
[IPU1-0] 205.491947 s:文件:文件写入完成。 [24字节]
谢谢
Xuanbo
你好, brijesh
感谢您的讲解。
我已经检查了寄存器 0x4845 B350的值、它始终为0。 那么捕获不起作用? 但是为什么会有"ISSCAPTURE: start done!!!"日志?
由于 TDA2Ex 和 UB964以及 UB913和4个摄像头之间的 I2C 通信正常、为什么捕捉会失败? 可能的原因是什么?
您提到我应该在捕获链接中放置断点、我该如何操作? 您能否详细解释一下如何调试此捕获故障?
谢谢
Xuanbo
您好 、Brijesh
我想我已经解决了垃圾问题!
感谢您对寄存器 0x4845 B304值的建议、然后我注意到 CSI2极性集。
usecase 的默认设置全为 false、但我的定制板为:
(TDA2EX) CSI2_0_DX1 <-> CSI0_D0N (__LW_AT__UB964)
(TDA2EX) CSI2_0_DY1 <-> CSI0_D0P (__LW_AT__UB964)
这意味着我应该将 CSI2极性设置为 true。
在我更改 极性后、转储命令现在可以工作! 可以在 SD 卡!上找到原始文件
感谢您的建议。
我仍然对用于打开原始文件的软件工具有另一个问题。 我已经下载了 YUVPlayer 来打开它、结果如下所示:
正如您看到的、这不是我们想要的图像。 我认为转储帧不错、但我的观看者不正确。 那么、我应该使用什么原始文件查看器?
谢谢
Xuanbo