realdada

realdada

1个粉丝

12

问答

0

专栏

0

资料

realdada  发布于  2019-12-23 18:04:43
采纳率 0%
12个问答
3283

Hi3516EV200中断问题

 
本人最近在搞hi3516ev200的设备驱动事情,在注册Timer3中断时,总是注册不上,不知为何,有大侠指导下吗?
按照海思文档,Timer3中断号应该是38,调用request_irq时,cat /proc/interrupt,总是显示逻辑中断号38,硬件中断号是36,不知为啥?
然后无法使用Timer3的中断了
我来回答
回答18个
时间排序
认可量排序

qn1535876279

0个粉丝

0

问答

0

专栏

0

资料

qn1535876279 2019-12-24 09:52:21
认可0
最左边那个号肯定是错的,你现在注册的应该是LSADC中断,,,

最简单的办法,你去内核源码看看其他中断是怎么注册的,对着手册加个offset就是你想要的中断了,

比如找找第三行"timer"中断或者uart-pl011是怎么注册的,你想要的中断夹在它俩中间,你就知道该怎么办了

没办法,海思的驱动写的随意,没有按照社区规范来,只能适应

realdada

1个粉丝

12

问答

0

专栏

0

资料

realdada 2019-12-24 14:03:45
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=151699&ptid=77146]qn1535876279 发表于 2019-12-24 09:52[/url]
最左边那个号肯定是错的,你现在注册的应该是LSADC中断,,,

最简单的办法,你去内核源码看看其他中断 ...[/quote]

你好,谢谢你的回复。按照你的思路,我去找了内核关于加载串口的驱动,在申请中断的时候,确实是传入逻辑中断号的
但是我在申请Timer3的中断时,也是按照这种思路传入逻辑中断号19,申请完后却是90

realdada

1个粉丝

12

问答

0

专栏

0

资料

realdada 2019-12-24 14:05:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=151699&ptid=77146]qn1535876279 发表于 2019-12-24 09:52[/url]
最左边那个号肯定是错的,你现在注册的应该是LSADC中断,,,

最简单的办法,你去内核源码看看其他中断 ...[/quote]

按照这种做法,应该有一个逻辑中断号跟硬件中断号的对应表,但是我找不到
尝试各个逻辑中断号了,从1-90,都不行

qn1535876279

0个粉丝

0

问答

0

专栏

0

资料

qn1535876279 2019-12-24 14:18:19
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=151711&ptid=77146]realdada 发表于 2019-12-24 14:05[/url]
按照这种做法,应该有一个逻辑中断号跟硬件中断号的对应表,但是我找不到
尝试各个逻辑中断号了,从1-90 ...[/quote]

晕,让你去看内核源码,你看这打印有啥用

qn1535876279

0个粉丝

0

问答

0

专栏

0

资料

qn1535876279 2019-12-24 14:22:18
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=151711&ptid=77146]realdada 发表于 2019-12-24 14:05[/url]
按照这种做法,应该有一个逻辑中断号跟硬件中断号的对应表,但是我找不到
尝试各个逻辑中断号了,从1-90 ...[/quote]

串口是arm的公版pl011驱动,对应中断号和中断域应该在dts里面定义,你找找

realdada

1个粉丝

12

问答

0

专栏

0

资料

realdada 2019-12-24 14:27:47
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=151718&ptid=77146]qn1535876279 发表于 2019-12-24 14:18[/url]
晕,让你去看内核源码,你看这打印有啥用[/quote]

要从哪里开始看起,不知从何入手啊

qn1535876279

0个粉丝

0

问答

0

专栏

0

资料

qn1535876279 2019-12-24 14:28:52
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=151722&ptid=77146]realdada 发表于 2019-12-24 14:27[/url]
要从哪里开始看起,不知从何入手啊[/quote]

在这里,把这个irq值打印出来看看是多少

realdada

1个粉丝

12

问答

0

专栏

0

资料

realdada 2019-12-24 14:50:12
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=151723&ptid=77146]qn1535876279 发表于 2019-12-24 14:28[/url]
在这里,把这个irq值打印出来看看是多少[/quote]

