linux
文章平均质量分 78
飞翔的荷兰人号z
爱技术,爱生活,爱美剧,爱旅游
展开
-
Linux内核转储---空指针触发kdump
Linux内核转储---空指针触发kdump原创 2023-02-14 14:21:07 · 850 阅读 · 0 评论 -
usbmon+tcpdump+wireshark USB抓包
usbmon+tcpdump+wireshark USB抓包原创 2023-02-14 09:54:48 · 1238 阅读 · 0 评论 -
usbmon---Linux下USB数据传输监控
Linux下USB抓包工具原创 2023-02-14 09:41:12 · 2294 阅读 · 2 评论 -
我是穷人,可以不买开发板了吗?---QEMU 模拟arm系统
文章目录序言准备工作QEMU开始Linux内核U-boot 的修改及编译序言一直很佩服古人的那种豁达的情怀,就如《冒险雷探长》一集纪录片用作结束的一句话:“人人都是大忙人,忙着长大,弄丢了纯真;忙着赚钱,忽略了思想;忙着成功,错过了风景,岁月中的营养,匆忙间吃成了果腹的快餐。那些光阴中本该难忘的故事,就这样紧赶慢赶,没能抓住我们的影子。”正如赵秉文《青杏儿》中的词句:“风雨替花愁。风雨罢,花也应休。劝君莫惜花前醉,今年花谢,明年花谢,白了人头。乘性两三瓯。捡溪山好处追游。但教有酒身无事,有花也好,原创 2020-06-29 15:39:34 · 633 阅读 · 0 评论 -
三种进程--孤儿进程、僵尸进程、守护进程
文章目录三种进程孤儿进程僵尸进程守护进程需要注意地方三种进程孤儿进程孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将会成为孤儿进程。孤儿进程被 init 进程(进程号为1)所收养,并由 init 进程对它们完成状态收集工作。僵尸进程僵尸进程:一个进程使用 fork 创建子进程,如果子进程退出,而父进程并没有调用 wait 或 waitpid 获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。守护进程守护进程(daemon)原创 2020-05-14 10:13:36 · 283 阅读 · 0 评论 -
Linux设备驱动并发控制之Linux信号量与互斥体
文章目录信号量与互斥体信号量定义信号量初始化信号量获得信号量释放信号量信号量同步互斥体自旋锁与互斥体的使用选择信号量与互斥体在linux设备驱动代码中,为了解决竞态问题,途径是:保证对共享资源的互斥访问;所谓互斥访问是指一个执行单元在访问共享资源的时候,其他的执行单元被禁止访问。访问共享资源的代码区域被称为临界区,临界区需要被以某种互斥机制加以保护。中断屏蔽、原子操作、自旋锁、信号量、互斥...原创 2020-04-19 15:40:31 · 242 阅读 · 0 评论 -
Windows下Linux子系统构造交叉编译工具链(arm-linux-gcc)
Windows下Linux子系统构造交叉编译工具链(arm-linux-gcc)一、下载arm-linux-gcc-4.3.2.tar.bz2,然后解压到/usr/local/目录下,使用命令: sudo tar -jxvf arm-linux-gcc-4.3.2.tar.bz2 -C / 默认安装到/usr/local/arm 目录下二、然后赋予/usr/local/arm/ 文件...原创 2020-02-16 14:43:22 · 3005 阅读 · 0 评论 -
Linux内核移植
Linux内核移植Linux内核启动过程在移植Linux之前,先了解它的启动过程。Linux的启动过程分为两部分:架构/开发板相关的引导过程、后续的通用启动过程。如下图所示是ARM架构处理器上Linux内核vmlinux的启动过程。之所以强调是vmlinux,是因为其他格式的内核在进行与vmlinux相同的例如流程之前会有一些独特的操作。比如对应压缩格式的内核zImage,它首先自解压得到vm...原创 2019-12-13 15:06:41 · 399 阅读 · 0 评论 -
嵌入式之linux用户空间与内核空间,进程上下文与中断上下文
文章目录前言用户空间与内核空间内核态与用户态进程上下文和中断上下文上下文原子进程上下文中断上下文进程上下文VS中断上下文原子上下文前言之前在学习嵌入式linux系统的时候,一直对于中断上下文,进程上下文很迷,听着都很熟悉,但是强行让自己去解释着写概念总是很难去说清,所以奔着弄清楚这几个概念的目的,在网上看了好多的资料。对于这些概念的学习是一个不断累积的过程。用户空间与内核空间我们知...原创 2019-07-21 20:39:59 · 453 阅读 · 0 评论 -
Linux字符设备驱动编(步骤,框架(面向对象),分层)
文章目录Linux字符设备驱动编程步骤、Linux程序框架的概念面向对象代码实现(伪代码)Linux字符设备驱动编程步骤、实现入口函数 xxx_init() 和卸载函数 xxx_exit()申请设备号 register_chrdev_region (与内核相关)注册字符设备驱动 cdev_alloc,cdev_init,cdev_add (与内核相关)利用 udev/mdev 机制创建...原创 2019-08-15 17:09:15 · 262 阅读 · 0 评论 -
linux高级字符驱动之输入子系统
文章目录输入子系统的作用和框架框架输入子系统的编程方式输入子系统的作用和框架什么是输入设备按键/keyboardmousetouchscreen(触摸屏):gt811,ft56xxjoystick 游戏杆有多个输入设备需要驱动的时候,假如不考虑输入子系统gt811设备号,创建文件,硬件初始化,实现fop,阻塞,硬件初始化(I2C等)ft56xx设备号,创建文件,...原创 2019-08-18 14:13:50 · 194 阅读 · 0 评论 -
linux输入子系统多按键
文章目录linux输入子系统:驱动多个按键linux输入子系统:驱动多个按键驱动多个按键一个按键有多个与其相关的元素:中断号码按键状态按键的值input_dev的详细描述如下图在设备树文件中增加以下信息:按键定义配置信息如下key_int_node{ compatible = "test_key"; #address-cells = <1>; /...原创 2019-09-09 13:49:52 · 528 阅读 · 0 评论 -
linux内核源代码输入子系统分析(linux源码分析)
文章目录linux内核代码分析代码跟读方式分层分析分析:evdev.c中evdev_connect() ---属于input handler层应用程序中调用输入子系统的代码,数据是如何传递给用户层的linux内核代码分析代码跟读方式带着问题去读做好笔记和画图驱动联系应用,应用是调用的,驱动是实现的分层分析Input handler层:/driver/input/evdev.c...原创 2019-09-09 21:46:16 · 356 阅读 · 0 评论 -
linux I2C子系统(及相关程序设计MPU6050)
文章目录linux I2C子系统框架在设备树中添加从设备信息,mpu5060I2C driver 程序的编写mpu6050 I2C程序具体实现linux I2C子系统框架在之前的一篇文章中记录了 I2C协议相关内容,这里记录一下I2C在linux系统上I2C子系统框架,经过总结,I2C子系统框架可以总结为如下一张图五层(其实是三层,不算应用层和硬件层)应用层i2c driver层...原创 2019-09-14 20:46:55 · 601 阅读 · 0 评论 -
linux驱动之设备树
文章目录linux驱动之设备树设备树的由来---什么是设备树Linux设备树的由来---为什么会有设备树快速编译设备树---DTC(device tree compiler)快速了解设备树---编译设备树文件dtb使用的过程设备树语法及内部构成设备树语法设备树实战linux驱动之设备树设备树的由来—什么是设备树Open Firmware Device Tree 开发固件设备树(1)Dev...原创 2019-09-22 18:59:42 · 977 阅读 · 2 评论 -
linux内核之并发与竞态详述
文章目录竞 态信号量和互斥体Linux信号量的实现信号量初始化自旋锁自旋锁的API自旋锁初始化使用信号量与自旋锁的时机锁的顺序规则竞 态为了详细叙述竞态的概念,我们结合一段 write函数中的片段分配内存的代码来解释:if(!dptr->data[s_pos]){ dptr->data[s_pos] = kmalloc(quantum,GFP_KERNEL); if(!dp...原创 2019-05-12 15:09:31 · 200 阅读 · 0 评论 -
Linux内核配置编译初探
文章目录内核配置问题怎么配置内核具体实现三种image关系内核配置问题在进行 linux 内核配置时,我们需要思考几个问题:(1)配置哪些目录需要编译(2)配置哪些文件需要编译(3)编译时,到底文件时哪个目录比如 <mach/hardware.h>解决方法:Makefile make主目录 Makefilearch下的Makefile相关联通过 in...原创 2019-05-13 21:37:28 · 219 阅读 · 0 评论 -
Linux安装tengine(centos)
文章目录Linux安装tengine步骤Linux安装tengine步骤首先linux需要安装 tengine 依赖的包(通过 yum 安装)[root@localhost ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel解压 tengine 包[root@localhost ~]# tar -zxvf ten...原创 2019-05-08 21:06:15 · 544 阅读 · 0 评论 -
linux驱动程序函数之字符驱动程序的设计
文章目录linux驱动程序的分类驱动程序的安装linux驱动程序的使用及设备号等设备号的分配创建设备文件(2种方法)linux驱动程序的分类字符设备驱动网络接口驱动块设备驱动Linux系统将设备分为三种类型,每个模块通常实现为其中的某一类:字符模块、块模块、网络模块,这三种类型如下:字符设备字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实...原创 2019-04-15 21:49:01 · 425 阅读 · 1 评论 -
uboot之uboot目录及uboot基础命令(mini6410)
文章目录什么是ubootuboot源码目录uboot的编译(基于mini6410)uboot中的常用命令什么是ubootU-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就...原创 2019-04-12 21:39:08 · 469 阅读 · 0 评论 -
基于mini6410的Linux内核与根文件系统制作(linux 2.6.38)
文章目录内核制作文件系统的介绍制作根文件系统busybox的buzhong补充说明内核制作一、清除此前内核的留下的文件及补丁等(make distclean) xxx@xxx-virtual-machine:~/mini6410/linux-2.6.38$ make distclean二、进行内核的配置(make menuconfig ARCH=arm ) xxx@xxx-v...原创 2019-04-13 14:05:06 · 240 阅读 · 0 评论 -
USB驱动程序设计之二(Linux USB架构及相关的USB协议)
文章目录Linux USB架构Mass StorageUSB HID(Human Interface Device)RNDISLinux USB架构Mass Storage开发板作为Host 主机时,在开发板中插入U盘进行试验。一、Mass storage 介绍mass storage 是USB协议中的一部分, 是大容量存储器或者海量存储器的意思。我们的U盘就是利用的这个协议开发和制...原创 2019-04-13 21:15:14 · 1302 阅读 · 0 评论 -
linux中进程控制和进程调度(包含一些面试基础题)
文章目录进程控制进程和程序:进程和线程的区别:进程的四要素Current进程的创建进程销毁进程调度调度策略调度类调度时机进程控制进程和程序:程序是存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体。进程是一个执行中的程序。它是动态的实体。进程和线程的区别:进程是资源分配的最小单位,线程是调度的最小单位。在linux系统中,进程有独立的用户空间,如果没有独立的用户空间,但是有用...原创 2019-04-17 10:01:02 · 1707 阅读 · 0 评论 -
linux内核重要函数(kmalloc等)
文章目录内核内存分配函数永久内存映射区内核链表内核定时器度量时间差延时执行内核内存分配函数函数名 kmalloc头文件<linux/slab.h>函数原型: void *kmalloc(size_t size,int flags)参数:(1)size:需要分配的内存大小(2)flag:分配标志,它控制 kmalloc 的行为GFP_ATOMIC:用来在进程上下文中...原创 2019-04-14 17:37:06 · 1606 阅读 · 0 评论 -
USB驱动程序设计之三USB鼠标驱动程序设计
文章目录USB驱动程序简介USB驱动程序描述USB设备列表注册驱动Linux USB 描述符设备描述设备描述**配置描述:**接口描述接口设置接口描述符端点描述USB URBURB定义URB处理流程创建URB初始化URB提交URB处理URBUSB鼠标驱动程序分析设计USB驱动程序简介USB设备驱动程序(层次划分)USB设备驱动程序位于不同的内核子系统和USB主控制器之间,USB核心为USB...原创 2019-05-02 14:40:08 · 869 阅读 · 0 评论 -
linux设备模型之总线设备驱动模型
文章目录总线总线的描述总线的注册/删除总线方法总线属性实例:创建总线总线总线是处理器和设备之间的通道,在设备模型中,所有的设备都通过总线相连,甚至是内部虚拟的“platform”总线。在Linux设备模型中,总线由 bus_type 结构表示,定义在<linux/device.h>中。总线的描述总线的注册/删除总线的注册使用:bus_register(struct bu...原创 2019-04-23 16:46:08 · 293 阅读 · 0 评论 -
linux设备模型之kobject与kset
文章目录sysfs文件系统kobject在 kobject 和 kset 之前,先介绍与它们相关联的 sysfs 文件系统sysfs文件系统linux2.6内核引入了sysfs文件系统,sysfs被看成是与proc同类别的文件系统。Sysfs把连接在系统上的设备和总线组织成分级的文件,使其从用户空间可以访问到。sysfs被加载到/sys/目录下,它的子目录包括:Block:在系统中发现...原创 2019-04-18 20:04:54 · 400 阅读 · 0 评论 -
linux网络驱动之网卡驱动程序的设计
文章目录设备描述设备注册sk_bufferskb操作函数设备打开数据发送数据接收接收流程中断处理设备描述每个网络接口都由一个 net_device(位于 <linux/netdevice.h>头文件的的第840行) 结构描述,该结构可用于如下内核函数动态分配:*struct net_device *alloc_netdev (int sizeof_priv,const char...原创 2019-05-02 19:19:59 · 676 阅读 · 0 评论 -
linux网卡驱动之CS8900A网卡驱动程序
文章目录CS8900A芯片介绍以太网帧CS8900A寄存器代码分析CS8900A芯片介绍CS8900芯片是Cirrus Logic公司生产的一种局域网处理芯片,在嵌入式领域中使用非常常见。它的封装是100-pin TQFP,内部集成了在片RAM、10BASE-T收发滤波器,并且提供8位和16位两种接口,一般在单片机中,使用了CS8900的8位接口模式。该芯片突出特点:使用灵活其物理层接...原创 2019-05-03 14:23:20 · 419 阅读 · 0 评论 -
linux输入子系统
文章目录输入子系统设备描述设备注册、注销驱动实现事件支持报告事件报告结束实例分析输入子系统为了实现按键、触摸屏、鼠标等输入型设备的驱动程序设计,linux推荐使用的方法是input输入子系统。输入型设备都可以利用input接口函数来实现设备驱动。体系结构输入子系统由驱动层,**输入子系统核心层(input core)和事件处理层(event handler)三部分组成。**一个输入事件...原创 2019-05-03 15:51:22 · 269 阅读 · 0 评论 -
linux设备模型之platform驱动程序
文章目录platform总线platform驱动的设计流程平台设备描述平台设备资源平台驱动描述平台驱动注册platform代码展示platform总线platform 驱动与传统的设备驱动模型相比,优势在于 platform 机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序使用这些资源时使用统一的接口,这样提高了程序的可移植性。platform驱动的设计流程platform_d...原创 2019-04-24 14:36:08 · 208 阅读 · 0 评论 -
linux设备驱动之mini6410按键驱动程序(普通版与输入子系统版)
文章目录mini6410硬件资源配置寄存器配置GPIO口按键驱动程序应用程序mini6410硬件资源按键驱动用到的是中断处理,中断处理的函数学习在上一篇博客中断处理中有,可以参考中断处理函数描述总共有 8 个用户测试用按键,它们均从 CPU 中断引脚直接引出,属于低电平触发,这些引脚也可以复用为 GPIO 和特殊功能口。硬件显示图如下:配置寄存器GPNCON为GPN的配置寄存器,...原创 2019-04-25 16:50:21 · 281 阅读 · 0 评论 -
linux 内核基础
linux基础linux 由用户空间和内核空间构成,两者进行切换可以通过:系统调用硬件中断用户空间可以划分为:应用程序c库(glibc)内核空间可以分为系统调用接口内核体系结构相关代码再补充一下ARM的七种工作模式:(1)用户模式(usr) (2)快速中断(fiq) (3)外部中断(irq)(4)管理模式(svc)(5)数据访问中止(abt)(6)系统模式(sys...原创 2019-04-12 09:00:11 · 153 阅读 · 0 评论