type
status
slug
summary
tags
category
icon
password
new update day
Property
Dec 15, 2023 03:46 AM
created days
Last edited time
Dec 15, 2023 03:46 AM

背景资料

最近拿出了我自己的吃灰派,想着正好最近在学习驱动开发,于是就尝试着使用树莓派的 GPIO 进行一些驱动程序的开发练手工作。
首先了解到树莓派 4b 使用的CPU是 bcm2711,于是就找到了对应的芯片手册:
通过查询 GPIO 那一章节的介绍发现芯片手册上的 GPIO 物理基地址为 0x7e200000.
notion image
于是就使用这个基地址在驱动程序中进行了 ioremap 操作,结果触发了内核系统的保护机制,即:不允许映射相关内存区域。
而且树莓派的官方 datasheet 也并没有什么有用的信息,只有一个对应的引脚图。
notion image
后面经过查找资料发现,不止一个人遇到了这个问题。
树莓派4B的datasheet在我看来非常混乱复杂,尤其是地址映射方面。单datasheet就有两个版本而且还自相矛盾。为了查找到确定的物理地址,使用官方提供的函数进行读取。

安装运行环境

编写查询程序

首先在应用层插入头文件:
可用函数有如下选择:
本例要求读取外设物理地址,使用函数(1),代码如下:
用下面的语句进行编译,一定要在树莓派上进行编译运行
notion image
这个很重要,是驱动开发的基础,以此为基地址相对偏移一个位置。如GPIO的设置。在这里要特别注意相对偏移量。
💡
同时我们也可以发现这个地址跟芯片手册提供的不是同一个:0x7e200000

参考资料

Relate Posts
使用 OpenWrt SDK 手动编译 alist 并安装
Lazy loaded image
在树莓派官网系统 Raspberry Pi OS 上吃鹅全过程
Lazy loaded image
CS144-2023-Spring router.cc 功能部分实现讲解
Lazy loaded image
CS144-2023-Spring network_interface.cc 功能部分实现讲解
Lazy loaded image
[MIT 6.s081] Lab: Copy-on-Write Fork for xv6 实验记录
Lazy loaded image
Linux 0.11 中的 put_page 函数
Lazy loaded image
使用 OpenWrt SDK 手动编译 alist 并安装在树莓派官网系统 Raspberry Pi OS 上吃鹅全过程
Loading...
tangcuyu
tangcuyu
一只尘世中努力争渡的🐠
Latest posts
自建 tailscaler derper 中继服务
2024-11-9
在 CentOS 9 上编译 DPDK 与 pktgen 24.07
2024-11-1
CentOS 9 DPDK 源码编译
2024-10-31
在 CentOS 9 上启用 CRB 源
2024-10-16
Rime 小狼毫定时用户词库同步设置
2024-5-1
在 Arch Linux 上通过 OneDrive 进行 rime 的用户词库同步
2024-4-20