第7章 LED将为我闪烁:控制发光二极管

第7章 LED将为我闪烁:控制发光二极管

实现原理:linux驱动与本机的I/O内存进行交互,连接到主机的硬件在主机内存的映射

1编写LED驱动

1.1创建LED驱动的设备文件

使用cdev_init函数初始化cdev

Cdev 结构体

struct cdev {

     Struct konject kobj;

     Struct module *owner;

     Const struct file_operation *ops;

     Strust list_head list;

     Dev_t dev;

 

     Unsigned int count;

}

指定设备号

使用cdev_add函数将字符设备添加到内核中的字符设备数组中

使用class_create宏创建struct class

使用device_create函数创建设备文件

卸载LED驱动

2设置寄存器与初始化LED驱动

设置不同寄存器的值,可以设置LED引脚的状态

LED有两个引脚GPB1GPB0

控制LED需要通过3个寄存器来完成GPMCONGPMDATGPMCON

每个寄存器可以使用4个字节(int

控制LED状态

通过字符串控制LED

通过I/o命令控制LED

LED驱动的移植

测试LED驱动程序

编写测试程序为每一个测试程序

Abd shell ‘/data/local/ioctl/  /dev/s3c6420_lkeds  1  2’

本节完成了LED驱动的开发,一个硬件驱动主要有内部处理和硬件交互两部分组成。其中,内部处理是指linux驱动的装载、卸载,与设备文件相关的动作处理(读写设备文件、向设备发送I/O命令等动作)以及业务逻辑等。与硬件交互是指通过iowriter32ioread32等函数等函数与硬件中的寄存器进行数据交互。

 

转载于:https://www.cnblogs.com/Wqian/p/5560655.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值