linux学习笔记
うちは止水
写博客只是为了工作和学习做下记录,方便以后查找回忆。
展开
-
cyttsp 固件手动升级
【代码】cyttsp 固件手动升级。原创 2024-02-01 18:03:27 · 318 阅读 · 0 评论 -
alsa sound修改--period-size上限配置
RCar-H3 alsa-sound --period-size max修改。原创 2023-02-11 15:03:01 · 617 阅读 · 0 评论 -
pack 字节对齐
pack 字节对齐原创 2022-08-25 10:03:42 · 464 阅读 · 0 评论 -
Amba平台cyttsp裸机驱动移植
【代码】Amba平台cyttsp裸机驱动移植。原创 2022-08-25 09:23:13 · 420 阅读 · 0 评论 -
cyttsp MCU裸机触摸驱动
【代码】cyttsp MCU裸机触摸驱动。原创 2022-08-25 09:20:14 · 431 阅读 · 0 评论 -
linux系统多主机网络通信配置
主机多系统之间,多网卡进行通信原创 2022-06-15 14:57:40 · 391 阅读 · 0 评论 -
linux系统读写eth网卡PHY寄存器工具mdio_mmd_indirect
#include <sys/types.h>#include <sys/socket.h>#include <sys/ioctl.h>#include <linux/if.h>#include <linux/mii.h>#include <linux/sockios.h>#include <errno.h>#include <stdio.h>#include <string.h>.原创 2021-11-17 11:13:27 · 16862 阅读 · 0 评论 -
linux系统读写eth网卡PHY寄存器工具mdio_cmd
在用户层访问smi/mdio总线, 读写phy芯片寄存器的通用代码。Linux内核2.6以上通用。mdio_cmd.c#include <sys/types.h>#include <sys/socket.h>#include <sys/ioctl.h>#include <linux/if.h>#include <linux/mii.h>#include <linux/sockios.h>#include <原创 2021-11-17 11:11:10 · 3143 阅读 · 0 评论 -
linux磁盘IO测试工具fio交叉编译
如何使用请参考以下文章https://www.cnblogs.com/xuyaowen/p/fio-usage.html1. 下载源码地址https://github.com/axboe/fio.githttp://git.kernel.dk/cgit/fio/2. configure配置通过./configure --help 查看帮助在当前路径下创建out文件./configure --host=arm-linux --cross-prefix=/home/lb008原创 2021-08-20 16:24:24 · 3032 阅读 · 0 评论 -
linux下drivers/gpio/gpiolib.c上再封装一层user gpio驱动
每个SOC芯片厂家BSP包,基于drivers/gpio/gpiolib.c下封装一层属于自己的GPIO驱动。生成的驱动节点一般在/sys/devices/platform/gpio/gpioxxx上层应用程序可以通过该节点下的value:/sys/devices/platform/gpio/gpioxxx/value,来对GPIO引脚进行输出电平控制。但是xxx是底层驱动通过某个公司换算出来的一组数值,用户无法明确知道对应的是哪个GPIO口。所以可以自己在SOC厂家的驱动基础上再封装一层,原创 2021-01-01 18:08:54 · 576 阅读 · 0 评论 -
linux驱动添加延迟队列monitor(Add delay worker for gmsl)
通过delay work实现在linux驱动中添加周期处理函数(monitor)#include <linux/delay.h>#include <linux/gpio/consumer.h>#include <linux/i2c.h>#include <linux/interrupt.h>#include <linux/irq.h>#include <linux/kernel.h>#include <li.原创 2020-11-02 23:44:52 · 471 阅读 · 0 评论 -
GPIO口工作原理的超详细解释(附电路图)
STM32的GPIO介绍STM32引脚说明GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其..原创 2020-10-08 16:24:37 · 8647 阅读 · 0 评论 -
docker搭建工程编译环境
一、必要工具docker下载安装1.1 下载安装docker工具sudo apt install apt-transport-https ca-certificates curl software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] https://downl原创 2020-09-25 14:31:16 · 673 阅读 · 0 评论 -
根据udev机制创建video camera设备节点软链接
一、列出设备所有属性,用来编写udev规则# udevadm info -a -n [device name]将 [device name] 替换为系统中存在的设备,比如 /dev/sda 或 /dev/ttyUSB0。如果你不知道设备名,你也可以列出某个系统路径的属性:-a :所有属性-n:后面跟设备节点node查看video设备节点所有属性# udevadm info -a -n /dev/video16root:/ # udevadm info -a -n /de原创 2020-09-22 10:39:49 · 929 阅读 · 0 评论 -
linux系统oops panic 奔溃问题调查objdump工具使用demo脚本
用法:./objdump-function.sh vmlinux symbolsymbol指定要找的函数名vmlinux=$1 symbol=$2 #source /opt/poky/1.6.1/environment-setup-cortexa15hf-vfp-neon-poky-linux-gnueabiif [ -z "$vmlinux" ]; then echo "usage : $0 vmlinux symbol" exit fi start...原创 2020-09-15 15:23:39 · 259 阅读 · 0 评论 -
maxim 美信IC 远端设备访问条件(gmsl协议)
硬件条件:1. BWS2. HIM3. DBL确认以上三个硬件回路设计电平接口是否一致。软件条件:1. 是否使能反向控制通道原创 2020-09-15 15:19:12 · 523 阅读 · 2 评论 -
linux内核wait_event_interruptible和wake_up_interruptible的使用,实现内核两个进程间的交互
内核中使用wait_event_interruptible和wake_up_interruptible接口函数,来实现内核两个进程之间的交互。代码实现:/* 声明一个工作队列入等待*/static DECLARE_WAIT_QUEUE_HEAD(my_wq);static volatile int wq_condition = 0;void thread1(){ for(;;){ /*进入休眠等待*/ wait_event_interrupti原创 2020-09-06 22:48:58 · 753 阅读 · 0 评论 -
Linux 字符设备驱动结构(四)—— file_operations 结构体知识解析
前面在Linux 字符设备驱动开发基础 (三)—— 字符设备驱动结构(中),我们已经介绍了两种重要的数据结构struct inode{...}与 struct file{...} ,下面来介绍另一个比较重要数据结构struct _file_operationsstruct _file_operations在Fs.h这个文件里面被定义的,如下所示: struct file_operations { struct module *owner;//拥有...转载 2020-09-06 20:04:18 · 510 阅读 · 0 评论 -
Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析
前面我们学习了字符设备结构体cdevLinux 字符设备驱动开发 (一)—— 字符设备驱动结构(上) 下面继续学习字符设备另外几个重要的数据结构。 先看下面这张图,这是Linux 中虚拟文件系统、一般的设备文件与设备驱动程序值间的函数调用关系; 上面这张图展现了一个应用程序调用字符设备驱动的过程, 在设备驱动程序的设计中,一般而言,会关心 file 和 inode 这两个结构体 用户空间使用 open() 函数打开一个字符设备 fd =...转载 2020-09-06 20:00:56 · 170 阅读 · 0 评论 -
Linux 字符设备驱动结构(二)—— 自动创建设备节点
上一篇我们介绍到创建设备文件的方法,利用cat /proc/devices查看申请到的设备名,设备号。第一种是使用mknod手工创建:mknod filename type major minor第二种是自动创建设备节点:利用udev(mdev)来实现设备文件的自动创建,首先应保证支持udev(mdev),由busybox配置。 具体udev相关知识这里不详细阐述,可以移步Linux 文件系统与设备文件系统 —— udev 设备文件系统,这里主要讲使用方法。 在...转载 2020-09-06 19:59:46 · 173 阅读 · 0 评论 -
Linux 字符设备驱动结构(一)
一、字符设备基础知识1、设备驱动分类 linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序:字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。块设备:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U盘和SD卡等。每一个字符设备或块设备都在/dev目录下对应一个设备文件。linux用户程序通过设...转载 2020-09-06 19:56:09 · 149 阅读 · 0 评论 -
带参数加载驱动模块
内核允许对驱动程序指定参数,而这些参数可在装载驱动程序模块时改变。这些参数的值可在运行insmod或modprobe命令装载模块时赋值,而modprobe还可以从它的配置文件(/etc/modprob.conf)中读取参数值。这两个命令可在命令行接受几种参数类型的赋值。hello world例子程序:#include <linux/init.h>#include <linux/module.h>#include <linux/moduleparam.h>原创 2020-08-30 22:46:06 · 341 阅读 · 0 评论 -
modprobe和insmod之间的区别,rmmod和lsmod介绍
他们的区别在于,modprobe会考虑要装载的模块是否引用了一些当前内核不存在的符号。如果有这类引用,modprobe会在当前模块搜索路径中查找定义了这些符号的其他模块。如果modprobe找到了这些模块(即要装载的模块所依赖的模块),它会同时将这些模块装载到内核。如果在这种情况下使用insmod,则该命令会失败,并在系统日志中记录“unresolved symbols(未解析的符号)”消息。rmmod可以使用rmmod工具从内核中移除模块。注意,如果内核认为模块仍然在使用状态.原创 2020-08-30 17:55:58 · 1207 阅读 · 0 评论 -
使用git merge/cherry-pick合并代码(合并远程仓库:github)
git 合并1. git合并两个仓库代码(主仓库合并到分支仓库)2.1. git合并两个仓库代码(主仓库合并到分支仓库)主仓库:opsy:master (仓库名:branch名)我的仓库:my_opsy:master (仓库名:branch名)合并步骤:以下操作步骤均在我的仓库路径下。1.1 在我的仓库my_opsy:master下,将主仓库...原创 2020-03-19 22:57:47 · 3712 阅读 · 0 评论 -
最简单的Makefile编写
person:main.o person.o g++ -o $@ $^%.o:%.cpp g++ -c -o $@ $<clean: rm -rf *.o personMakefile基本语法:目标:依赖person目标依赖main.o 和 person.omain.o目标依赖main.cppmain.o:main.cppperson.o目标依...原创 2020-03-08 20:48:36 · 143 阅读 · 0 评论 -
使用git命令打补丁
一、 patch 和diff 的区别Git 提供了两种补丁方案,一是用git diff生成的UNIX标准补丁.diff文件,二是git format-patch生成的Git专用.patch 文件。 .diff文件只是记录文件改变的内容,不带有commit记录信息,多个commit可以合并成一个diff文件。 .patch文件带有记录文件改变的内容,也带有commit记录信息,每个commit对...转载 2020-01-06 20:35:01 · 2244 阅读 · 0 评论 -
添加虚拟的i2c设备适配器(add virtual i2c adapter)
应用场景:在i2c从设备下再挂i2c从设备的情况,并且它们之间有可能存在断开链接。目前车载视频传输多使用gmsl,gmsl2,FDP3.0协议进行传输,它们之间通过串行器和解串器进行连接。所以在加载近端IC驱动后,要检测是否和远端IC已经link上,如果没有link上,则等待link成功;如果link成功,则进行远端设备IC驱动的加载。如果从link状态切换到unlink状态,则要...原创 2020-01-03 12:45:41 · 758 阅读 · 0 评论 -
dts设备树详解之设备树规范
dts文件布局(layout):/dts-v1/; // 第一行表示这个dts文件的版本[memory reservations] // 格式为:/memreserve/ <address> <length>;/{ [property definitions] [child nodes]};第一行表示这个dts文件的版本;第...原创 2019-12-29 20:04:36 · 2009 阅读 · 0 评论 -
rcar-du 通过modetest命令测试DU驱动显示
通过以下命令查看设备信息modetest -M rcar-du然后输入以下modetest -M rcar-du -s xx@xx:1280x720第一个xx是connector id,第二个xx是crtc id...原创 2019-11-16 17:47:31 · 1940 阅读 · 0 评论 -
rcar-du 通过DRM/KMS实现DU显示测试demo
app .c文件/*本ソースの使用方法 (1) 下記コマンドでビルド実行 make (2) 下記コマンドでaltボード実機用rootfsにコピー sudo cp camera_test /tftpboot/work_hieng/rootfs/home/root/ (3) altボード実機上linuxコンソールにて、下記コマンドを実施して、テストプログラム実行 cd ...原创 2019-11-15 17:01:08 · 940 阅读 · 0 评论 -
linux下查看应用属性(属于PC端运行还是属于ARM端运行)
文件名:xxxfile xxx# file sysfs_testsysfs_test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, BuildID[sha1]=355fc9d7798ede2...原创 2019-10-30 17:52:46 · 1398 阅读 · 0 评论 -
poll 监听/sys/class/xxx下节点的两种实现方式
方式一: lseek到09方式二:reopen节点操作.(这个一定要注意在第一次open需要对它做一次dummy读操作)app 代码如下#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <un...原创 2019-10-30 17:48:55 · 502 阅读 · 0 评论 -
ubuntu14.04/ 16.04 下安装svn客户端
#!/bin/bashsudo add-apt-repository ppa:rabbitvcs/ppasudo gedit /etc/apt/sources.listdeb http://ppa.launchpad.net/rabbitvcs/ppa/ubuntu utopic main#echo "deb http://ppa.launchpad.net/rabbitvcs/pp...原创 2019-10-24 09:03:37 · 411 阅读 · 0 评论 -
linux 下模拟/sys/class/gpio 编写自己的动态创建节点的驱动demo程序
在/sys/class/下生成hwconfig节点创建节点 echo xxx > configexport然后会在sys/class/hwconfig节点下生成xxx节点xxx节点下有value节点cat value 可以查看数据echo xxx > value 可以对value节点进行写数据测试可用。#includ...原创 2019-10-24 08:59:53 · 1353 阅读 · 2 评论 -
linux kernel Kbuild 编译系统分析
从Linux内核2.6开始,Linux内核的编译采用Kbuild系统,这同过去的编译系统有很大的不同,尤其对于Linux内核模块的编译。在新的系统下,Linux编译系统会两次扫描Linux的Makefile:首先编译系统会读取Linux内核顶层的Makefile,然后根据读到的内容第二次读取Kbuild的Makefile来编译Linux内核。Linux内核Makefile分类...转载 2019-10-08 22:20:05 · 434 阅读 · 0 评论 -
Linux 内核模块编译 Makefile 解析
一、模块的编译 我们在前面内核编译中驱动移植那块,讲到驱动编译分为静态编译和动态编译;静态编译即为将驱动直接编译进内核,动态编译即为将驱动编译成模块。而动态编译又分为两种:a -- 内部编译 在内核源码目录内编译b -- 外部编译 在内核源码的目录外编译二、具体编译过程分析 注:本次编译是外部编译,使用的...转载 2019-10-08 22:27:45 · 302 阅读 · 0 评论 -
linux下find命令使用说明
Linux find命令Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。语法find path -option [ -print ] [ -exec -ok command ] {}...转载 2019-08-25 19:52:05 · 71 阅读 · 0 评论 -
asla-lib库函数snd_pcm_open打开流程
本文转自:http://blog.chinaunix.net/uid-20564848-id-74356.html《alsa声卡/dev/snd /pcmC0D0p的open打开流程》杂记asla-lib库函数snd_pcm_open打开流程浅析ac97声卡intel8x0的DMA内存substream->dma_buffer什么时候被赋值浅析ac97声卡intel8x0的runtim...转载 2019-05-20 13:51:32 · 2145 阅读 · 0 评论 -
linux内核模块编译,多个源文件的makefile编写解决init_module不调用的问题
当你存在两个源文件test.c test2.c test.h;其中test.c源依赖于test2.c要如何编写makefile,来实现内核模块test.ko的编译,并且不会有不调用init_module入口函数的问题。Kbuild的文档,有如下描述: If a kernel module is built from several source files, you specify...原创 2019-10-08 21:32:19 · 1040 阅读 · 0 评论 -
asynchronous external abort 解决办法
static bool ignore_first = true;static int xxxx_async_ext_abort_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs){ /* * if first time, ignore this as this is a asynchronous exter...原创 2019-10-07 20:01:44 · 1473 阅读 · 0 评论