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


        在之前章节了解到Linux驱动程序可以控制软硬件,可以实现软硬件之间的交互。在这章我们学习LED驱动的实现原理。Linux内核提供了多个与I/O内存交互的函数可以实现控制硬件。
        编写LED驱动,LED驱动会建立一个/dev/s3c6410_leds设备文件,该Linux驱动可以控制4个LED,靠近电池的LED编号为1,以此类推,另外1表示开,0表示关。接下来创建LED驱动的设备文件:第一步:使用cdev_init函数初始化cdev;第二步:指定设备号;第三步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中;第四步:使用class_create宏创建struct class;第五步:使用device_create函数创建设备文件。
        接着还介绍了卸载LED驱动的设备文件,需要一次调用device_destroy、class_destroy和unregister_chrdev_region方法。
        设置寄存器与初始化LED驱动,并控制LED。LED驱动可以使用如下两种方式控制LED:1.通过字符串控制LED。2.通过I/O命令控制LED
        使用NDK测试LED驱动,NDK程序测试和可执行程序测试差不多, 如果想在Android应用程序中测试Linux驱动,最直接的方法就是是使用DNK。
        使用Java测试LED驱动,用于JDK为提供发送I/O命令的API,因此使用Java只能通过发送控制字符串测试LED驱动。
        LED驱动是这本书第一个在软硬件之间交互。虽然不复杂,但是它的实现包括了Linux驱动所有必要的部分。

  • 相关阅读:
    【JZOJ3360】【NOI2013模拟】苹果树
    【SDOI2009】【BZOJ1878】HH的项链
    【JZOJ3234】阴阳
    【BZOJ3482】【JZOJ3238】[COCI2013]hiperprostor 超空间旅行
    【JZOJ3348】【NOI2013模拟】秘密任务 (Standard IO) (最小割唯一性的判定)
    【JZOJ4665】【CF407E】k-d-sequence
    【SHTSC2013】阶乘字符串
    【SHTSC2013】超级跳马
    半平面交笔记
    转:Why SeaJS
  • 原文地址:https://www.cnblogs.com/yxy666/p/5561614.html
Copyright © 2020-2023  润新知