Linux
文章平均质量分 80
eydwyz
AA123456123456
展开
-
Linux设备驱动模块自加载示例与原理解析
这里会向/sys/devices/platform/demo_device/uevent文件写入“add”,前文中已经看到这个文件是在注册demo_devices是调用platform_device_register()->platform_device_add()->device_add()->device_create_file()->sysfs_create_file创建的。最后分析驱动和设备的绑定以及设备节点(/dev/demo_device)是如何自动生成的。...转载 2022-07-20 17:36:57 · 2323 阅读 · 0 评论 -
linux驱动加载 动态加载 静态加载 自动加载
linux驱动加载 动态加载 静态加载 自动加载_luopandeng的博客-CSDN博客_linux驱动加载概述在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载。静态加载就是把驱动程序直接编译进内核,系统启动后可以直接调用。动态加载利用了Linux的module特性,可以在系统启动后用insmod命令添加模块(.ko),在不需要的时候用rmmod命令卸载模块。驱动加载静态加载过程将模块的程序编译到Linux内核中,也就是咱们在编译内核时选择Y的模块,静态由do_initcall函数加载。先来转载 2022-06-30 15:33:20 · 2262 阅读 · 0 评论 -
Linux MDIO PHY驱动分析
转载https://www.csdn.net/tags/MtTaEg4sODU2Mzg1LWJsb2cO0O0O.html参考phy基础知识总结 common register总结RTL8211F WOL(wake on lan)调试mdio网卡驱动或者独立的mdio驱动,首先会注册到系统总线,然后开始扫描总线上的PHY芯片,mdiobus_register mdiobus_scan get_phy_device get_phy_id phy_d转载 2022-05-18 16:45:49 · 3312 阅读 · 0 评论 -
Makefile中执行的命令以横杠-开头是什么意思
比如下面这个Makefile中的-rm-rf.PHONY: run cleanEXENAME = mainrun: make -C src/ all ./mainclean: make -C src/ clean -rm -rf $(EXENAME)忽略rm命令执行的退出状态原创 2022-05-16 18:11:15 · 336 阅读 · 0 评论 -
C45通过C22方式访问phy地址
static int eqos_mdio_read(struct mii_dev *bus, int mdio_addr, int mdio_devad, int mdio_reg){ struct eqos_priv *eqos = bus->priv; u32 val; int ret; ret = eqos_mdio_wait_idle(eqos); if (ret) { pr_er...原创 2022-05-13 19:47:24 · 2260 阅读 · 0 评论 -
有关PHY抽象层的总结
Purpose大多数网络设备由一组寄存器组成,这些寄存器提供到MAC层的接口,MAC层通过PHY与物理连接通信. PHY关注于与网络连接另一端的链路伙伴(通常是以太网电缆)协商链路参数,并提供注册接口以允许驱动程序确定选择了哪些设置,并配置允许的设置.虽然这些设备不同于网络设备,并且符合寄存器的标准布局,但是通常的做法是将PHY管理代码与网络驱动器集成. 这导致了大量的冗余代码. 此外,在具有连接到同一管理总线的多个(有时是完全不同的)以太网控制器的嵌入式系统上,难以确保总线的安全使用.由于PH转载 2022-05-13 15:47:03 · 1098 阅读 · 0 评论 -
国产之路:复旦微FMQL调试笔记1:PS网口
引言 FPGA,全程现场可编程门阵列,是指一切通过软件手段更改、配置器件内部连接结构和逻辑单元,完成既定设计功能的数字集成电路。换个简单通俗的介绍方式,就好比一个全能的运动员,FPGA就是这么神奇的可以通过设定而实现各种复杂的功能电路。FPGA的核心优点:可编程灵活性高、开发周期短、并行计算可编程灵活性高。同时FPGA也有自身的很多需要解决的问题,FPGA限制因素:成本、功耗和编程设计。现在已经在三个重要领域发挥着重量级作用:(1)通信设备的高速接口电路设计一般如果AD采样率高,数据速率高,这时就需要F翻译 2022-05-13 09:21:09 · 3670 阅读 · 1 评论 -
initrd和initramfs的区别
initrd和initramfs的区别_htttw的博客-CSDN博客_initrd和initramfsinitrd和initramfs的区别Linux内核在初始化之后会执行init进程,而init进程会挂载我们的根文件系统,但由于init程序也是在根文件系统上的,所以这就有了悖论。Linux采用两步走的方法来解决这个问题。Linux2.6版以前的方法是:除了内核vmlinuz之外还有一个独立的initrd.img映像文件,其实它就是一个文件系统映像,linux内核在初始化后会mount ini转载 2022-05-08 19:28:54 · 435 阅读 · 0 评论 -
PHY驱动调试之 --- MDIO/MDC接口22号和45号条款(一)
最近在调试一款Phy的驱动,从没有任何头绪到略有了解经历了太多的痛苦,于是决定写这个系列篇记录一下。特别感谢无数优秀的博主无私奉献很多优秀的博文给予了我很大的帮助。在这个系列篇中,我也会转载部分优秀的博文(会附上链接),以及增添自己的理解,如果部分内容有侵权的地方,麻烦联系我。概述管理MII接口的MDIO接口是一个双线的串行接口,用来对PHY芯片等物理层信息进行操作管理。MDIO的历史MDIO是Management Data Input/Output 的缩写,有两根线,分别为双向的MDIO和转载 2022-04-20 09:09:46 · 1139 阅读 · 0 评论 -
补丁(patch)的制作与应用
https://blog.csdn.net/zhao_h/article/details/80943226原创 2022-04-11 18:34:34 · 1079 阅读 · 0 评论 -
Linux应用程序——用户层操作GPIO
stm32mp157 盘古开发板 Linux内核版本4.19目录1、拜兔核i2SOM的wiki上关于gpio应用的说明2、gpio操作相关的数据结构3、测试代码:4、参考链接1、拜兔核i2SOM的wiki上关于gpio应用的说明链接:http://wiki.i2som.com/pages/viewpage.action?pageId=22479311以下是链接中的复制内容:GPIO操作在Linux系统上是常用功能,STM32MP1芯片平台也同样支持。从Linux 4..转载 2022-04-11 18:32:55 · 3891 阅读 · 0 评论 -
linux用户空间如何控制gpio?
linux用户空间如何控制gpio?_mob604756e8ada8的技术博客_51CTO博客1. 架构2. 有两种操作方法2.1 第一种: sysfs接口(旧, 已废弃)2.2 第二种: 字符设备接口(新)3. 如何使用sysfs接口控制gpio?3.1 确定要使用的gpio号(怎么知道gpio号呀?)3.2 将gpio号写入文件/sys/class/gpio/export中# echo 333 >/sys/class/gpio/export3.3 将gp.转载 2022-04-11 16:08:57 · 973 阅读 · 0 评论 -
linux简介_Linux的 bpftrace 简介
An introduction to bpftrace for Linux | Opensource.comlinux简介_Linux的bpftrace简介_cumj63710的博客-CSDN博客使用bpftrace进行内核跟踪_程序猿Ricky的日常干货-CSDN博客_bpftraceBpftrace是Linux的新开源跟踪程序,用于分析生产性能问题和故障排除软件。 它的用户和贡献者包括Netflix,Facebook,Red Hat,Shopify等,它是由Alastair转载 2022-02-25 14:48:41 · 1061 阅读 · 0 评论 -
linux kernel (make htmldocs)
转https://stackoverflow.com/questions/50163980/installation-and-usage-of-make-htmldocI just have figured it out that there is a document in the Linux kernel which explains the required information to use 'make pdfdocs':Reference: Documentation/doc-guid转载 2021-05-22 15:06:25 · 656 阅读 · 0 评论 -
进程间通信之popen和pclose函数
常见的操作是创建一个管道连接到另一个进程,然后读其输出或向其输入端发送数据,为此,标准I/O库提供了两个函数popen和pclose。这两个函数实现的操作是:创建一个管道,调用fork产生一个子进程,关闭管道的不使用端,执行一个shell以运行命令,然后等待命令终止。#include <stdio.h>FILE *popen(const char *cmdstring, const char *type);返回值:若成功则返回文件指针,若出错则返回NULLint pclose转载 2021-04-28 14:52:58 · 1565 阅读 · 0 评论 -
initrd和initramfs的区别
https://blog.csdn.net/htttw/article/details/7217706initrd和initramfs的区别Linux内核在初始化之后会执行init进程,而init进程会挂载我们的根文件系统,但由于init程序也是在根文件系统上的,所以这就有了悖论。Linux采用两步走的方法来解决这个问题。Linux2.6版以前的方法是:除了内核vmlinuz之外还有一个独立的initrd.img映像文件,其实它就是一个文件系统映像,linux内核在初始化后会mount ini.转载 2021-04-08 06:25:51 · 246 阅读 · 0 评论 -
emmc boot1 boot2 partition
使用mfg tool烧写android5.1的镜像之后,再使用旧版的mfg tool烧写linux或者android镜像,都不能正常启动,而且运行的uboot还是android5.1版本的uboot。参考链接http://www.itdadao.com/articles/c15a39492p0.htmlhttp://www.cnblogs.com/heiyue/p/5199851.html#undefinedhttp://www.cnblogs.com/heiyue/p/5830505.ht转载 2021-03-12 16:32:23 · 2212 阅读 · 0 评论 -
dd命令的解释
https://www.cnblogs.com/misswangxing/p/10911969.html一、dd命令的解释dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2参数注释:1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=o.转载 2021-03-11 18:10:40 · 270 阅读 · 0 评论 -
page_address()函数分析--如何通过page取得虚拟地址
https://blog.csdn.net/hbcbgcx/article/details/89200324由于X86平台上面,内存是划分为低端内存和高端内存的,所以在两个区域内的page查找对应的虚拟地址是不一样的。一. x86上关于page_address()函数的定义在include/linux/mm.h里面,有对page_address()函数的三种宏定义,主要依赖于不同的平台:首先来看看几个宏的定义:CONFIG_HIGHMEM:顾名思义,就是是否支持高端内存,可以查看confi.转载 2021-03-10 11:47:55 · 838 阅读 · 0 评论 -
cpu 乱序执行与问题
https://blog.csdn.net/lizhihaoweiwei/article/details/50562732“CPU执行乱序”是一个常见的话题,鉴于自己一直对这个概念存在些许理解的差池,故今日写一篇文章留作备忘。注,这里仅仅讨论CPU执行乱序,不涉及编译器的乱序。1.CPU 为什么会乱序?本质原因是CPU为了效率,将长费时的操作“异步”执行,排在后面的指令不等前面的指令执行完毕就开始执行后面的指令。而且允许排在前面的长费时指令后于排在后面的指令执行完。如在 CPU0 上执行下面两转载 2021-03-09 17:56:26 · 1215 阅读 · 0 评论 -
在linux下使用udev获取热插拔(hotplug)事件
https://blog.csdn.net/u012247418/article/details/80555556?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control&dist_request_id=43a1f2c7-77bf-4244-b079-7595b57d8dae&depth_1-utm_source=distribute.pc_relevant.none-task-bl...转载 2021-02-23 17:29:14 · 1147 阅读 · 0 评论 -
Unwind 栈回溯详解---good 博主的博客都很详细且深入
https://blog.csdn.net/pwl999/article/details/107569603文章目录1. 历史背景 1.1 frame pointers 1.2 .debug_frame (DWARF) 1.3 .eh_frame (LSB) 1.4 CFI directives 2. .debug_frame (DWARF) 详解 2.1 Call Frame Table 2.2 Call Frame Instructions 2.3 I.转载 2021-02-06 17:40:02 · 1239 阅读 · 0 评论 -
《性能之巅》学习笔记之Dtrace good
前言:《性能之巅》这本书,从推荐序开始,就不停的给Dtrace打广告,按照书中的描述,这是一个非常高级的调试工具,可以用于排查难以定位的线上问题。看到cpu这章,讲了一个应用场景。如果一个进程pidstat显示sys的CPU使用率很高,可以通过dtrace -n 'profile-997 / pid == xxx / {@[stack()] = count();}'打印进程的内核栈信息,看cpu都消耗在了什么方法上。于是我就在我的Centos虚拟机上执行了一下这个命令,结果居然返回'invali转载 2021-02-02 17:44:58 · 9610 阅读 · 1 评论 -
Docker 背后的内核知识——Namespace 资源隔离
Docker 背后的内核知识——Namespace 资源隔离Docker 这么火,喜欢技术的朋友可能也会想,如果要自己实现一个资源隔离的容器,应该从哪些方面下手呢?也许你第一反应可能就是 chroot 命令,这条命令给用户最直观的感觉就是使用后根目录 / 的挂载点切换了,即文件系统被隔离了。然后,为了在分布式的环境下进行通信和定位,容器必然需要一个独立的 IP、端口、路由等等,自然就想到了网络的隔离。同时,你的容器还需要一个独立的主机名以便在网络中标识自己。想到网络,顺其自然就想到通信,也就想到了进程间转载 2021-02-02 16:58:41 · 728 阅读 · 1 评论 -
Docker 背后的内核知识——cgroups 资源限制
Docker 背后的内核知识——cgroups 资源限制上一篇中,我们了解了 Docker 背后使用的资源隔离技术 namespace,通过系统调用构建一个相对隔离的 shell 环境,也可以称之为一个简单的“容器”。本文我们则要开始讲解另一个强大的内核工具——cgroups。他不仅可以限制被 namespace 隔离起来的资源,还可以为资源设置权重、计算使用量、操控进程启停等等。在介绍完基本概念后,我们将详细讲解 Docker 中使用到的 cgroups 内容。希望通过本文,让读者对 Docker 有转载 2021-02-02 16:57:13 · 662 阅读 · 0 评论 -
gdb调试coredump(使用篇)
什么是coredumpCoredump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里。 该文件也是二进制文件,可以使用gdb、elfdump、objdump或者windows下的windebug、solaris下的mdb进行打开分析里面的具体内容。 注:core是在半导体作为内存材料前的线圈,当时用线圈当做内存材料,线圈叫做core。用线圈...转载 2021-02-01 11:06:06 · 939 阅读 · 0 评论 -
linux代码在线查看 https://elixir.bootlin.com/linux/latest/source
https://elixir.bootlin.com/linux/latest/source转载 2020-08-13 16:41:56 · 3472 阅读 · 0 评论 -
V4L2框架-videobuf2
阅读原文https://blog.csdn.net/u013904227/article/details/81054611本文介绍在 v4l2 框架之下的数据流交互的实现与使用,主要目的是实现一个能够进行用户空间与内核空间进行数据交互、数据流格式设置、数据流 buffer 申请与释放、数据流开启与关闭的 video 设备驱动。02 - V4L2框架-media-device01 - V4L2框架-v4l2 device00 - V4L2框架概述简介videobuf2 用于连接 V4L2 驱动层转载 2020-12-21 09:16:18 · 553 阅读 · 0 评论 -
【ATU Book-i.MX8系列】 NXP i.MX8M Mini DRM driver解析(Part 1)
https://www.wpgdadatong.com/cn/blog/detail?BID=B1134【ATU Book-i.MX8系列】 NXP i.MX8M Mini 環境建置https://www.wpgdadatong.com/cn/blog/detail?BID=B1389【ATU Book-i.MX8系列】 UUU(Universal Update Utility)https://www.wpgdadatong.com/cn/blog/detail?BID=B1870【ATU ..转载 2020-12-10 11:29:40 · 2113 阅读 · 0 评论 -
使用udev实现显示器的热插拔和usb的自动挂载
udev:用来监听硬件设备是否发生改变,并可以给硬件设备命名 ,也可以在硬件发生改变之后执行脚本使用udev检测显示器是否发生变化,然后执行脚本,解决linux显示器热插拔问题先补充一点:[root@localhost ~]# cat /sys/class/drm/card0-VGA-1/statusconnectedconnectd 表示VGA口处于连接状态拔掉则显示disconnected 脚本里面可以通过这来判断显示器是否连接vim /etc/udev/rules.d/99.转载 2020-12-03 17:55:58 · 1666 阅读 · 0 评论 -
Libudev和sysfs指南
Libudev和sysfs指南 这是一篇译文,原文在:http://blog.csdn.net/fjb2080/article/details/7528894 在unix和类unix系统中,硬件设备可以通过/dev目录下的特殊文件进行访问,这些文件又被称为设备文件或设备节点。通过操作普通文件一样读写这些文件可以利用内核设备驱动程序与硬件设备通信,而这个过程不是读写磁盘上的数据,网上有许多描述/dev目录下文件细节的资源。以前,这些特殊文件是在系统安装的时候通过mkn...转载 2020-12-03 10:06:26 · 1074 阅读 · 0 评论 -
解决linux kernel代码过大,source insight同步时间太长,垃圾文件过多的问题
概述我们做linux开发都会使用神器sourceinsight,单就我而言,不用它,我就看不懂代码。若是单片机代码,使用source insight也许不会有什么烦恼。但linux kernel开发使用source insight看代码就会发现1、添加一个source insight工程是多么的痛苦,建立一个工程是非常巨大的,关联所有变量的时间是消耗不起的,短则1 - 2小时,长则4 5个小时。至少对于我来说非常难受,而且有时候抽风一下变量没有关联上,又得重新同步一下。这之间将会花掉非常多的时间。转载 2020-12-01 19:25:26 · 2761 阅读 · 5 评论 -
Linux命令大全 https://man.linuxde.net/
Linux命令大全 https://man.linuxde.net/原创 2020-11-06 17:05:06 · 1424 阅读 · 0 评论 -
mp3 在线编辑, 音效下载
mp3 在线编辑:https://mp3cut.net/音效下载http://sc.chinaz.com/原创 2020-10-31 15:43:21 · 306 阅读 · 0 评论 -
udev笔记
selinuxhttps://www.cnblogs.com/mingfeng002/p/6933429.html inotify主要功能https://blog.csdn.net/zhangyifei216/article/details/51423580 进程概述和内存分配 mtrace mallinfoopenathttps://blog.csdn.net/tlight/article/details/41380177 SMACK简介#include <fnmatch.h.原创 2020-10-28 19:48:04 · 136 阅读 · 0 评论 -
Linux 线程或者进程在固定的CPU上运行方法
https://blog.csdn.net/wanxuexiang/article/details/108590490文章目录Linux 线程或者进程在固定的CPU上运行方法 1 如何查看进程或者线程运行在哪个CPU上? 1.1 利用PS命令进行查看 1.2 利用top命令进行查看 1.3 利用 proc信息进行查看 2 利用 API 将线程和进程在固定的一个或者几个CPU运行 2.1 更改线程运行的CPU 2.1.1 pthrea.转载 2020-10-12 09:34:30 · 184 阅读 · 0 评论 -
Linux设备模型(3)_Uevent
1. Uevent的功能Uevent是Kobject的一部分,用于在Kobject状态发生改变时,例如增加、移除等,通知用户空间程序。用户空间程序收到这样的事件后,会做相应的处理。该机制通常是用来支持热拔插设备的,例如U盘插入后,USB相关的驱动软件会动态创建用于表示该U盘的device结构(相应的也包括其中的kobject),并告知用户空间程序,为该U盘动态的创建/dev/目录下的设备节点,更进一步,可以通知其它的应用程序,将该U盘设备mount到系统中,从而动态的支持该设备。2. Ueven转载 2020-09-16 20:45:45 · 363 阅读 · 0 评论 -
分布式系统中的死锁处理 (Wound/Wait Mutexes reservation.c )
1死锁发生的条件分布式计算机系统是一种具有多处理器并且各个处理器之间通过互连网络构建成一个具有整体功能的计算机系统。系统具有的优点是加快了处理的速度,简化了主机的逻辑结构,同时具有成本低和易于维护的特点,并且成为计算机应用领域发展中的一个重要方向。但是,在分布式环境下,由于通讯延迟的不确定性、地域的分布性以及资源和数据的高度共享性等影响因素的存在,使得死锁预防和检测变得极为困难。在分布式计算系统中,有两个以上的进程在并发执行,每个进程都在等待被其它的进程所占用的系统资源而不能继续运行,即导致系统中任何一转载 2020-09-16 15:38:24 · 1516 阅读 · 0 评论 -
Linux graphic subsystem(2)_DRI介绍
1. 前言上篇文章(Linux graphic subsytem(1)_概述)介绍了linux图形子系统基本的软件框架,以及GUI、Windowing system、3D渲染等基本概念。文中提到了linux DRI(Direct Render Infrastructure)框架,但限于篇幅,没有过多介绍。蜗蜗觉得,DRI在当前(或者说将来)的linux图形子系统中,有着举足轻重的地位,甚至可以说是新的linux图形框架核心思想的体现。本文将基于linux图形框架的发展历程,从Why、What和How转载 2020-09-03 19:35:04 · 657 阅读 · 1 评论 -
Linux kernel的中断子系统之(七):GIC代码分析
返回目录:《ARM-Linux中断系统》。总结:原文地址:《linux kernel的中断子系统之(七):GIC代码分析》参考代码:http://elixir.free-electrons.com/linux/v3.17-rc3/source一、前言GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1~V4(V2最多支持8个ARM core,...转载 2020-09-02 13:22:05 · 1299 阅读 · 0 评论