zoukankan      html  css  js  c++  java
  • 《Android深度探索》第七章心得体会

          《Android深度探索》第七章讲的是LED将为我闪烁:控制发光二极管。1.创建LED驱动的设备文件:第1步:使用cdev_init函数初始化cdev;第2步:指定设备号,Linux设备文件的设备号分为主设备号和次设备号。设备号有直接在代码中指定和动态分配两种指定方法;第3步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中;第4步:使用class_create宏创建struct class;第5步:使用device_create函数创建设备文件。2.卸载LED驱动的设备文件,需要依次调用device_destroy、class_destroy和unregister_chrdev_region方法。3.控制LED,LED驱动可以通过字符串和I/O命令两种方式控制LED。

          通过对第七章的学习,我知道了Linux驱动与硬件打交道,但并不是Linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互。所谓I/O内存是通过各种接口连接到主机的硬件在主机内存中的映射。Linux内核的内存管理模块负责同步I/O内存与硬件中的数据。每一个连接Linux的硬件在I/O内存中都会有映射首地址。LED驱动是本书第一个真正与硬件打交道的Linux驱动,虽然LED驱动并不复杂,只是控制了4个LED,但LED驱动已经包括了Linux驱动所有必要的部分。一个完整的Linux驱动主要由内部处理和硬件交互两部分组成。其中内部处理主要是指Linux驱动的装载、卸载、与设备文件相关的动作处理以及业务逻辑等。与硬件交互主要是指通过iowrite32、ioread32等函数与硬件中的寄存器进行数据交互。Linux驱动在不同平台的移植也是处理这两部分。如果在不同的Linux内核版本之间的移植,主要是移植第1部分,如果在不同硬件平台的移植,主要是移植第2部分。

  • 相关阅读:
    Struts2框架的学习遇到的问题1
    博客开通第100天
    RTK(Real Time Kinematic)实时动态差分定位技术
    HSRP 协议/ VRRP 协议(热备份路由协议)
    PKI 公钥基础设施
    路由器的工作原理
    VLAN基础知识
    Linux系统的 粘滞位、sgid和suid
    Kali Linux三步安装中文输入法(极简)
    ACL 包过滤技术
  • 原文地址:https://www.cnblogs.com/zi-qing/p/5560559.html
Copyright © 2011-2022 走看看