• 驱动应该怎么学习?


    模块化设计

    宏内核:将内核从整体上作为一个大过程实现,并同时运行一个单独的地址空间,相互之间直接调用函数,简单高效。紧耦合。

    微内核:功能被划分为独立的过程,过程间通过IPC来通信,模块化程度高, 一个服务失效不会影响另一个服务,譬如windows

    Linux内核:本质上是宏内核,但又吸收了微内核的模块化特性,体现在两个层面。

    驱动的分类

    字符类驱动

    块设备驱动

    网络设备驱动

    驱动安全性要求

    (1)驱动是内核最庞大的一部分

    (2)内核会直接以函数调用的方式调用驱动代码

    (3)驱动的动态安装和卸载都会“更改”内核

    驱动对内核的影响

    (1)驱动程序崩溃甚至会导致内核崩溃

    (2)驱动的效率会影响内核的整体效率

    (3)驱动的漏洞会造成内核安全漏洞

    驱动安全性问题

    (1)未初始化指针

    (2)恶意用户程序

    (3)缓冲区溢出

    (4)竞争状态

    驱动的学习方法

    (1)先学习好C语言

    (2)掌握相关预备知识

    硬件操作方面:裸机全集里的一些硬件操控,譬如串口,蜂鸣器,led,LCD等等

    应用层API:应用编程和网络编程部分的内容,学习怎么去写应用程序,那些API就是现在驱动对其进行支持的。

    (3)驱动学习阶段

    注重实践,一步一步写驱动:一步一步的去增加自己的代码,一行一行的去写驱动。

    框架思维,多考虑整体和上下层:考虑这个代码是被谁调用,上层是谁,下层是谁,

    先通过简单设备学Linux驱动框架:Linux驱动本身是分层的,有些层次是Linux内核的,有些是个人自己写的,有些人是厂商写的,相互之间通过接口来调用

    学会总结、记录,这会有助于理解:

  • 相关阅读:
    UNP学习第八章udp
    UNP学习第七章
    linux IPC 消息队列(二)
    epoll学习(二)
    epoll学习
    UNP学习第六章(二)
    UNP学习第六章select
    UNP学习第五章(二)
    UNP学习第五章
    UNP学习第四章tcp
  • 原文地址:https://www.cnblogs.com/yr-linux/p/5463024.html
Copyright © 2020-2023  润新知