Led驱动实验之Led灯初始化

本文详细介绍了在Linux环境下LED驱动的IO初始化过程,包括地址映射、使用ioremap函数、设置GPIO功能、电气属性和输出模式。作者还提供了具体的代码示例,展示了如何在驱动模块中实现这些操作。

一.  简介

本文继上一篇文章的学习,上一篇文章初步写好了 Led驱动框架代码的。

文章地址如下:

LED驱动框架代码的实现-优快云博客

本文继续 Led灯驱动代码的实现,主要学习编写 Led灯 IO的初始化工作。

二.  Led驱动的 IO 初始化说明

1.  地址映射

前面进行 Led灯裸机开发实验时,关于 Led的 IO初始化工作包括如下:

1. 使能时钟信号,即设置 Led灯相关的时钟IO口 
2. 复用功能,即设置为 GPIO功能
3. 配置电气属性
4. 设置为输出功能

同理,LED驱动实验中,关于 IO初始化工作也如上。IO初始化工作就是向相关寄存器写入数据。Linux系统有 MMU(memory manage unit)的存在,所以Linux 不能直接访问寄存器的物理地址,MMU会负责将寄存器的物理地址映射为虚拟地址。

所以,Linux驱动开发中,Linux 访问的是 寄存器的虚拟地址值。这里就需要进行地址映射,即将Led灯 IO初始化相关的寄存器物理地址映射为虚拟地址。

参考之前 Led裸机实验,可以找到 Led涉及的寄存器的物理地址,如下:

//寄存器物理地址
#define  CCM_CCGR1_BASE          (0X020C406C)
#define  SW_MUX_GPIO1_IO03_BASE  (0X020E0068)
#define  SW_PAD_GPIO1_IO03_BASE  (0X020E02F4)
#define  GPIO1_GDIR_BASE         (0X0209C004)
#define  GPIO1_DR_BASE           (0X0209C000)

地址映射函数

进行地址映射时,会调用到  ioremap() 函数,定 义 在 内核源码 ar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值