前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统驱动之层级中断控制器驱动程序上机实验

Linux系统驱动之层级中断控制器驱动程序上机实验

作者头像
韦东山
发布2021-12-08 10:21:22
1K0
发布2021-12-08 10:21:22
举报
文章被收录于专栏:韦东山嵌入式

层级中断控制器驱动程序上机实验

参考资料:

1. 确定中断号n

在这里插入图片描述
在这里插入图片描述

查看芯片手册,选择一个保留的、未使用的GIC SPI中断即可。

1.1 IMX6ULL

看芯片手册第3章:

在这里插入图片描述
在这里插入图片描述

看上图,选择122号中断,它是SPI里的122号中断,GIC里的编号是(32+122)=154。

1.2 STM32MP157

看芯片手册第21.2节:

在这里插入图片描述
在这里插入图片描述

看上图,选择210号中断,它是SPI里的210号中断,GIC里的编号是(32+210)=242。

2. 怎么触发中断

可以通过devmem命令直接写GIC的PENDING寄存区。

在这里插入图片描述
在这里插入图片描述

GICD_ISPENDRn有多个寄存器,每个寄存器中每一位对应一个GIC中断,写入1就可以触发该中断。

写哪一个GICD_ISPENDRn寄存器?写哪一位?使用下列公式来确定:

在这里插入图片描述
在这里插入图片描述

查看内核设备树文件imx6ull.dtsi、stm32mp151.dtsi,可以知道:

  • IMX6ULL的GIC Distributor 地址是:0x00a01000
在这里插入图片描述
在这里插入图片描述
  • STM32MP157的GIC Distributor 地址是:0xa0021000
在这里插入图片描述
在这里插入图片描述

芯片

SPI中断号

GIC中断号

n,bit

GICD_ISPENDRn地址

命令

IMX6LLL

122

154

4,26

0xa01210

devmem 0xa01210 32 0x4000000

123

155

4,27

0xa01210

devmem 0xa01210 32 0x8000000

124

156

4,28

0xa01210

devmem 0xa01210 32 0x10000000

125

157

4,29

0xa01210

devmem 0xa01210 32 0x20000000

STM32MP157

210

242

7,18

0xa002121c

devmem 0xa002121c 32 0x40000

211

243

7,19

0xa002121c

devmem 0xa002121c 32 0x80000

212

244

7,20

0xa002121c

devmem 0xa002121c 32 0x100000

213

245

7,21

0xa002121c

devmem 0xa002121c 32 0x200000

3. 上机实验

3.1 设置工具链
1. STM32MP157
代码语言:javascript
复制
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
2. IMX6ULL
代码语言:javascript
复制
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
3.2 编译、替换设备树
1. STM32MP157
2. IMX6ULL
3.3 编译、安装驱动程序
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 层级中断控制器驱动程序上机实验
  • 1. 确定中断号n
    • 1.1 IMX6ULL
      • 1.2 STM32MP157
      • 2. 怎么触发中断
      • 3. 上机实验
        • 3.1 设置工具链
          • 1. STM32MP157
          • 2. IMX6ULL
        • 3.2 编译、替换设备树
          • 1. STM32MP157
          • 2. IMX6ULL
        • 3.3 编译、安装驱动程序
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档