这个打印出来的是21

qn1535876279

0个粉丝

0

问答

0

专栏

0

资料

qn1535876279 2019-12-24 14:53:00
认可0
那你的request_irq填20就可以了

realdada

1个粉丝

12

问答

0

专栏

0

资料

realdada 2019-12-24 15:25:11
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=151733&ptid=77146]qn1535876279 发表于 2019-12-24 14:53[/url]
那你的request_irq填20就可以了[/quote]

不行,填20,对应的硬件中断号是70

qn1535876279

0个粉丝

0

问答

0

专栏

0

资料

qn1535876279 2019-12-24 16:05:44
认可0
你确定在pl011_startup里面打印uap->port.irq结果是21吗?

把启动日志和你修改的代码发来看看

realdada

1个粉丝

12

问答

0

专栏

0

资料

realdada 2019-12-24 16:30:11
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=151744&ptid=77146]qn1535876279 发表于 2019-12-24 16:05[/url]
你确定在pl011_startup里面打印uap->port.irq结果是21吗?

把启动日志和你修改的代码发来看看[/quote]

是的,可以看看图

qn1535876279

0个粉丝

0

问答

0

专栏

0

资料

qn1535876279 2020-01-03 17:16:31
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=151747&ptid=77146]realdada 发表于 2019-12-24 16:30[/url]
是的,可以看看图[/quote]

这跟我截图不一致哦,

我的本意是打印request_irq接口的第一个参数,
你这pl011_allocate_irq,可能还得再进去,或者其他地方,直到找到调用request_irq的地方

realdada

1个粉丝

12

问答

0

专栏

0

资料

realdada 2020-01-15 08:54:54
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=152127&ptid=77146]qn1535876279 发表于 2020-1-3 17:16[/url]
这跟我截图不一致哦,

我的本意是打印request_irq接口的第一个参数,
[/quote]

搞定了,要改内核

250596303

0个粉丝

1

问答

0

专栏

0

资料

250596303 2020-04-14 16:12:15
认可0
别人这么帮助你,你一句话搞定了,也不接帖。分享下别人。

realdada

1个粉丝

12

问答

0

专栏

0

资料

realdada 2020-04-16 19:28:47
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=156757&ptid=77146]250596303 发表于 2020-4-14 16:12[/url]
别人这么帮助你,你一句话搞定了,也不接帖。分享下别人。[/quote]

不好意思,不是经常上线
在哪结贴呢

realdada

1个粉丝

12

问答

0

专栏

0

资料

realdada 2020-04-17 14:51:45
认可0
参照SDK的 drv/interdrv 下的hi_adc、hi_ir例子,写一个测试驱动,当insmod驱动时,没有反应,经查资料,原来是probe函数没有被调用。probe函数被调用的前提是 of_device_id 结构体的compatible字符串在内核要有匹配的。

要如何匹配内核与驱动的compatible字符串。参照hi_ir和hi_adc例子,原来在内核的 arch/arm/boot/dts 下有一个对应芯片的 dtsi文件,该文件就是描述整个芯片的所有资源关系。
找到关于定时器描述的部分,如 hi3516ev200.dtsi :

dual_timer1: dual_timer@12001000 {
                                compatible = "arm,sp804", "arm,primecell";
                                /* timer2 & timer3 */
                                interrupts = <0 6 4>;
                                reg = <0x12001000 0x1000>;
                                clocks = <&clk_3m>, <&clk_3m>, <&clk_apb>;
                                clock-names = "timer10", "timer11", "apb_pclk";
                                status = "disabled";
                        };
status 状态是 disabled

再找到 hi3516ev200.dts 文件,添加dual_timer描述就可以了
&dual_timer1 {
        compatible = "hisilicon,timer3";
        status = "okay";
};

编译内核,再烧入板子就可以了

tango_zhu

14个粉丝

14

问答

0

专栏

3

资料

tango_zhu 2020-04-16 23:11:03
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=156853&ptid=77146]realdada 发表于 2020-4-16 19:28[/url]
不好意思,不是经常上线
在哪结贴呢[/quote]

人家的结贴是让你写出解决的过程
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区