自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zifehng的专栏

虚心若愚,求知若渴

  • 博客(31)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 记录一次失败的系统抢救/折腾经历

一、事故起因大概描述下事故起因:win10/ubuntu16.04双系统,分别安装在两块256Gb大小的NVME SSD上,以UEFI模式Grub2引导。某天我心血来潮,想要验证核显与独显是否能一起工作,多次在系统启动过程中强制下电(作死行为。。。),终于在一次强制下电后,win10无法启动了,而且连安全模式都无法进入,一直卡在蓝屏界面。蓝屏界面提示如下:你的设备/电脑需要修复作为一...

2019-01-26 15:18:23 8264 1

原创 UEFI安装Win10/Ubuntu16.04双系统记录

本文基于以下硬件环境:   主板:华硕ROG B250G   硬盘:浦科特M8PEG 256g(NVME M.2)1. 操作系统相关科普为安装双系统,我在网上查了许多资料,一些名词似曾相识却又不解其意,特在此总结下:UEFI(Unified Extensible Firmware Interface):全称“统一的可扩展固件接口”,是EFI的升级版,用于取代传...

2018-03-11 11:27:51 18054 5

原创 device_create()、device_register()、deivce_add()区别

在字符设备驱动开发的入门教程中,最常见的就是用device_create()函数来创建设备节点了,但是在之后阅读内核源码的过程中却很少见device_create()的踪影了,取而代之的是device_register()与device_add()

2017-06-28 15:00:27 14640

原创 Linux内核input子系统浅析

input子系统分为三层:设备驱动层、核心层、事件处理层

2017-06-05 16:48:44 1275 1

原创 Android ueventd浅析

在linux2.6之后,udev取代了devfs,但是在android中却没有udev或者mdev1,而是由ueventd进程实现了类似功能(管理设备节点权限、创建设备节点)。

2017-05-19 11:37:08 6507 1

原创 input子系统事件处理层(evdev)的环形缓冲区

