Linux设备驱动开发(学习笔记)_第一章 Linux设备驱动概述及开发环境构建

在嵌入式系统的设计中,LED一般直接由CPU的GPIO(通用可编程I/O)口控制。GPIO一般由两组寄存器控制,即一组控制寄存器和一组数据寄存器。

屏蔽具体 CPU 的差异,假设在 GPIO_REG_CTRL 物理地址中控制寄存器处的第 n 位写入 1 可设置 GPIO 口为
输出,在地址 GPIO_REG_DATA 物理地址中数据寄存器的第 n 位写入 1 或 0 可在引脚上产生高或低电平,则在
无操作系统的情况下,设备驱动代码如下:
//无操作系统时的LED驱动
#define reg_gpio_ctrl *(voltatile int*)(ToVirtual)(GPIO_REG_CTRL)
#define reg_gpio_ctrl *(voltatile int*)(ToVirtual)(GPIO_REG_DATA)
//初始化LED
void LightInit(void)
{
    reg_gpio_ctrl |=(1<<n);//设置GPIO为输出
}
//点亮LED
void Lighton(void)
{
    reg_gpio_data |=(1<<n);//在GPIO上输出高电平
}
void LightOff(void)
{
    reg_gpio_data &=~(1<<n);//在GPIO上输出低电平
}
上述程序中的LightInit()、LightOn()、LightOff()都直接作为驱动提供给应用程序的外部接口函数。
程序中ToVirtual()的作用是当系统启动了硬件MMU之后,根据物理地址和虚拟地址的映射关系,将寄存器
的物理地址转化为虚拟地址

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值