0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你咋知道怎么在IP的kernel module里设置并使用IP interrupt吗

电子工程师 来源:XILINX 产品应用 作者:Davis Zhang 2021-05-18 11:48 次阅读

有时我们需要为官方 IP 或者自己创建的 IP 生成 kernel module,然后在 linux kernel space 里使用 kernel module 来控制这个 IP。如果要使用 IP 中断,我们需要在 kernel module 代码里获取设备中断并建立中断服务程序。

在老版本 petalinux,我们可以在 kernelmodule 里直接指定 IP 中断的实际物理中断号,但是新版本内核里我们需要在 kernel module 里获取 IP 的虚拟中断号。可以在 kernelmodule 代码里使用 request_irq 函数来获取中断并指定中断服务程序。

附件是为 axigpio IP 写的一个 kernel module,可以作为参考例子:

首先需要生成一个基于 MPSoC 芯片的 vivado 工程,

在 block design 里加入 MPSoC processing core 和 axi gpiocore,

连接 axi gpio 的中断信号到 MPSoC processing core 的 PL-》PS 中断端口

最后生成 bitstream 导出 hdf 或者 xsa,生成 petalinux 工程,

在 petalinux 工程里用下面命令生成并使能名字叫做 gpioirq 的 kernel module,

Petalinux-create-t modules --name gpioirq --enable

然后在petalinux工程目录里会生成这样一个路径 project-spec/meta-user/recipes-modules/gpioirq/files,把里面的 gpioirq.c 用附件里的同名文件覆盖掉。

用附件里的 system-user.dtsi 把 project-spec/meta-user/recipes-bsp/device-tree/files 里的同名文件覆盖掉,这是因为默认生成的 device tree 里 axigpio core 的 driver 是 xilinx driver,我们需要把它替换为我们生成的 kernel module 的 drivername,需要注意 system-user.dtsi 里面的 axigpio core 的名字需要和 petalinux 工程生成的 devicetree 里的 axi gpio core 的名字一样。

然后就可以运行 petalinux-build 和 petalinux-package 命令来生成 boot image,然后上板启动。Linux boot 之后可以通过 cat/proc/interrupts 命令看到 qgioirq 中断已经建立起来了,按一下对应 axigpio 的板上 IO 按钮可以看到中断服务程序的打印信息

本文来自 XILINX 产品应用工程师 Davis Zhang

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IP
    IP
    +关注

    关注

    5

    文章

    1703

    浏览量

    149511
  • 函数
    +关注

    关注

    3

    文章

    4329

    浏览量

    62576
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68539

原文标题:开发者分享 | 如何在 IP 的 kernel module 里设置并使用 IP interrupt

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    知道IP地址有什么用?

    相关信息的,这是Internet之所以能够运行的基础。更好理解的说法就是IP地址是发出邮件的地址,如果要写信给另外一个人,就需要知道
    的头像 发表于 11-21 10:53 157次阅读

    公网ip和弹性公网ip有什么区别?哪个更好

    公网IP和弹性公网IP都是用于互联网通信的IP地址,但它们灵活性、成本和管理方式上有所不同。公网IP是直接分配给设备的静态
    的头像 发表于 11-06 09:46 209次阅读

    必知!如何有效保护IP地址

    地址是一种通过加密和隧道技术公共网络上建立专用网络的方法。当你连接到服务器时,的真实IP地址会被隐藏,取而代之的是服务器分配给你的IP地址。 二、避免随意点击不明链接 网络上存在大
    的头像 发表于 09-07 11:16 383次阅读

    爬虫代理IP提升爬虫效率方面扮演着至关重要的角色#代理IP

    IP
    jf_62215197
    发布于 :2024年08月28日 07:52:49

    TCP IP协议属性设置中的IP配置

    现代网络中,TCP/IP协议是基础架构的重要组成部分。掌握TCP/IP协议属性设置中的IP配置对于确保网络的稳定性、性能和安全至关重要。本
    的头像 发表于 07-23 10:10 494次阅读

    如何使用代理IP转换国外IP

    IP
    jf_62215197
    发布于 :2024年07月17日 07:33:17

    ESP32外挂W5500以太网,如何设置静态IP地址呢?

    ; int8_t phy_reset_gpio; uint8_t phy_addr; } spi_eth_module_config_t; esp_ip4_addr_t ip
    发表于 06-13 06:51

    wifi模式设置静态IP地址失败的原因?

    wifi模式进入连接注册事件回调函数调用设置静态IP函数,函数如下: static void wifi_connected_handler(void *arg
    发表于 06-12 08:08

    如何设置静态IP代理

    静态IP
    jf_60146132
    发布于 :2024年04月29日 07:46:31

    NAS教程丨如何将NAS设置为固定IP

    首先需要配置正确的TNAS的网络设置,否则TNAS 将无法连接到互联网或无法被访问。 可以在网络接口中设置TNAS的网络接口参数。TNAS设备可能配置有一个,两个或者两个以上的网络
    的头像 发表于 12-27 17:52 5565次阅读
    NAS教程丨如何将NAS<b class='flag-5'>设置</b>为固定<b class='flag-5'>IP</b>?