Linux驱动
文章平均质量分 65
biaotai
这个作者很懒,什么都没留下…
展开
-
Linux设备模型初始化流程
Linux设备模型初始化流程/* * Ok, the machine is now initialized. None of the devices * have been touched yet, but the CPU subsystem is up and * running, and memory and process management works. * * Now we can finally start doing some real work.. */static vo原创 2022-01-06 21:18:36 · 1284 阅读 · 0 评论 -
Linux内核启动中驱动初始化过程
Linux内核启动时驱动初始化过程一、驱动模块存在形式内核源码树中大部分内容为驱动代码,那么在内核中,每个驱动在内核编译时都是以如下的两种形式进行编译的:1、静态编译将驱动编译进内核;2、动态编译将驱动编译成可以在需要时动态插入到内核中的模块,即ko的形式;二、驱动内核初始化时是如何加载的?首先在do_initcalls中按照顺序依次加载内嵌驱动(串行),async_synchronize_full函数等待所有的async完成在向下执行;内核态,还未加载init进程 kernel_i原创 2022-01-22 11:02:37 · 3166 阅读 · 1 评论 -
Linux 设备驱动的固件加载-转载
作为一个驱动作者, 你可能发现你面对一个设备必须在它能支持工作前下载固件到它里面. 硬件市场的许多地方的竞争是如此得强烈, 以至于甚至一点用作设备控制固件的 EEPROM 的成本制造商都不愿意花费. 因此固件发布在随硬件一起的一张 CD 上, 并且操作系统负责传送固件到设备自身. 硬件越来越复杂,硬件的许...转载 2022-01-14 17:53:44 · 893 阅读 · 1 评论 -
cdev 结构体、设备号相关知识解析
一、字符设备基础知识 1、设备驱动分类 linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序: 字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。 块设备:是指可以从设备的任意位置读...转载 2020-11-16 10:43:38 · 226 阅读 · 0 评论 -
关于Linux设备号的几篇文章
(1)https://blog.csdn.net/qq_15062527/article/details/81479521?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.c原创 2020-11-13 10:58:48 · 70 阅读 · 0 评论 -
Linux内核中增加一个新的驱动模块
开发环境 开发板:A33-Vstar 开发板系统: Linux/arm 3.4.39 Kernel Ubuntu版本:Ubuntu14.04 ---------------------------------------------------- 新增内核驱动,并可以通过make menuconfig配置。 内核完整路径:~/A33-Vstar/dragonboard/...转载 2020-10-29 21:48:32 · 790 阅读 · 0 评论 -
以rpm包形式升级Linux驱动
一般在自己适配驱动或者升级驱动时,如果将所有的安装命令以及后续的依赖关系写在一个文件中,那么在现场环境中只需要执行一步命令即可,减少了现场维护人员操作步骤,那么这里想写的一个方法是将升级驱动的步骤打包成rpm包的形式;总体的步骤分为如下两步:1、编写SPEC文件;2、利用SPEC文件制作rpm包;本文参考的RPM打包原理的网址如下:https://blog.csdn.net/get_set/article/details/53453320以升级i40e驱动为例编写SPEC文件如下:Name:原创 2020-09-15 21:49:23 · 629 阅读 · 0 评论 -
使用docker环境编译驱动
使用docker环境编译驱动之前的文章中大概写了构建docker环境的方法和流程,那么我们可以使用搭建好的docker去编译适配特定内核版本的驱动;编译适配特定内核版本的驱动时,只需要安装对应的kernel-devel包即可。一般驱动代码中在Makefile文件或者common.mk文件中会指定编译所需要的内核源码地址,也就是安装kernel-devel包所生成的/lib/module下的目录。默认情况下为uname -r;我们在适配特定版本内核的驱动时只需要手动更改指定对应版本的BUILD_KER原创 2020-09-02 20:07:11 · 624 阅读 · 0 评论 -
linux开机时驱动的加载流程
Linux开机加载驱动时,涉及到了initramfs文件中包含的驱动以及硬盘中包含的驱动两个部分;而系统启动后手动加载驱动时只会用到硬盘中的驱动库,与initramfs无关。首先介绍下initramfs文件生成的原理及流程,然后在介绍下开机加载的流程及本地验证步骤。一、 initramfs文件生成原理1、 镜像安装时生成initramfs文件在安装镜像时,会去扫描所安装的服务器中在位的设备,系统会将扫描到的设备的驱动以及默认常用的一些驱动包含在initramfs文件中;解压initramfs文件后生成原创 2020-08-29 11:25:16 · 2622 阅读 · 0 评论 -
一次Linux驱动升级的问题记录
在Linux开机时驱动的加载过程中总结过驱动的加载方式,会涉及到initramfs文件中的驱动,因此在驱动升级的时候要考虑到initramfs文件中的驱动是否也对应的升级到对用的版本,这是本文想记录的一个点。linux开机时先去加载initramfs文件中的驱动,具体的流程如下图所示。因此我们需要注意的是在系统中升级完驱动后,要保证initramfs中的驱动进行更新。以i40e驱动为例,加入我们采用make&make install的方式在当前的环境上编译升级驱动时,i40e驱动的makef原创 2020-08-18 22:09:04 · 794 阅读 · 1 评论