zoukankan      html  css  js  c++  java
  • 驱动基础 —— 驱动分类与开发步骤

    目录:

      1、Linux软件系统的层次关系

      2、驱动程序的分类

      3、驱动程序的开发步骤

    1、Linux软件系统的层次关系

    软件系统可分为:应用程序、库、操作系统(内核)、驱动程序

     以点亮LED为例,分析各层间的写作关系

      1)应用程序调用库提供的open函数打开代表LED的设备文件;

      2)库根据open函数传入的参数执行“swi”指令,这条指令会引起CPU异常,进而进入内核;

      3)内核的异常处理函数根据这些参数找到相应的驱动程序,返回一个文件句柄给库,进而返回给应用程序;

      4)应用程序得到文件句柄后,使用库提供的write或ioctl函数发出控制指令。

      5)库根据write或ioctl函数传入的参数执行“swi”指令,引起CPU异常,进入内核;

      6)内核的异常处理函数根据这些参数调用驱动程序的相关函数,点亮LED

      库给应用程序通过的接口函数:open、read、write、ioctl、mmap等(系统调用),都是设置好相应寄存器后,执行某条指令引发异常进入内核,对于ARM架构CPU,指令为swi,软中断

      实际上,内核和驱动并没有界线,因为驱动最终是要通过静态链接和动态加载编进内核中去的;从上分析可知,驱动一般是被动的,根据应用程序的需求来执行。

      

      2、驱动程序分类

      字符设备、块设备、网络设备

      3、驱动程序开发步骤

      编写一个linux设备驱动程序的大致流程如下:

      1)查看原理图,数据手册,了解设备的操作方法;

      2)在内核中找到相近的驱动程序,作为模板来开发,有时要从零开始;

      3)实现驱动程序的初始化,比如详内核注册这个驱动程序,

      4)设计所要实现的操作:比如open、close、read、writ等函数;

      5)实现中断服务,并不是每个设备驱动都必须的;

      6)编译驱动到内核,或作为模块动态加载

      7)测试驱动

  • 相关阅读:
    window10-jmeter安装
    软件开发模型
    软件测试的原则和流程
    手机APP测试
    优秀的软件测试工程师
    自动化测试
    测试用例
    软件测试功能分类
    ios-prefix文件最全
    催收策略及催收评分卡搭建
  • 原文地址:https://www.cnblogs.com/y4247464/p/12369821.html
Copyright © 2011-2022 走看看