在线时间0 小时
UID257886
注册时间2011-1-4
NXP金币0
该用户从未签到
新手上路

- 积分
- 30
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2013-12-6 16:01:50
|
显示全部楼层
回复:I.MX6Q 平台下mediaLB总线的ahb的DMA的中断号
回复第 12 楼 于2013-12-06 10:45:52发表:
Hello, 楼主,
首先,QNX的BSP,需要您和QNX公司保持联系并获取技术支持!我们FSL没有提供QNX BSP !
第二,针对您提出的问题,我仅能从FSL发行的Linux BSP source code中,及reference manual 为您寻找答案和解决的方法。回答如下:
(1)中断信号定义
在我们的mlb150 driver中,使用到3个不同的中断资源,定义在linux/arch/arm/plat-mxc/include/mach/mx-6.h中:
#define MXC_INT_MLB 85
#define MXC_INT_MLB_AHB0 149
#define MXC_INT_MLB_AHB1 158
(2)中断资源定义
定义在:linux/arch/arm/plat-mxc/devices/platform-mxc_mlb.c
#ifdef CONFIG_SOC_IMX6Q
struct platform_device *__init imx_add_mlb(
const struct mxc_mlb_platform_data *pdata)
{
struct resource res[] = {
{
.start = MLB_BASE_ADDR,
.end = MLB_BASE_ADDR + SZ_4K - 1,
.flags = IORESOURCE_MEM,
},
{
.start = MXC_INT_MLB,
.end = MXC_INT_MLB,
.flags = IORESOURCE_IRQ,
},
{
.start = MXC_INT_MLB_AHB0,
.end = MXC_INT_MLB_AHB0,
.flags = IORESOURCE_IRQ,
},
{
.start = MXC_INT_MLB_AHB1,
.end = MXC_INT_MLB_AHB1,
.flags = IORESOURCE_IRQ,
},
};
if (!fuse_dev_is_available(MXC_DEV_MLB))
return ERR_PTR(-ENODEV);
return imx_add_platform_device("mxc_mlb150", 0,
res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
}
#endif
(3)中断资源及信号调用(驱动程序)
驱动程序源码位置:linux/driver/mxc/mlb/mxc_mlb150.c
在驱动的probe函数中,调用了上诉中断资源:
static int __devinit mxc_mlb150_probe(struct platform_device *pdev)
{
..
}
请下载linux bsp源码,找到这个驱动程序,参考它往QNX系统上做移植.
Regards,
Weidong
感谢您的解答,QNX的问题我了解,现在还有个疑问,在MLB150的驱动中,
static irqreturn_t mlb_ahb_isr(int irq, void *dev_id)这样一个中断函数,最后调用两个函数,他们会分别唤醒read和write ,
我想问的问题是,这个中断进入之后只是一个channel出现DMA还是可能好几个channel都会出现,
在QNX下,一个ISR中发送多个通知被标记成Unsafe,所以如果每次只有一个Channel发生变化的话,我完全可以改成另外的结构。
|
|