5553|14

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

2440 camera 问题????--献上所有分 [复制链接]

刚接触CE1个月 马上要在公司自己开发的主板上移植7645BF驱动了 还有些有关camera驱动问题还不是很清楚 希望高人解答!!!

比如 2440上 camera分配的是irq6 该irq可能由INTSUB_CAM_P、INTSUB_CAM_C或INT_CAM 被置一而引起,有的资料上说中断由VSYNC垂直同步信号引起 这个由VSYNC触发的中断到底是 INTSUB_CAM_P、INTSUB_CAM_C还是INT_CAM啊? ??如果触发的是INT_CAM 那INTSUB_CAM_P、INTSUB_CAM_C又是怎么被触发的?是由APP发命令触发吗?

最新回复

这样说比较合理 但“所有的中断源都是硬件控制器触发”也不是吧 我看到有的datasheet上也明确指明了一些中断源reg可以软件置位啊 如 以下摘录的一datasheet 5.7.2.2.1 IRQ 软件设置中断 ARM1 中断控制器(ICTL1)支持通过软件来设置中断。IRQ 中断软件设置寄存器 (ICTL1_IRQ_INTFORCE)的控制比特与IRQ 请求信号一一对应,可以通过设置IRQ 中断 软件设置寄存器(ICTL1_IRQ_INTFORCE)的相应比特来触发IRQ 中断;并通过对IRQ 中 断软件设置寄存器(ICTL1_IRQ_INTFORCE)的相应比特清零来清除IRQ 中断请求。  详情 回复 发表于 2009-4-13 18:26
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

程序中首先使能INT_CAM再使能INTSUB_CAM_P或INTSUB_CAM_C中断,开始采集图像(使能C或P通道),采集完一帧时会触发中断INT_CAM ,进入中断处理,在中断处理函数中检测SUBSRCPND来判断是INTSUB_CAM_P还是INTSUB_CAM_C(也就是判断哪个通道发出的中断)



**************************
飞凌嵌入式 www.witech.com.cn   
**************************
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
INTSUB_CAM_P或INTSUB_CAM_C中断 是由什么触发呢? 如果是软件触发 要实现持续显示 那么APP就要不断触发INTSUB_CAM_P??因为在IST中每次都进行了清中断操作  是不是这样啊
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 xiaopi224 的回复:

程序中首先使能INT_CAM再使能INTSUB_CAM_P或INTSUB_CAM_C中断,开始采集图像(使能C或P通道),采集完一帧时会触发中断INT_CAM ,进入中断处理,在中断处理函数中检测SUBSRCPND来判断是INTSUB_CAM_P还是INTSUB_CAM_C(也就是判断哪个通道发出的中断)


**************************
飞凌嵌入式 www.witech.com.cn
**************************

采完一帧是要触发ITN_CAM 但是直接触发的INT_CAM还是触发INTSUB_CAM_P或INTSUB_CAM_C而间接触发INT_CAM的
 
 
 

回复

96

帖子

0

TA的资源

一粒金砂(初级)

6
 
再请教xiaopi224一个问题
在下面代码中发现产生INTSRC_CAM中断后若BIT_SUB_CAM_P和BIT_SUB_CAM_C都没触发 那就执行 “//有疑问的代码”标记的代码 即屏蔽掉了Camera所有中断并返回了SYSINTR_NOP 这样 相应的IST得不到执行也就不会调用InterruptDone来打开屏蔽的中断那 以后不是都不会产生INTSRC_CAM中断了??????????
        else if(IntPendVal == INTSRC_CAM)
        {
//                RETAILMSG(1,(TEXT("INT:SYSINTR_CAM INT:0x%x,0x%x\r\n"),s2440INT->rSRCPND,s2440INT->rSUBSRCPND));
               
                if( s2440INT->rSUBSRCPND & (0x1<<11) )
                {
                        s2440INT->rINTSUBMSK |= (0x1<<11);
                        s2440INT->rINTMSK |= BIT_CAM;
                        s2440INT->rSUBSRCPND = (0x1<<11);
                        s2440INT->rSRCPND = BIT_CAM;
                       
                        if (s2440INT->rINTPND & BIT_CAM) s2440INT->rINTPND = BIT_CAM;
                        return SYSINTR_CAM;
                }
                else if (s2440INT->rSUBSRCPND & BIT_SUB_CAM_P)
                {
                        s2440INT->rINTSUBMSK |= (0x2<<11);
                        s2440INT->rINTMSK |= BIT_CAM;
                        s2440INT->rSUBSRCPND = (0x2<<11);
                        s2440INT->rSRCPND = BIT_CAM;
               
                        if (s2440INT->rINTPND & BIT_CAM) s2440INT->rINTPND = BIT_CAM;

                        return SYSINTR_CAM;
                }
//有疑问的代码               
                s2440INT->rINTSUBMSK |= (BIT_SUB_CAM_C | BIT_SUB_CAM_P);
                s2440INT->rINTMSK |= BIT_CAM;
                s2440INT->rSUBSRCPND = (BIT_SUB_CAM_C | BIT_SUB_CAM_P);
                s2440INT->rSRCPND = BIT_CAM;

                if (s2440INT->rINTPND & BIT_CAM)
                {
                        s2440INT->rINTPND = BIT_CAM;
                }

                return SYSINTR_NOP;
//有疑问的代码
        }

 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

