模块初始化定义-卷积神经网络的数学推导

时间:2024-06-29 07:17:39
【文件属性】:

文件名称:模块初始化定义-卷积神经网络的数学推导

文件大小: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. 内核模块需要包含内核相关头文件,不同模块根据功能的差异,所需要的头文件也不相 同,但是是必不可少的。 #include #include 模块初始化 2. 模块的初始化负责注册模块本身。如果一个内核模块没有被注册,则其内部的各种方法 无法被应用程序使用,只有已注册模块的各种方法才能够被应用程序使用并发挥各方法的实 际功能。模块并不是内核内部的代码,而是独立于内核之外 [注] ,通过初始化,能够让内核之 外的代码来替内核完成本应该由内核完成的功能,模块初始化的功能相当于模块与内核之间 衔接的桥梁,告知内核“我进来了,我已经做好准备为您服务了”。 [注]:当内核树内某部分代码被配置为模块时,可理解为:这部分代码已经不属于当前配置下的内核。 模块的初始化定义通常如程序清单 2.1 所示。 程序清单 2.1 模块初始化定义


网友评论