解决问题:ASSERT in Wincore.cpp ,line 884

本文介绍了一个DLL项目中出现的断言错误,并分析了其原因可能是由于多线程导致。提出了通过使用Windows的消息传递机制来解决该问题的方法。

Project A.dll有如下相关结构与接口:(伪VC代码)

Class CChildView : public;

Class CMainFrame {…     CChildView m_wndView; …};

CMainFrame::ShowDialingPad()

{

         CMyDialog * pDlg=new CMyDialog();

pDlg->Create(IDD_MYDIALOG,&m_wndView);//pointA

}

Global function:

Void ShowPadDialing()  {… (CMainFrame*)GetMainWindow()->ShowDialingPad ….}//pointB

 

另一个Project B.dll调用了全局函数ShowPadDialing(),从而由point B进入到pointA引发断言错误ASSERT in Wincore.cpp ,line 884

 

判断:根据网页http://www.tek-tips.com/viewthread.cfm?qid=370203 判断,此处也是多线程引发的问题。考虑用WindowsSendMessage/PostMessage机制解决。

故作如下修改:

1、自定义windows消息#define  WM_NEWMYDIALOG WM_USER+111

2、废弃CMainFrame::ShowDialingPad()的内容,该做m_wndView.PostMessage(WM_NEWMYDIALOG,WPARAM,LPARAM)//考虑多线程,不应该等待故用PostMessage

3、在CChildView:: LRESULT CChildView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)中对自定义消息NEWMYDIALOG进行处理,完成原先CMainFrame::ShowDialingPad()的相关动作。

 
[00:00:15.869916][XCORE]:XCAM ERROR RkAiqCalibTag.cpp:7044: calib_check_tag_attrs(7044): parent_tag_id:439 parent_tag_name:zoomfocus_tbl tag_id:1201 tag_name:unknown --- ASSERT!!! [00:00:15.871315][XCORE]:XCAM ERROR RkAiqCalibTag.cpp:7188: calib_check_tag_mark(7188): parent_tag_id:439 tag_id:1201 --- tag_id is wrong: min:0 max:1201 [00:00:15.872488][XCORE]:XCAM ERROR RkAiqCalibTag.cpp:6920: calib_check_getID_by_name(6920): subtag: focusMacroPosition from parent tag: zoomfocus_tbl is unknown, assert!!! [00:00:15.873813][XCORE]:XCAM ERROR RkAiqCalibTag.cpp:6998: calib_check_tag_attrs(6998): parent_tag_id:439 tag_id:1201 --- tag id is is wrong: min:0 max:1201 [00:00:15.875015][XCORE]:XCAM ERROR RkAiqCalibTag.cpp:7044: calib_check_tag_attrs(7044): parent_tag_id:439 parent_tag_name:zoomfocus_tbl tag_id:1201 tag_name:unknown --- ASSERT!!! [00:00:15.876399][XCORE]:XCAM ERROR RkAiqCalibTag.cpp:7188: calib_check_tag_mark(7188): parent_tag_id:439 tag_id:1201 --- tag_id is wrong: min:0 max:1201 [00:00:16.199365][XCORE]:XCAM ERROR v4l2_device.cpp:196: open device() failed [ 16.201817] clk_mipicsi_out2io_fracdiv p_rate(297000000) is low than rate(24000000)*20, use integer or half-div [00:00:16.218362][CAMHW]:XCAM ERROR LensHw.cpp:199: get vcm cfg failed [00:00:16.279138][XCORE]:XCAM ERROR CamHwIsp20.cpp:3751: |||set DC-Iris PwmDuty: 100 [00:00:16.279434][CAMHW]:XCAM ERROR LensHw.cpp:411: iris is not supported [00:00:16.309151][CAMHW]:XCAM ERROR LensHw.cpp:296: focus is not supported
最新发布
08-01
你遇到的这些日志信息是来自 Rockchip ISP(图像信号处理器)模块的 **XCAM** 子系统,属于 **RKAiq(Rockchip ISP 算法库)** 的错误输出。这些错误信息表明你的系统在初始化摄像头或调用 ISP 配置文件时出现了 **配置文件解析失败** 或 **硬件支持缺失** 的问题。 --- ## ❓问题分析: ### 🔴 1. **ISP 配置文件解析错误(calib_check_tag_attrs)** ```log [XCAM ERROR RkAiqCalibTag.cpp:7044] calib_check_tag_attrs: parent_tag_id:439 tag_id:1201 tag_name:unknown --- ASSERT!!! ``` - 这些错误来自 `RkAiqCalibTag.cpp`,说明 **AIQ 算法库在解析 `.xml` 配置文件时遇到了无法识别的标签(tag)**。 - 通常是因为: - 使用了错误版本的 IQ(Image Quality)配置文件。 - 配置文件中包含了当前 AIQ 版本不支持的字段。 - 配置文件损坏或路径错误。 ✅ **解决方案**: - 检查 `pIqfilesPath` 是否正确指向了有效的 IQ 文件目录。 - 确保使用的 IQ 文件适用于你的 sensor 型号和 ISP 版本。 - 使用官方提供的 IQ 工具检查 `.xml` 文件的完整性。 --- ### 🔴 2. **V4L2 设备打开失败** ```log [XCAM ERROR v4l2_device.cpp:196] open device() failed ``` - 表示系统无法打开 `/dev/videoX` 设备节点。 - 可能原因: - 摄像头未正确连接。 - 驱动未加载或设备树配置错误。 - `/dev/videoX` 权限不足。 ✅ **解决方案**: - 使用 `ls /dev/video*` 检查是否有摄像头设备。 - 使用 `dmesg | grep -i video` 检查内核日志中摄像头驱动是否加载成功。 - 尝试用 `sudo` 或修改 `/dev/videoX` 的权限: ```bash sudo chmod 666 /dev/video0 ``` --- ### 🔴 3. **VCM(镜头马达)、IRIS(光圈)、FOCUS(对焦)不支持** ```log [CAMHW]:XCAM ERROR LensHw.cpp:199: get vcm cfg failed [CAMHW]:XCAM ERROR LensHw.cpp:411: iris is not supported [CAMHW]:XCAM ERROR LensHw.cpp:296: focus is not supported ``` - 表示你使用的摄像头模组不支持 VCM(自动对焦)、IRIS(光圈控制)等功能。 - 如果你的摄像头是固定焦距或没有这些硬件功能,这些错误可以忽略。 - 如果你期望使用这些功能,请检查: - 摄像头是否支持自动对焦。 - 驱动中是否启用了 VCM 支持。 - 设备树中是否配置了 VCM 引脚。 ✅ **解决方案**: - 如果不需要这些功能,可忽略。 - 如果需要,确认摄像头型号和驱动是否支持。 --- ## ✅ 总结修复建议 | 错误类型 | 原因 | 解决方案 | |----------|------|----------| | `calib_check_tag_attrs` | IQ 文件错误或版本不兼容 | 检查 IQ 文件路径、格式、版本 | | `open device() failed` | 摄像头设备未打开 | 检查设备节点、权限、驱动 | | `iris/focus/vcm not supported` | 硬件不支持 | 检查摄像头功能或忽略 | --- ## ✅ 附加建议 - 使用 `dmesg` 查看完整的内核日志,确认摄像头是否正常注册。 - 使用 `v4l2-ctl --list-devices` 查看摄像头设备信息。 - 使用 `media-ctl` 检查摄像头 pipeline 是否建立成功。 --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值