在事件处理层(evdev.c)中结构体evdev_client定义了一个环形缓冲区(circular buffer),其原理是用数组的方式实现了一个先进先出的循环队列(circular queue),用以缓存内核驱动上报给用户层的input_event事件。struct evdev_client { unsigned int head; // 头指针...

2017-04-14 10:15:32 2380 1

原创 request_firmware()——Linux固件子系统接口函数分析

一些不带内置存储的设备,依赖于驱动预加载的固件才能运行,传统做法是将固件二进制码作为一个数组编译进驱动代码,这种方法图一时省力,却为后续的维护升级带来了麻烦。针对这种情况,在内核中其实早有解决办法,request_firmware()是一套成熟的固件加载方案:将固件以二进制文件形式存储于文件系统之中,在内核启动后再从用户空间将固件传递至内核解析固件,最后加载至硬件设备。

2017-03-04 10:33:51 17310 1

原创 ioctl()分析——从用户空间到设备驱动

  一个字符设备驱动通常会实现常规的打开、关闭、读、写等功能,但在一些细分的情境下,如果需要扩展新的功能,通常以增设ioctl()命令的方式实现,其作用类似于“拾遗补漏”。在文件I/O中,ioctl扮演着重要角色,本文将以驱动开发为侧重点,从用户空间到内核空间纵向分析ioctl函数。 用户空间的ioctl()#include <sys/ioctl.h> int i...

2017-03-02 17:43:09 27842 11

原创 K3部署Samba

K3安装Samba服务器及配置

2022-10-03 17:12:39 661 1

原创 对一致性DMA映射与流式DMA映射的一些粗浅认识

我在近期的工作中接触到了以下两种DMA映射的API:一致性DMA映射dma_alloc_coherent()流式DMA映射dma_map_single()进而想要简单了解下其中的原理,最重要的是想弄明白两者之间的区别。经过一番搜索,在大名鼎鼎的《Linux Device Drivers》与内核源码文档<dma-api-howto.rst>中找到了DMA映射相关的描述,但内容却不符合我心意,其描述重点在于API用法、在于“注意事项”,对于原理解析只有寥寥数笔,无法通过资料直

2021-10-05 17:42:08 2536 2

原创 初识Systemd

前言依Linux系统惯例,带字母d的一般为守护进程(daemon),Systemd即为System Daemon,是Linux下的一款系统和服务管理器,用于取代传统的Init组件。Systemd功能强大,诸如Gnome桌面、用户登录管理、网络服务都已集成其中,甚至后续udev也要加入Systemd的"豪华套餐"。不过开源社区对于Systemd则是充满了争议:有人认为它有利于Linux系统标准化;有人则认为它管的太多——不符合UNIX“keep simple, keep stupid"的设计哲学,总之是

2020-05-13 12:03:57 1490

原创 Centos7.3串口无输出问题解决方案

鄙人从事内核驱动开发工作,所使用的调试服务器为CentOS7.3,只有在BIOS启动阶段有串口日志,进入OS之后就没有了。某日,所写的驱动一加载就会导致系统重启,由于看不到内核panic日志,调试很是棘手,当时因为临近deadline,不得已一行一行代码debug,费了好大功夫才修复驱动加载的问题。后来得闲,深入研究了下,发现原来是在内核启动时没有传递串口相关参数,解决方案很简单——只需要修改...

2019-01-26 18:10:33 3507

原创 Linux系统通过远程终端修改分辨率

最近的工作是测试服务器的板载GPU,由于一切处于开发阶段,连USB驱动都没有,无法通过键鼠操作,切换桌面分辨率成了一项难题。用谷歌、用百度,总算找到了一个在远程终端修改分辨率的方法,在此记录:修改DISPLAY环境变量由于通过远程终端登录,DISPLAY环境变量不是指向GPU输出的终端,我们可以手动修改DISPLAY环境变量,以达到在当前远程终端上控制GPU输出的目的,在单显卡单显示器的场...

2018-12-23 19:10:25 2896 1

原创 Centos7.3搭建Samba服务器

1. 安装Samba$ yum install samba samba-client samba-common 2. 启动Samba服务查看Samba服务运行状态$ systemctl status smb.service此时Samba状态显示为&amp;quot;disable&amp;quot;,接下来我们启动Samba服务。启动Samba$ systemctl start smb.service...

2018-12-16 17:16:20 1711

原创 C编程的预处理技巧

1. 宏定义中的特殊符号1.1 “#”符号&amp;amp;amp;amp;amp;quot;#&amp;amp;amp;amp;amp;quot;的作用是将宏参数转为字符串常量。#define STRING(argument) #argumentchar *p = STRING(hello);将宏STRING展开:char *p = &amp;amp;amp;amp;amp;quot;hello&amp;amp;amp;amp;amp;quo

2018-11-24 17:52:23 1041

原创 linux环境下交叉编译arm架构jpeglib

1. 官网下载jpeglib源码下载地址http://www.ijg.org/选择目前最新的版本jpegsrc.v9c.tar.gz2. 配置$ ./configure --prefix=~/tool/jpeg/ --host=arm-linux CC=arm-linux-gcc参数说明:–prefix指定安装目录,如果不指定则默认安装在/usr/local/目录下–hos...

2018-11-10 11:03:42 1730

原创 VirtualBox报错“kernel driver not installed(rc=-1908)”

软件环境:   Ubuntu16.04   VirtualBox5.1.34 安装VirtualBox在打开虚拟机时出现如下错误提示: 先按照提示用root权限执行modprobe vboxdrv重新加载模块,却又提示无法找到vboxdrv模块, 于是尝试重新安装软件包virtualbox-dkms:$ sudo apt install --reinstal...

2018-04-06 19:13:51 9607

原创 Ubuntu安装/卸载命令笔记

联网安装$ sudo apt-get install package安装本地deb包$ sudo dpkg -i package.deb卸载$ sudo apt-get remove package$ sudo dpkg -r package卸载&amp;amp;清除配置文件$ sudo apt-get remove --purge pack...

2018-03-13 10:24:24 2589

原创 git使用简要笔记

1. 使用ssh协议连接github生成ssh公钥$ ssh-keygen生成的公钥文件为: ~/.ssh/id_rsa.pub在github中添加公钥 进入github网站-》点击Settings-》点击SSH and GPG Keys-》点击New SSH key,将id_rsa.pub中的内容复制其中克隆远程仓库$ git clone git@github...

2018-03-09 15:57:05 260

原创 Android终端命令:使用mount命令以读写方式重新挂载/system分区

使用mount命令以读写方式重新挂载/system分区

2017-06-30 09:44:35 45845 2

原创 Android终端命令: am与pm

am与pm命令

2017-06-27 09:57:30 644

原创 Android make清除命令

本文基于Android5.1.1,其他版本仅供参考

2017-06-15 11:08:16 13667

原创 Ubuntu开发环境搭建记录

本文基于Ubuntu16.04LTS,其他版本仅供参考

2017-06-14 15:32:10 275

原创 shell命令:暂停进程执行

挂起进程并放入后台$ ctrl+z查看后台进程$ jobs使第N个任务在后台运行(N为jobs显示的进程编号,如bg、fg命令不带参数%N则默认对最后一个进程操作)$ bg %N使第N个任务在前台运行$ fg %N

2017-06-08 10:36:26 3952

原创 内核驱动上报EV_LED事件失败原因分析

内核驱动上报EV_LED事件失败原因分析

2017-05-26 10:49:25 1428

原创 Android添加新键值

Android添加新键值

2017-04-20 17:48:35 1422

原创 Linux下使用脚本批量更改文件名

一个简单的脚本,批量更改文件名a为b

2017-03-14 10:34:36 1036

原创 Ubuntu下使用VirtualBox的小技巧

Ubuntu下使用VirtualBox的小技巧

2017-03-10 15:56:41 1352

原创 Linux内核log等级与printk打印消息控制

Linux预定义的内核log等级与printk打印消息控制

2017-03-07 14:30:51 10810

原创 Linux内核错误码与错误指针

在内核中定义了一些列错误码,以指示不同的出错情况,同时还定义了相关的错误指针

2017-03-06 15:52:40 3995 2

原创 gpio_request()简单分析

一、软件环境Andorid Version:5.0Cpu & Arch:Intel X86_64二、File Pathinclude/linux/gpio.hinclude/asm-generic/gpio.hdrivers/gpio/gpiolib.c三、代码分析 int gpio_request(unsigned gpio, const

2015-01-28 10:38:00 14434 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除