7
 
BIT_SUB_CAM_C 和BIT_SUB_CAM_P都没有的话也就不会产生INT_CAM中断了吧,所以屏蔽掉也没关系啦

你看看驱动里面使能中断的时候都是先使能INT_CAM 吧
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 
基于上面问题再请教xiaopi224一个问题 BIT_SUB_CAM_P和BIT_SUB_CAM_C 若同时被触发则上面代码不能处理BIT_SUB_CAM_C 因为判断有BIT_SUB_CAM_P中断后就直接返回了 这样对吗 ????
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 6 楼 xiaopi224 的回复:
BIT_SUB_CAM_C 和BIT_SUB_CAM_P都没有的话也就不会产生INT_CAM中断了吧,所以屏蔽掉也没关系啦

你看看驱动里面使能中断的时候都是先使能INT_CAM 吧
INT_CAM 好像是由VSYNC触发的 就算BIT_SUB_CAM_C 和BIT_SUB_CAM_P没触发 在VSYNC下降沿INT_CAM都会被触发吧 你说的有点矛盾哦.
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
哦 上面说的有误,我的理解是这样的,产生中断就是为了要处理数据,也就是C或P采集完一帧后产生中断告诉你这帧采集完成可以进行处理了。如果不使能BIT_SUB_CAM_C 和BIT_SUB_CAM_P也就没办法判断是哪个通道采集完了,所以……
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 
所以我才 想问BIT_SUB_CAM_C 和BIT_SUB_CAM_P到底是由什么触发的 难道是 VSYNC 下降沿触发BIT_SUB_CAM_P进而触发INT_CAM 如果VSYNC 触发的是int_cam 则会因忘了触发BIT_SUB_CAM_C 和BIT_SUB_CAM_P而引发上面的问题
 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(初级)

12
 
BIT_SUB_CAM_C , BIT_SUB_CAM_P都是CAM的中断。
首先C/P只是摄像码流的差别:C-port表示YCbCr模式,P-port表示RGB模式。
不管哪种一旦有中断,都会在触发自身标志位中断的同时,也触发INT_CAM。
而INT_CAM被触发的原因不仅仅C/P这两种。

这些中断,都是硬件控制器触发的,然后由软件进行判断及相应的处理。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 11 楼 shuiyan 的回复:


这些中断,都是硬件控制器触发的,然后由软件进行判断及相应的处理。

datasheet 上没说BIT_SUB_CAM_C , BIT_SUB_CAM_P是硬件触发啊 资料上 SUBSRCPND 这个包含BIT_SUB_CAM_C , BIT_SUB_CAM_P位的REG是R/W 属性的啊 也就是可以软件配置的啊!
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

14
 
不用资料说,必须知道:所有的中断源都是硬件控制器触发,软件只是处理中断。可以配置,只是提供这个接口,当需要的时候去触发。一般极少用到的。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 13 楼 shuiyan 的回复:
不用资料说,必须知道:所有的中断源都是硬件控制器触发,软件只是处理中断。可以配置,只是提供这个接口,当需要的时候去触发。一般极少用到的。
这样说比较合理 但“所有的中断源都是硬件控制器触发”也不是吧 我看到有的datasheet上也明确指明了一些中断源reg可以软件置位啊 如 以下摘录的一datasheet


5.7.2.2.1 IRQ 软件设置中断
ARM1 中断控制器(ICTL1)支持通过软件来设置中断。IRQ 中断软件设置寄存器
(ICTL1_IRQ_INTFORCE)的控制比特与IRQ 请求信号一一对应,可以通过设置IRQ 中断
软件设置寄存器(ICTL1_IRQ_INTFORCE)的相应比特来触发IRQ 中断;并通过对IRQ 中
断软件设置寄存器(ICTL1_IRQ_INTFORCE)的相应比特清零来清除IRQ 中断请求。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表