Linux驱动开发与裸机开发区别

2023-05-16

Linux驱动开发与裸机开发区别

  • 裸机驱动开发回顾
  • Linux驱动开发思维
  • Linux驱动开发分类

裸机驱动开发回顾

1、底层。跟寄存器打交通,有些MCU提供了库

Linux驱动开发思维

1、Linux下驱动开发直接操作寄存器不现实,不是直接操作寄存器;
2、根据Linux下的各种驱动框架进行开发,一定要满足框架,也就是Linux下各种驱动框架的掌握
3、驱动最终表现就是/dev/xxx文件。打开,关闭,读写…
4、现在新的内核支持设备树。这是一个.dts文件。此文件 描述了板子的设备信息。

Linux驱动开发分类

linux驱动分为三大类:
1、字符设备驱动:应用程序与驱动程序之间的数据交互是以字符(字节)为单位的,字符设备通常没有中间缓存。常见的字符设备有:led、key、camera、显卡、串口等。最多的
2、块设备驱动:应用程序与驱动程序之间的数据交互是以块为单位的,主要针对的是存储设备,通常设有中间缓存,并且带有文件系统,可以任意位置访问。常见的块设备有:U盘、eMMC、SD卡等
3、网络设备驱动:网络设备面向数据包的发送而设计,它并不对应于文件系统的节点。即不对应 /dev 目录下的设备文件,应用程序最终通过套接字
socket 完成与网络设备的数据交互。常见的网络设备有网卡(无线网卡、有线网卡)。

一个设备不说是一定属于某一类型。比如USB WIFI,SDIO WIFI,属于网络设备驱动,因为他又有USB和SDIO。因此也属于字符设备驱动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux驱动开发与裸机开发区别 的相关文章

  • Pthreads - 高内存使用率

    我正在用 C 编写一些东西 在 256Mb 系统上的 Linux 中创建大量 Pthread 我通常有 200Mb 的免费空间 当我使用少量线程运行该程序时 它可以工作 但是一旦我让它创建大约 100 个线程 它就会出现错误 因为系统内存不
  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • 任何退出 bash 脚本但不退出终端的方法

    当我使用exitshell 脚本中的命令 该脚本将终止终端 提示符 有什么方法可以终止脚本然后停留在终端中吗 我的剧本run sh预计通过直接获取或从另一个脚本获取来执行 编辑 更具体地说 有两个脚本run2 sh as run sh ec
  • 对于任何真实数据集,数据压缩比的最小可能值是多少

    我在写信ZLIB类似于嵌入式硬件压缩器的 API 它使用 deflate 算法来压缩给定的输入流 在进一步讨论之前 我想解释一下数据压缩率 数据压缩率定义为未压缩大小与压缩大小之间的比率 压缩比通常大于一 这意味着压缩数据通常比未压缩数据小
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • 使用 ioctl 在 C++ 中以编程方式添加路由

    我编写了简单的 C 函数 添加了新路线 void addRoute int fd socket PF INET SOCK DGRAM IPPROTO IP struct rtentry route memset route 0 sizeof
  • Bash:将字符串添加到文件末尾而不换行

    如何将字符串添加到文件末尾而不换行 例如 如果我使用 gt gt 它将添加到文件末尾并换行 cat list txt yourText1 root host 37 echo yourText2 gt gt list txt root hos
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • /sys/device/ 和 dmidecode 报告的不同 CPU 缓存大小

    我正在尝试获取系统中不同缓存级别的大小 我尝试了两种技术 a 使用 sys device 中的信息 这是输出 cat sys devices system cpu cpu0 cache index1 size 32K cat sys dev
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • Linux无法删除文件

    当我找到文件时 我在删除它们时遇到问题 任务 必须找到带有空格的文件并将其删除 我的尝试 rm find L root grep i 但我有错误 rm cannot remove root test No such file or dire
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud

