• 安卓移植和驱动开发第七章心得体会


    第七章 Led为我闪烁

    尽管 Linux 驱动直接与硬件打交道,但并不是 Linux 驱动直接向硬件中的内存写数据, 而是与本机的内存(νO Memory,位于内核空间〉进行交互。所谓 1/0 内存是通过各种接口(PCI、USB、蓝牙、以太网口等〉连接到主机( PC、手机〉的硬件〈网卡。声卡、摄像头等〉在主机内 存中的映射。例如,在 Ubuntu Linux 上运行的驱动只需要访问运行 Ubuntu Linux 的主机中的内存即可,然后Linux内核会利1/0内存中的数据硬件交互。

    如果在不同Linux内核版本之间的移植,主要是移植第1 部分( Linux驱动的内部处理,一般Linux 内核版本相差较大时,Linux内核的APl 会有很大差别),如果在不同硬件平台(如在不同开发板之间的移植)的移植,主要是移植第2部分。当然,在一些情况不, Linux 驱动的移植基本上相当于重新编写一遍Linux 驱动,在这种情况下,就要更好地了解Linux 驱动的高级技术,在后面的章节将深入地介绍Linux 驱动的这些技术,以便读者可以驾轻就熟地编写Linux 驱动。1.创建LED驱动的设备文件

    使用cdev_init函数初始化cdev;指定设备号 ;Linux设备文件的设备号分为主设备号和次设备号,前12位主设备号,后20位表示次设备号。设备号指定方法:直接在代码中指定(硬编码),动态分配,多个Linux设备文件可以拥有同一个主设备号。但两个设备的主设备号和次设备号不都能一样。使用cdev_add函数将字符设备添加到内核中德字符设备数组中。使用class_create宏创建struct class。使用device_create函数创建设备文件

    2.卸载Led驱动的设备文件

    依次调用三个方法:

    Void device_destroy(struct class *class,dev_t devt)

    Void class_destroy(struct class *cls)

    Void unregister_chrdev_region(dev_t from,unsigned count)

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

    4.控制LED

    通过字符串控制LED;通过I/O命令控制LED

    5.LED驱动的模块参数

    如果Linux驱动中有多个模块参数,需要将这些参数用单引号或双引号括起来

    LED 驱动可以使用如下两种方式控制:LED通过字符串控制;通过命令控制LED。在将LED灯代码编写完成后,然后进行LED灯的测试。也可以使用JAVA测试LED灯驱动。测试完成后可以将LED灯移植。

  • 相关阅读:
    MySQL Error--存储inode用完后报设备没有空间
    MySQL Binlog--基于ROW模式的binlog event大小限制
    MySQL Transaction--网络丢包导致长时间未提交事务
    java核心技术第四篇之JDBC第二篇
    java核心技术第三篇之JDBC第一篇
    java核心技术第二篇之数据库SQL语法
    JVM垃圾回收器原理及使用介绍
    JVM中优化指南
    MySQL常用工具、日志及读写分离
    java基础第十九篇之Xml
  • 原文地址:https://www.cnblogs.com/suntao123/p/5561532.html
Copyright © 2020-2023  润新知