完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 一只耳朵怪 于 2018-5-28 17:11 编辑
大家好: static void _omap_dispc_set_irqs(void) [ u32 mask; u32 old_mask; int i; struct omap_dispc_isr_data *isr_data; mask = dispc.irq_error_mask; for (i = 0; i < DISPC_MAX_NR_ISRS; i++) [ isr_data = &dispc.registered_isr; if (isr_data->isr == NULL) continue; mask |= isr_data->mask; ] enable_clocks(1); old_mask = dispc_read_reg(DISPC_IRQENABLE); /* clear the irqstatus for newly enabled irqs */ dispc_write_reg(DISPC_IRQSTATUS, (mask ^ old_mask) & mask); dispc_write_reg(DISPC_IRQENABLE, mask); enable_clocks(0); ] 这里我能理解为:设置中断相关寄存器,使能clock然后在关闭clock。但是问题是这个函数调用者omap_dispc_wait_for_irq_interruptible_timeout,是等待DISPC的中断,如果enable_clock(0)把dispc相关的clock给关闭了,dispc怎么还会再产生中断?那这个wait函数岂不是要timeout了? 谢谢 studying & working! |
|
相关推荐
3个回答
|
|
你好,
代码里面有函数_omap_dispc_register_isr,还有一个函数omap_dispc_register_isr,两者是不同的。omap_dispc_wait_for_irq_interruptible_timeout调用的是后者吧。 |
|
|
|
物是人非aaa 发表于 2018-5-28 09:29 你好 chris: 谢谢你的回复。 首先代码中确实是只有omap_dispc_register_isr函数,我提问的那个函数是笔误,可能复制黏贴的时候出错了。 另外,我呢只要要是想看看isr这个函数真的是响应了硬件的中断处理还是timeout返回。 我自己在用户层调用过WAIT_FOR_VSYNC发现注册上的中断类型得到了响应而没有timeout,我就很好奇。应为在dispc的代码的同时我发现了很多设置函数最后都是以enable_clocks(0) 来完成函数。那么这样以来我发现clock都没有的情况下,硬件怎么完成诸如 FRAME_DONE VSYNC VFP等由硬件产生的中断? ti的datasheet里面介绍了: EN_DSS1 Display Sub-System functional clock 1 control RW 0x0 0x0: DSS1_ALWON_FCLK is disabled 0x1: DSS1_ALWON_FCLK is enabled 这个DSS1 clock同时还支持着pixel clock。如果连pix clk都没有了怎么有dispc完成硬件上的动作。 调试过程: (1)我在static inline void enable_clocks(bool enable)这个函数中加了打印printk(“enabled or not %d n”,enable);发现内核启动后最后的打印为 0,disabled的状态。随后运行了psp提供的video-demo :saFbdevDisplay可以正常运行。 (2)我吧enable_clocks函数中的代码注释掉,重新编译,再次运行video-demo :saFbdevDisplay可以正常运行。 我的个人理解不知道对不对: fclock所谓的disable可能就是组织了clock的发生,但是dispc内部的pll已近在稳定工作了。不受输入的时钟源的影响,除非你改变power的状态,或者分频系数重新写入等操作。 不知道我的理解正确吗? 不知道我的理解正确吗? studying & working! |
|
|
|
物是人非aaa 发表于 2018-5-28 09:29 你好 chris: 谢谢你的回复。 首先代码中确实是只有omap_dispc_register_isr函数,我提问的那个函数是笔误,可能复制黏贴的时候出错了。 另外,我呢只要要是想看看isr这个函数真的是响应了硬件的中断处理还是timeout返回。 我自己在用户层调用过WAIT_FOR_VSYNC发现注册上的中断类型得到了响应而没有timeout,我就很好奇。应为在dispc的代码的同时我发现了很多设置函数最后都是以enable_clocks(0) 来完成函数。那么这样以来我发现clock都没有的情况下,硬件怎么完成诸如 FRAME_DONE VSYNC VFP等由硬件产生的中断? ti的datasheet里面介绍了: EN_DSS1 Display Sub-System functional clock 1 control RW 0x0 0x0: DSS1_ALWON_FCLK is disabled 0x1: DSS1_ALWON_FCLK is enabled 这个DSS1 clock同时还支持着pixel clock。如果连pix clk都没有了怎么有dispc完成硬件上的动作。 调试过程: (1)我在static inline void enable_clocks(bool enable)这个函数中加了打印printk(“enabled or not %d n”,enable);发现内核启动后最后的打印为 0,disabled的状态。随后运行了psp提供的video-demo :saFbdevDisplay可以正常运行。 (2)我吧enable_clocks函数中的代码注释掉,重新编译,再次运行video-demo :saFbdevDisplay可以正常运行。 我的个人理解不知道对不对: fclock所谓的disable可能就是组织了clock的发生,但是dispc内部的pll已近在稳定工作了。不受输入的时钟源的影响,除非你改变power的状态,或者分频系数重新写入等操作。 不知道我的理解正确吗? 不知道我的理解正确吗? studying & working! |
|
|
|
只有小组成员才能发言,加入小组>>
348 浏览 1 评论
543 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
787 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
658 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1140 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
76浏览 29评论
257浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
261浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
209浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
67浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 20:17 , Processed in 0.955586 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号