文件名称:模块初始化定义-卷积神经网络的数学推导
文件大小:8.6MB
文件格式:PDF
更新时间:2024-06-29 07:17:39
周立功 嵌入式 Linux
第2章 Linux设备驱动基础
本章导读
嵌入式 Linux产品开发,很大一部分工作量是驱动开发。驱动程序的好坏直接影响和决
定着产品的稳定性,稳定的驱动程序是产品可靠性的基石,所以驱动开发对嵌入式 Linux
开发至关重要。
编写 Linux驱动,首先要具备相关的电路基础知识,只有了解了硬件的基本工作原理才
能编写出可靠的驱动程序。同时,必须对 Linux驱动体系有清晰的认识,才能将设备在 Linux
下驱动起来。本章主要就讲述 Linux设备驱动的相关概念,从 Linux内核模块开始,带领读
者逐步认识 Linux设备驱动体系。这些都是编写 Linux 设备驱动的基础,需要牢牢把握。
2.1 Linux 内核模块
2.1.1 Linux 和模块
在 32 位系统上,Linux 内核将 4G 空间分为 0~3G 的用户空间和 3~4G 的内核空间
[注]
。
用户程序运行在用户空间,可通过中断或者系统调用进入内核空间;Linux 内核已经内核模
块则只能在内核空间运行。
Linux 内核具有很强的可裁剪性,很多功能或者外设驱动都可以编译成模块,在系统运
行中动态插入或者卸载,在此过程中无需重启系统。模块化设计使得 Linux 系统很灵活,可
以将一些很少用到或者暂时不用的功能编译为模块,在需要的时候再动态加载进内核,可以
减小内核的体积,加快启动速度,这对嵌入式应用极为重要。
[注]:目前内核已经支持用户/内核空间 3:1、2:2、1:3 比例划分。
2.1.2 编写内核模块
头文件 1.
内核模块需要包含内核相关头文件,不同模块根据功能的差异,所需要的头文件也不相
同,但是