dev

Linux设备驱动之USB

你离开我真会死。 提交于 2020-03-07 04:37:14
Linux驱动框架分析(一) 事实上,Linux的设备驱动都遵循一个惯例——表征驱动程序(用driver更贴切一些,应该称为驱动器比较好吧)的结构体,结构体里面应该包含了驱动程序所需要的所有资源。用术语来说,就是这个驱动器对象所拥有的属性及成员。由于Linux的内核用c来编写,所以我们也按照这种结构化的思想来分析代码,但我还是希望从OO的角度来阐述这些细节。这个结构体的名字有驱动开发人员决定,比如说,鼠标可能有一个叫做mouse_dev的struct,键盘可能由一个keyboard_dev的struct(dev for device,我们做的只是设备驱动)。而这次我们来分析一下Linux内核源码中的一个usb-skeleton(就是usb驱动的骨架咯),自然,他定义的设备结构体就叫做usb-skel: struct usb_skel { struct usb_device * udev; /* the usb device for this device */ struct usb_interface * interface; /* the interface for this device */ struct semaphore limit_sem; /* limiting the number of writes in progress */ unsigned char *

Linux下的USB总线驱动(一)

独自空忆成欢 提交于 2020-03-07 03:50:21
版权所有,转载请说明转自 http://my.csdn.net/weiqing1981127 一. USB 理论 1. USB 概念概述 USB1.0 版本速度 1.5Mbps (低速 USB ) USB1.1 版本速度 12Mbps (全速 USB ) USB2.0 版本速度 480Mbps (高速 USB ) USB 驱动由 USB 主机控制器驱动和 USB 设备驱动组成。 USB 主机控制器是用来控制 USB 设备和 CPU 之间通信的, USB 主机控制器驱动主要用来驱动芯片上的主机控制器硬件。 USB 设备驱动主要是指具体的例如 USB 鼠标, USB 键盘灯设备的驱动。 一般的通用的 Linux 设备,如 U 盘、 USB 鼠标、 USB 键盘,都不需要工程师再编写驱动,需要编写的是特定厂商、特定芯片的驱动,而且往往也可以参考内核中已经提供的驱动模板。 USB 只是一个总线,真正的 USB 设备驱动的主体工作仍然是 USB 设备本身所属类型的驱动,如字符设备、 tty 设备、块设备、输入设备等。 2. USB 主机控制器 USB 主机控制器属于南桥芯片的一部分,通过 PCI 总线和处理器通信。 USB 主机控制器分为 UHCI (英特尔提出)、 OHCI (康柏和微软提出)、 EHCI 。其中 OHCI 驱动程序用来为非 PC 系统上以及带有 SiS 和 ALi

嵌入式Linux驱动学习之路(二十)USB设备驱动

早过忘川 提交于 2020-03-07 03:45:35
USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID。 在主机端,D+和D-都是下拉接地的。而设备端的D-接上拉时,表明此设备为高速设备:12M/s。 D+接上拉时则是全速设备:480M/S。 PC的USB口中的D+D-有15K的下拉电阻,未接USB设备时,皆为低电平。 而设备中的D+D-则是1.5K的上拉电阻。一旦接入PC中,电脑就会知道有设备接入。 USB是主从结构。所有的传输都是由主机发起的,即USB设备没有主动通知USB主机的能力。 USB的传输类型:      控制传输 。 可靠,时间有保证。 例如:USB设备的识别。      批量传输 。 可靠,但时间没有保证。 例如:U盘。      中断传输 。 可靠,实时传输。 例如:USB鼠标。      实时传输 。 不可靠。实时传输。 例如:USB摄像头。 USB传输的对象为端点。比如读U盘和写U盘,可以形容为从端点1读数据,从端点2写数据。     除了端点0以外,每个端点只支持一个方向的数据传输。     端点0用于控制传输,既能输出也能输入。 每一个端点都有传输类型和方向。 程序和术语中说的输入输出 都是基于USB主机的立场说的。   比如鼠标是数据从鼠标传输到PC机的,鼠标对应的端点称为输入端点。 USB总线驱动程序的作用: 1.识别设备 2. 查找并安装对应的设备驱动程序 3

windows下安装cygwin以及SeismicUnix在cygwin下的安装

心不动则不痛 提交于 2020-03-07 00:17:52
在此先感谢CSDN中这篇文章的作者—— 版权声明:本文为CSDN博主「Koma_Wong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Rong_Toa/article/details/79089985 以及我的柯老师,对我这个萌新的各种解答! 写下这篇文章为了以后再次安装的时候更容易些,大家也可以和上面这篇文章结合着看。 一.cgywin的安装 1.首先下载cgywin软件,大家可以去官网各处下载该软件,我这里给大家提供一个我的链接链接:https://pan.baidu.com/s/1noABCQtCudTeQi63ldIUhw 提取码:2gs1 2.双击图标安装 点击下一步,我点击的是install from Internet,因为我的网速比较快就选这个了。 之后点击下一步,注意这个选的是你的windows下的文件夹,对应是cgywin的安装路径,我点的ALL user. 下一步也是软件安装包的下载路径。 下一步我点的Direct Connection。 3.然后来到一个选择你需要的安装包的界面,点击default,将其变成install,选择你所需要的在搜索框里搜索下载最新的即可,SeismicUnix需要: gcc-core gcc-fortran gdb make

git从已有分支拉新分支开发

主宰稳场 提交于 2020-03-06 23:39:47
开发过程中经常用到从master分支copy一个开发分支,下面我们就用命令行完成这个操作: 1. 切换到被copy的分支(master),并且从远端拉取最新版本 $git checkout master $git pull 2. 从当前分支拉copy开发分支 $git checkout -b dev Switched to a new branch 'dev' 3. 把新建的分支push到远端 $git push origin dev 4. 拉取远端分支 $git pull There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details. git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=origin/<branch> dev 经过验证,当前的分支并没有和本地分支关联,根据提示进行下一步: 5. 关联 $git branch --set-upstream-to

CentOS 8 扩展LVM,更改xfs卷报错解决方法

耗尽温柔 提交于 2020-03-06 20:51:25
参考网上的教程扩展LVM。例如下面两篇: https://blog.csdn.net/u012439646/article/details/73380197 https://www.cnblogs.com/weiyiming007/p/9517484.html 操作步骤大同小异。走到最后一步,更改xfs大小出错。 xfs_growfs /dev/cl/root xfs_growfs /dev/mapper/cl-root 参考其它教程的上面命令两个均报错:<path> is not a mounted XFS filesystem. 上网搜索,发现要改成映射后的路径: xfs_growfs / 成功运行命令。 来源: https://www.cnblogs.com/pack27/p/12430164.html

10.webpack-配置webpack的自动打包功能

二次信任 提交于 2020-03-06 09:05:15
webpack webpack 可以打包项目用到的js和非js文件 但是每次修改 都需要手动执行打包命令 然后刷新浏览器页面 比较麻烦 webpack-dev-server 实现了项目自动打包功能 每次修改文件 会自动打包并生成 bundle.js (mian.js) 文件 然后刷新浏览器页面 1. 安装 webpack-dev-server npm i - D webpack - dev - server 2. 修改启动配置 打开 package.json 修改 scripts 下的 dev 为 webpack-dev-server "dev" : "webpack-dev-server" // 这里是修改dev 不是添加一个dev 3. 修改 index.html 的引用路径 webpack-dev-server 会把打包的js文件保存在内存中 使用 /bundle.js 来访问 修改 index.html 的 js脚本引用 路径 < ! -- < script type = "text/javascript" src = "../dist/bundle.js" > < / script > -- > < script type = "text/javascript" src = "/bundle.js" > < / script > 4. 运行 webpack-dev

Linux基础-swap交换分区

强颜欢笑 提交于 2020-03-06 06:36:22
任务:对一块15G大小的硬盘进行分区,主分区为5G,扩展分区10G,一个逻辑分区5G作为swap交换分区,并激活查看新的swap分区 第一步 ,建立的新的SCSI硬盘,开启Linux系统前添加一块大小为15G的SCSI硬盘 第二步 ,开启Linux终端,右击桌面,打开终端,为新加的硬盘分区,1个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区,大小为5G 查看硬盘的连接情况,出现 /dev/sdb ,证明第二块SCSI硬盘添加成功并被操作系统识别 使用 fdisk 建立主分区,大小为5G。 将剩余的空间分给扩展分区 在扩展分区中建立新的逻辑分区大小为5G 写入分区表并退出fdisk工具 验证分区是否成功,会在/dev/目录中出现, sdb1、sdb2、sdb5 第三步 ,将分区完成后的空间格式化,成功分区后,接下来就是使用 mkfs.ext3 格式化 /dev/sdb1 为ext3系统 使用 mkswap 将逻辑分区 /dev/sdb5 设置为swap分区 使用 swapon激活swap分区:/dev/sdb5 第四步 , 查看swap分区的状态 任务完成,/dev/sdb5成功划分为swap交换分区 来源: https://www.cnblogs.com/DragonFire/p/6566678.html

u盘安装centos7出现dracut

自闭症网瘾萝莉.ら 提交于 2020-03-06 05:04:42
当出现上图的界面时,按顺序执行以下步骤: 1. cd dev 2. ls 3. 拔掉U盘 4. ls 消失的那个就是U盘的盘符(很多时候都是定位不到盘符..) 5. reboot 6. 安装界面按E vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64.check quiet 改为 vmlinuz initrd=initrd.img inst.stage2=/hd:/dev/sdbx(U盘盘符,x代表数字,也有可能是sdax,sdcx)quiet 来源: CSDN 作者: 菜菜菜菜菜鸡 链接: https://blog.csdn.net/qq_24084605/article/details/104678210

git 常用命令

不打扰是莪最后的温柔 提交于 2020-03-06 04:12:20
//初始化仓库的用户信息,——global选项是用来偷懒的,以后新建仓库就不需要重新制定了 git config --global user.name "StivenYang" git config --global user.email "StivenYang626@gmail.com" //初始化当前目录作为repod git init //向本地仓库提交更改 git commit -m "xxx" //查看当前是否有更改需要commit git status //查看FILE是否被更改,更改的哪几行 git diff FILE //git的版本控制,各种吃后悔药,哈哈 git reset --hard CommitId git reglog git checkout -- FILE //又是一个后悔药:撤销工作区制定文件做过的修改, -- 可是很重要的,不要忘记写了,不然就成了切换分支了哦:-) git reset HEAD FILE //强力后悔药:可以把已经提交到暂存区的修改给撤销,舒服吧? //git的工作区,暂存区,和仓库repod的理解 //添加远程仓库,很兴奋,有木有,有木有? ssh-keygen -t rsa -C "StivenYang626@gmail.com" //生成秘钥以后,需要把公钥添加到咱们的github setting或者码云