• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 6410中斷問題 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 50626
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2011-06-24
最后登录: 2017-09-13
楼主  发表于: 2011-06-24 11:24

 6410中斷問題

我在6410上加裝了一個光感應器,需要用到中斷處理,
目前我已經將中斷腳接到6410的EINT9上,
也知道要修改mach-mini6410.c,
但是不知道EINT9在程式中的代號為何,請各位高手指教!

mach-mini6410.c中的程式片段:

static struct i2c_board_info i2c_devs0[] __initdata = {
    { I2C_BOARD_INFO("ov965x", 0x60), },
    { I2C_BOARD_INFO("light", 0x38),
      .irq = IRQ_EINT9 },
};
按照上面的填會顯示名稱出錯,未定義的符號(我是在網路上查找2410的寫法,模仿它的)。
级别: 侠客
UID: 48220
精华: 0
发帖: 76
金钱: 380 两
威望: 76 点
综合积分: 152 分
注册时间: 2011-05-29
最后登录: 2013-08-20
1楼  发表于: 2011-06-24 16:31
IRQ_EINT(9)
级别: 新手上路
UID: 50626
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2011-06-24
最后登录: 2017-09-13
2楼  发表于: 2011-06-24 16:57
將 IRQ_ENT9 改成 IRQ_EINT(9)後,
insmod時出現錯誤訊息如下:

/udisk # insmod light.ko
No such irq type 10
setting trigger mode 10 for irq 110 failed (s3c_irq_eint_set_type+0x0/0xfc)
light 0-0038: ret: -1, could not get IRQ 110
light: probe of 0-0038 failed with error -1
级别: 侠客
UID: 48220
精华: 0
发帖: 76
金钱: 380 两
威望: 76 点
综合积分: 152 分
注册时间: 2011-05-29
最后登录: 2013-08-20
3楼  发表于: 2011-06-24 18:38
应该用GPIO得到中断号,然后申请中断,因为它是复用的,系统里有管理机制。
我接电容触摸屏的用法是这样的:

#define TOUCH_INT_PIN        S3C64XX_GPL(10)
irq = gpio_to_irq(TOUCH_INT_PIN);
if(irq<0){
    PRINT("Can't get irq number from GPIO.\n");
    error=-ENODEV;
    goto err2;
}
error = gpio_request(TOUCH_INT_PIN,"TOUCH INT");
if(error<0)
{
    PRINT("GPIO request fail.\n");
    error=-ENODEV;
    goto err2;
}
s3c_gpio_setpull(TOUCH_INT_PIN,S3C_GPIO_PULL_UP);
gpio_direction_input(TOUCH_INT_PIN);
error = request_irq(irq, ...);
级别: 新手上路
UID: 50626
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2011-06-24
最后登录: 2017-09-13
4楼  发表于: 2011-06-25 14:08
請問 S3C64XX_GPL(10) 指的是哪個pin?
又這些資料可以在何處查詢? 感謝回答~
级别: 侠客
UID: 48220
精华: 0
发帖: 76
金钱: 380 两
威望: 76 点
综合积分: 152 分
注册时间: 2011-05-29
最后登录: 2013-08-20
5楼  发表于: 2011-06-25 22:47
看数据手册啊,EINT9应该是S3C64XX_GPN(9)
级别: 新手上路
UID: 50626
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2011-06-24
最后登录: 2017-09-13
6楼  发表于: 2011-06-27 09:54
 因為剛好沒有s3c6410的數據手冊
但我有在 arch/arm/mach-s3c6400/include/mach/gpio.h 中找到相關設定。
EINT9看原理圖的確是GPN9無誤,想請問你的觸控面板驅動在kernel有修改設定嗎?我目前修改如下:
(在linux/arch/arm/mach-s3c64xx/mach-mini6410.c中)
static struct i2c_board_info i2c_devs0[] __initdata = {
{ I2C_BOARD_INFO("ov965x", 0x60), },
{ I2C_BOARD_INFO("light", 0x38),
   .irq = S3C64XX_GPN(9) },}
级别: 新手上路
UID: 50626
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2011-06-24
最后登录: 2017-09-13
7楼  发表于: 2011-06-27 11:23
加了ulookme版友的申請中斷碼後再試,還是失敗了。

回應如下:

/udisk # insmod light.ko
No such irq type 10
setting trigger mode 10 for irq 110 failed (s3c_irq_eint_set_type+0x0/0xfc)
light: probe of 0-0038 failed with error -1
级别: 侠客
UID: 48220
精华: 0
发帖: 76
金钱: 380 两
威望: 76 点
综合积分: 152 分
注册时间: 2011-05-29
最后登录: 2013-08-20
8楼  发表于: 2011-06-27 14:30
引用第6楼deathwd于2011-06-27 09:54发表的  :
 因為剛好沒有s3c6410的數據手冊
但我有在 arch/arm/mach-s3c6400/include/mach/gpio.h 中找到相關設定。
EINT9看原理圖的確是GPN9無誤,想請問你的觸控面板驅動在kernel有修改設定嗎?我目前修改如下:
(在linux/arch/arm/mach-s3c64xx/mach-mini6410.c中)
static struct i2c_board_info i2c_devs0[] __initdata = {
.......

当然要设置的。
级别: 侠客
UID: 48220
精华: 0
发帖: 76
金钱: 380 两
威望: 76 点
综合积分: 152 分
注册时间: 2011-05-29
最后登录: 2013-08-20
9楼  发表于: 2011-06-27 14:33
引用第7楼deathwd于2011-06-27 11:23发表的  :
加了ulookme版友的申請中斷碼後再試,還是失敗了。

回應如下:

/udisk # insmod light.ko
.......


IRQ type 10?你用什么参数申请中断的?

interrupt.h里的type定义:

#define IRQF_TRIGGER_RISING     0x00000001
#define IRQF_TRIGGER_FALLING    0x00000002
#define IRQF_TRIGGER_HIGH       0x00000004
#define IRQF_TRIGGER_LOW        0x00000008
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go