随机推荐

  • C++11 线程池的使用

    本文主要介绍C 43 43 中线程池的实现以及C 43 43 11中新特性 仿函数 线程 互斥量 原子 条件变量等 的使用 xff0c 最终会实现一个简易的线程池 xff0c 可支持传参不传参等任务 目录 一 线程池的用途 1 线程池的作用
  • ubuntu 首次安装后配置开发环境

    目录 1 配置root 密码 2 安装SSH 3 安装网络 4 安装和配置 vim 5 配置C 43 43 开发环境 6 安装代码管理工具 git 6 1 配置邮箱和用户名 7 多用户与图形界面切换 1 配置root 密码 sudo pas
  • window11 无法切换输入法打印不出汉字问题修改

    1 xff09 按 WINDOW 43 R 键启动cmd 窗口 2 xff09 在cmd窗口中输入 services msc 启动服务窗口 3 xff09 找到 TextInputManagementService xff0c 开启即可
  • 在c++中字符串复制与内存复制之间的区别

    1 编程实现strcpy函数 字符串复制的实现 原型char strcpy char strdest const char strSrc 对于上述代码 xff0c 为什么要用char 类型呢 xff1f 为了能够链式表达式 2 内存复制函数
  • static静态变量与普通变量的区别

    1 static全局变量与普通全局变量的区别 全局变量的说明之前再加上static就构成静态全局变量 全局变量本身就是静态存储方式 xff0c 静态全局变量当然也是静态存储方式 这两者在存储方式上没有区别 区别在于 xff0c 非静态全局变
  • VS2013与数据库mysql8.0的连接

    1 准备 xff1a vs2013 mysql 8 0 1 1首先我们到官网上下载mysql 下载完成后解压 xff0c 安装 vs2013下载解压安装 2 我们打开安装后的mysql文件夹 我们一会要重点用到 include 和lib 所
  • 用VS2013中MFC开发视频播放器

    1 搭建开发环境 1 1 vs2013网上有许多软件可以自行下载或者 vs2013的安装包 有需要的留言我给发 1 2 搭建DirectShow开发环境 我参考的书上说要自己下一个DriectShow xff0c 但是我下载了好多次 xff
  • 用VS2013中MFC开发视频播放器(2)

    上一个博客我写了做视频播放器的环境搭建 xff0c 没写完这个项目 xff0c 所以今天在把它详细的写一遍流程 xff0c 介绍一下这个项目的编写 1 需求分析 xff1b 要求开发播放器系统能够播放媒体文件 xff0c 而且还可以进行播放
  • 基于正点原子探索者使用STM32CubeMX+FreeRTOS+LWIP

    开发板是使用正点原子的探索者为例 xff0c PHY芯片可以是LAN8720A和IP101GR xff0c 因为有两份代码参考 xff0c 一份是LAN8720A xff0c 一份是IP101GR 首先第一步 xff1a 我们使用移植好的功
  • C++笔试中遇到的问题

    1 sizeof与strlen的区别 xff1f 答 xff1a sizeof是操作符 xff0c 分配的数组实际所占的内存空间大小 xff0c 不受里面存储内容的影响 strlen是函数 xff0c strlen计算字符串的长度 xff0
  • CRC计算的简单原理及代码实现(python)

    目录 多项式的获取 CRC计算的示例图 示例代码 多项式的获取 举例如下 xff08 其余的多项式依次类推即可 xff09 xff1a 故最终多项式获取的参与异或计算的数据为 xff1a 1011 CRC计算的示例图 假设原始数据为 xff
  • 深度学习训练数据中的特征重要性排名

    查看神经网络模型特征重要性的思路 xff1a 依次变动各个特征 xff0c 通过模型最终预测的结果来衡量特征的重要性 神经网络特征重要性的获取步骤如下 xff1a 训练一个神经网络模型 xff1b 每次对一个特征列进行随机shuffle x
  • (笔记)Python import 其他路径下的文件

    一般情况下 xff0c 如果要import的文件和被import的文件位于同一路径下 xff0c 可以使用 xff1a import 文件名 的方式直接进行引用 但如果这两个文件不在同一路径下 xff0c 就需要在被import的文件路径下
  • (Note)Python osgeo&shapefile库的安装

    1 shapefile anaconda xff1a conda install pyshp pip xff1a pip install pyshpe 2 osgeo 进入Link xff1a https www lfd uci edu g
  • (Note)Python 统计列表中各元素出现的次数

    演示列表 xff1a Demo list 61 1 2 3 3 3 5 6 2 2 0 4 5 2 7 8 4 5 1 3 9 8 7 1 统计列表中不同元素的个数 Demo list 61 1 2 3 3 3 5 6 2 2 0 4 5
  • (Note)海韵&海韵代工的电源-风扇智能启停按钮

    海韵是电源四大厂之一 xff0c 旗下有众多型号的电源 其中 xff0c 部分电源的后部会有一个方形的按钮 xff08 在电源开关左侧 xff09 如图所示 xff1a 这是海韵FOCUS 43 电源特有的 34 HYBRIDMOOE 34
  • (Note)七彩虹30系列显卡——《一键超频》按键

    七彩虹部分30系高端显卡提供了一键超频功能 xff0c 通过按下超频按钮可以实现显卡一键超频 七彩虹显卡的一键超频按钮使用方法 xff1a 按下超频 xff0c 弹起默认 切换需要重启电脑 xff01
  • (Note)优化器Adam的学习率设置

    记录一下知乎看到的问题 xff1a Adam的学习率设置 常用的神经网络优化器Adam的自适应学习率并不是真正意义上的自适应 从统计的角度看 xff0c Adam的自适应原理也是根据统计对梯度进行修正 xff0c 但依然离不开前面设置的学习
  • (Note)深度学习与人工提取的特征

    首先 xff0c 深度学习一般 不需要人工提取特征 如果仅仅给网络提供人工提取的特征 xff0c 反而有可能会造成网络性能的下降 xff08 深度学习模型可能提取到一些人类不易察觉的特征 xff0c 这些特征可能对结果的判定有着较大的贡献
  • Linux驱动开发与裸机开发区别

    Linux驱动开发与裸机开发区别 裸机驱动开发回顾Linux驱动开发思维Linux驱动开发分类 裸机驱动开发回顾 1 底层 跟寄存器打交通 xff0c 有些MCU提供了库 Linux驱动开发思维 1 Linux下驱动开发直接操作寄存器不现实