
Linux学习
Donald Linux
日拱一卒无有尽 功不唐捐终入海
展开
-
2024-05-10 C语言使用开源的JPEG解码库libjpeg 读取JPEG文件并将其解码为RGB24格式的数据
2.3 测试运行效果,使用ffplay -pixel_format rgb24 -video_size 588x776 -i rgb_data.rgb 显示出获取到rgb数据。2.1安装了libjpeg-dev包。原创 2024-05-10 11:43:36 · 979 阅读 · 0 评论 -
2024-05-10 Ubuntu上面使用libyuv,用于转换、缩放、旋转和其他操作YUV图像数据,测试实例使用I420ToRGB24
【代码】2024-05-10 Ubuntu上面使用libyuv,用于转换、缩放、旋转和其他操作YUV图像数据,测试实例使用I420ToRGB24。原创 2024-05-10 11:07:23 · 1133 阅读 · 0 评论 -
2024-04-26 linux 查看otg usb 是否连接到PC还是只是连接到电源适配器,cat /sys/class/udc/ffb00000.usb/state获取状态
是您的 OTG USB 设备名称。例如,如果 OTG USB 已连接,则返回的内容可能是 USB 控制器的名称;如果未连接,可能为空或返回特定状态。原创 2024-04-26 16:13:20 · 598 阅读 · 0 评论 -
2024-03-05 linux 分区老显示满,Use 100%,原因是SquashFS 是一种只读文件系统,它在创建时就已经被填满,所有空间都被使用。
t。原创 2024-03-05 19:54:28 · 521 阅读 · 0 评论 -
2023-11-18 Android Linux资源限制命令ulimit,比如ulimit -d 设置进程占用最大数据段大小,默认unlimited。android 会对单个app可以申请内存进行限制
【代码】2023-11-18 Android Linux资源限制命令 ulimit,比如ulimit -d 是设置进程占用的最大数据段大小,默认是unlimited。原创 2023-11-18 11:46:21 · 406 阅读 · 0 评论 -
2023-09-11 git diff 显示\ No newline at end of file 要重视,特别是buildroot\configs\*****defconfig下的文件修改。
可能的原因是window和unix的换行符是不同的,分别为:Windows(CR/LF),Unix(LF)。以前都不以为然,直到今天由于这个问题引发编译出莫名其妙的问题,才觉得的重视这个问题。对应这类文件,用notepad修改更保险靠谱。原创 2023-09-11 11:43:35 · 560 阅读 · 0 评论 -
2023-09-04 Linux 让shell编译脚本里面设置的环境变量改变kernel里面驱动文件的宏定义值方法,我这里用来做修改固件版本
【代码】2023-09-04 Linux 让shell编译脚本里面设置的环境变量改变kernel里面驱动文件的宏定义值方法,我这里用来做修改固件版本。原创 2023-09-04 19:22:15 · 907 阅读 · 0 评论 -
2023-04-19 linux内核态 send_sig_info 向用户态发送信号参数,可以带参数。用户态使用sigaction(SIG_ETX, &new_sa, NULL);处理介绍数据函数
使用for_each_process 遍历所有进程。原创 2023-04-19 17:07:35 · 2363 阅读 · 0 评论 -
2023-02-04 32位程序可以在64位系统中运行吗?可以。在64位x86 ubuntu上面编译32位应用程序运行,也在ARM64位的android系统上测试。
3.2 把可执行文件放到arm板子上面去运行,arm板子是运行android8 的64 位cpu系统。64位系统可以向下兼容运行32位程序,但是32位系统不能运行64位程序。3.3、32位的可执行程序也可以运行,如下图。3.1 arm交叉编译出两个可执行文件。2.1、查看Linux是多少位数 命令。原创 2023-02-04 18:22:10 · 3666 阅读 · 0 评论 -
2022-12-22 linux /proc/version 获取版本号的实现流程,添加一个获取固件版本号的接口
3、执行上面的脚本后会生成\kernel\include\generated\compile.h。2、kernel/scripts/mkcompile_h 调用脚本获取时间等版本信息。5、上面的多加了一个获取固件版本号的firmware_version。1、驱动在kernel/fs/proc/version.c。4、那mkcompile_h脚本在哪里调用到呢?原创 2022-12-22 19:57:52 · 1537 阅读 · 0 评论 -
2022-12-09 Linux wc命令,统计指定文件中的字节数、字数、行数,统计结果显示输出。grep -n “buildroot“ build.sh | wc -l,cat build.sh
三、搜索文件里面出现某个字符的个数。原创 2022-12-19 19:56:10 · 397 阅读 · 0 评论 -
20222-02-16 Linux 触摸屏测试工具tslib工具下载、编译、安装,buildroot ARM平台上实际运行
一、tslib全称英文是C library for filtering touchscreen events,是捕捉触摸屏事件的工具。二、下载地址https://github.com/libts/tslib三、tslib的代码如下 二、ARM交叉编译流程1、可能需要安装下面的软件2、执行下面的命令就可以在/opt/tslib/下面编译出可执行文件,./configure 里面的CC交叉编译器,我这里是用buildroot编译出来的arm交叉编译器,一定是绝对路径,不然会make install会报错。原创 2022-12-16 19:52:25 · 3177 阅读 · 1 评论 -
2022-12-12 Linux 挂载TF卡 mount -t vfat /dev/mmcblk0p1 /mnt/mmc/,fdisk -l 查看。
一、接上TF卡会有下面的log,有EXT4-fs (mmcblk0p1) 字样。 二、执行 fdisk -l 查看三、执行 mount /dev/mmcblk0p1 /mnt/mmc 挂载 四、参考文章linux 挂载tf卡_dxmcu的博客-优快云博客_linux 挂载tf卡Linux环境下挂载SD卡的教程 - 编程路上的小飞龙 - 博客园原创 2022-12-12 10:37:51 · 4433 阅读 · 0 评论 -
2022-12-17 linux 串口测试工具busybox microcom用法,busybox microcom -t 15000 -s 115200 /dev/ttyS0,安卓不能带-t
一、在busybox这有一个更加简单的串口工具microcom二、命令格式busybox microcom -s 115200 /dev/ttyS4 ,也可以直接用microcom -s 115200 /dev/ttyS4三、实际测试,短接UART4 的RX/TX ,键盘输入的字符会显示,如果不短接,在终端是看不到自己输入的字符,没有回显。原创 2022-12-07 14:38:03 · 2028 阅读 · 1 评论 -
2022-11-30 linux find ! -path “./device/*“ -name 命令搜索排除文件夹,后面加 就可以xargs rm -rf 把搜索到文件删除。
我测试用-prune -o的话会把过滤目录下的所有文件都删调,用!-path的方式才可以实现。原创 2022-11-30 17:33:06 · 2330 阅读 · 0 评论 -
2022-11-26 linux 通过blocking_notifier_chain_register、blocking_notifier_call_chain 接收温度变化信息控制风扇
【代码】2022-11-26 linux 通过blocking_notifier_call_chain 接收温度变化信息控制风扇。原创 2022-11-26 11:59:08 · 1341 阅读 · 0 评论 -
2022-10-28 linux IO指令 读写GPIO口电平实例
GPIO 调试有一个很好用的工具,那就是 IO 指令,使用 IO 指令可以实时读取或写入每个 IO 口的状态,这里简单介绍 IO 指令的使用。2.4 通过Registers Summary表格我们可知,数据寄存器和方向寄存器的地址偏移地址分别为 0x0000 和 0x0004。2.6 使用io -4 -w 0xff790000 0x02400000的时候gpio4c6会拉high,蜂鸣器会响。2.2 目前该gpio已经在dts里面配置,被占用了,是low 状态。2.5 确定是否打开clock。原创 2022-10-28 11:15:39 · 1688 阅读 · 0 评论 -
2022-10-21 linux 使用device_for_each_child_node 遍历dts里面的所有结点node,用gpio-leds驱动分析
08 在设备树里描述platform_device【转】 - 走看看 (zoukankan.com)原创 2022-10-21 16:41:16 · 1045 阅读 · 0 评论 -
2022-10-20 Linux LED灯驱动gpio-leds心跳呼吸灯heartbeat、timer,路径/sys/bus/platform/devices/leds
(685条消息) Linux驱动开发学习笔记【12】:Linux自带LED灯驱动_hurryddd的博客-优快云博客_linux,default-trigger。(686条消息) linux驱动之LED实验(基于系统自带leds-gpio.c驱动)_金城孤客的博客-优快云博客。(686条消息) Linux驱动运行灯 Heartbeat_fensnote的博客-优快云博客。8.1、cat trigger 没有看到有heartbeat。8.2、解决方法:勾选相应的选项。8.3、按上面修改之后,就ok了。原创 2022-10-20 17:56:51 · 4899 阅读 · 0 评论 -
2022-06-15 Android Linux 触发中断时根据i2c设备的中断寄存器调用不同的处理函数,regmap_add_irq_chip、regmap_irq_get_virq等
一、下面这款I2C设备,只有一个PMIC_INT_L中断pin脚,当接入充电器、拔插充电器、按键按下松开等都是由这个中断pin触发。这里提出一个需求,接入充电器的时候调用一个处理函数,拔插充电器的时候调用另外一个处理函数。如何做到呢?这里就会用到regmap_add_irq_chip、regmap_irq_get_virq等封装好的函数。二、这里就来分析一下接入充电器、拔插充电器的处理过程。 1、中断脚是连接到cpu的gpio0a3. 2、dts 里面定义这个pin脚 3、调用regmap_ad原创 2022-06-15 16:23:22 · 1794 阅读 · 2 评论 -
2022-03-31 linux 驱动C语言把配置放到一个文件,然后#include到数组里面。xxd 命令可以生成适合包含在C代码中的C数组。
一、比如一个触摸IC会有很多的config,怎么办呢?把配置放到一个文件,然后#include到数组里面。二、比如1、声明数组2、调用原创 2022-03-31 16:52:19 · 2519 阅读 · 0 评论 -
2021-12-28 修改uboot的环境变量env的默认值以及添加一个环境变量
一、修改一个环境变量的默认值步骤,这里我修改bootdelay的默认值来示范。 1、默认的bootdelay等于0 2、读取bootdelay的地方u-boot\common\autoboot.c 3、默认的值在里面设置u-boot\include\env_default.h 的default_environment 4、CONFIG_BOOTDELAY我这个平台是在u-boot\configs\rk3568_defconf...原创 2021-12-28 17:34:31 · 3847 阅读 · 0 评论 -
2021-12-17 linux 往/dev/kmsg 里面写数据在串口里面会打印出来,以及应用层cpp如何输出串口打印信息。
一、linux 往/dev/kmsg 里面写数据在串口里面会打印出来,效果如下。二、随手记录。原创 2021-12-17 18:02:56 · 1309 阅读 · 0 评论 -
2021-12-13 Linux 只列出文件或者文件夹的命令ls -l | grep ^d 、 ls -l | grep ^-。
一、只列出文件夹命令 :ls -l | grep ^d二、只列出文件命令:ls -l | grep ^-三、命令解析:文件是以 "-"开头 , 文件夹是 d,链接是l开头。^是正则表达,匹配输入字符串开始的位置。四、实际测试...原创 2021-12-13 11:04:00 · 3239 阅读 · 0 评论 -
2021-08-27 linux tar.bz2和tar.gz分卷压缩和分卷解压
一、分卷压缩命令格式:tar cjf - apls/ |split -b 100m - apls.tar.bz2 上面的命令是将 apls这个文件夹分卷压缩,每卷100m,注意 apls前面的空格,压缩完之后,分卷名称为apls.tar.bz2xx二、分卷解压方法一。 1、先把所有分卷合并: cat apls.tar.bz2* >apls.tar.bz2 2、然后解压: tar xjvf apls.tar...原创 2021-08-27 14:10:48 · 7783 阅读 · 0 评论 -
2021-08-20 Linux内核不同驱动的加载顺序module_init、late_initcall等
一、Linux内核为不同驱动的加载顺序对应不同的优先级,定义了一些宏。kernel\include\linux\init.h* Early initcalls run before initializing SMP. * * Only for built-in code, not modules. */#define early_initcall(fn) __define_initcall(fn, early)/* * A "pure" initcall has no depe..原创 2021-08-20 16:36:25 · 3710 阅读 · 0 评论 -
2021-08-17 linux spi驱动注册流程分析
一、dts配置spi1: spi@ff1d0000 { compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi"; reg = <0x0 0xff1d0000 0x0 0x1000>; clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>; clock-names = "spiclk", "apb_pclk"; interrupts =..原创 2021-08-17 16:53:16 · 1271 阅读 · 0 评论 -
2021-08-17 linux spi字符类驱动注册流程spi_register_driver和简单实例
一、用spi_register_driver函数注册spi驱动。spi的驱动在\kernel\drivers\spi\spi.c二、这里初始化driver结构的总线类型,然后是调用driver_register注册一个driver,到这里可以回到总线驱动模型的知识,driver_register是所有总线注册一个driver进总线中的统一接口,在学习总线模型的时候知道,在调用driver_register注册一个driver会去遍历总线下的device,并调用总线提供的总线提供的match函数进..原创 2021-08-17 15:23:09 · 3261 阅读 · 0 评论 -
2021-08-10 Ubuntu16.04 查看目前的用户和创建新用户
一、查看系统中所有用户cat /etc/passwd 或者 sudo cat /etc/shadow二、添加一个新用户(如用户名为shit)root@ubuntu:/home/# useradd shit三、为该用户设定登录密码root@ubuntu:/home/# passwd shit四、实际操作效果五、参考文章https://blog.youkuaiyun.com/jiangjiang_jian/article/details/81169258...原创 2021-08-10 15:56:21 · 1106 阅读 · 0 评论 -
2021-08-10 ssh–secure 远程登录提示A protocol error occurred. Change of username or service not allowed
一、SecureCR 远程登陆是有下面的提示A protocol error occurred. Change of username or service not allowed,百思不得其解。二、原来是SecureCR 登陆的是前后两个用户名不一样三、设置成一样就可以顺利登陆了,FUCK。...原创 2021-08-10 13:56:07 · 13509 阅读 · 0 评论 -
安装Ubuntu Server 容易出现(detect and mount CD-ROM)的问题
一、用老毛桃安装ubuntu server提示detect and mount CD-ROM,找不到光驱,但是iso文件已经放U盘里面了。二、网上搜了一下,很多人也遇到这个问题,安装过程提示找不到CD-ROM错误。使用U盘安装Ubuntu Desktop通常不会有问题,但是安装Ubuntu Server的时候却容易出现检查不到光驱(detect and mount CD-ROM)的问题。三、解决方案 1、在上面的界面上选继续后会出现下面的界面,这个时候选择运行shell,...原创 2021-08-10 11:20:45 · 3268 阅读 · 1 评论 -
Ubuntu apt-get install 碰到“configuring ttf-mscorefonts-installer”解决方案
一、apt-get install 遇到这样的提示,一直停留在这里。二、解决方案是按Tab键盘按键进行选择,然后回车。原创 2021-08-05 11:40:43 · 1360 阅读 · 0 评论 -
2021-06-09 Linux INIT_DELAYED_WORK schedule_work 延时队列使用学习
https://blog.youkuaiyun.com/qq_31339221/article/details/105057978https://blog.youkuaiyun.com/qq_31339221/article/details/105057978原创 2021-06-09 10:51:23 · 4934 阅读 · 1 评论 -
2021-05-29 linux dts for_each_child_of_node用法
一、for_each_child_of_node遍历所有子节点二、实例&pwm0 { status = "okay"; interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; compatible = "rockchip,remotectl-pwm"; remote_pwm_id = <0>; handle_cpu_id = <0>; red_green_led_gpio =<&gpi...原创 2021-05-29 15:09:54 · 2980 阅读 · 0 评论 -
2021-03-05 Linux 孤儿进程、僵尸进程、守护进程介绍和C语言实例测试
Linux 孤儿进程、僵尸进程、守护进程一、孤儿进程 一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程完成对它们状态收集工作。孤儿进程因为在其父进程退出时被init进程所收养,所以init进程会wait()孤儿进程,孤儿进程并没有什么危害。#include <unistd.h>int main(void){ ...原创 2021-03-05 14:19:47 · 619 阅读 · 0 评论 -
2020-12-25 linux grep搜索某个字符串中包含任意字符或者任意字符串
linux grep搜索某个字符串中包含任意字符或者任意字符串一、匹配任意一个字符。grep使用正则表达式;.在正则表达式中表示“任何字符”。例如grep -rn 'aux.test' ,匹配aux和test之间有任意一个字符,可以匹配aux4test,aux5test,但是不匹配auxtest。二、匹配任意字符串。grep -rn 'hwc.*aux',匹配hwc和aux中间包含任意字符串的字符串。hwc.driver.aux和hwc.device.aux可以找到...原创 2020-12-25 10:37:16 · 3121 阅读 · 0 评论 -
2020-12-18 Linux regmap架构学习
Linux regmap架构学习一、内核3.1引入一套新的API regmap,目的是提取出关于I2C SPI irq等相关注册、使能以及读写的公共部分,以提高代码的可重用性,并且使得在使用如上内核基础组件时变得更为简单易用。主要目的是减少慢速 I/O 驱动上的重复逻辑,提供一种通用的接口来操作底层硬件上的寄存器。其实这就是内核做的一次重构。Regmap 除了能做到统一的 I/O 接口,还可以在驱动和硬件 IC 之...原创 2020-12-18 16:59:14 · 959 阅读 · 2 评论 -
2020-12-14 Linux 内核中根据函数指针输出函数名-kernel 关机和reboot代码,可以使用“%pF” 或 %pS。
Linux 内核中根据函数指针输出函数名一、kernel内核一个函数指针变量可能指向N多个函数,在开发调试的时候想获取这个函数指针对应的是哪个函数,可以使用“%pF”。printk("%s: %pF\n", __func__, pm_power_off);二、比如我的代码里面pm_power_off 可能指向这么多函数。三、在代码里面添加printk("%s: %pF\n", __func__, pm_power_off);就可以确认到底是调用哪...原创 2020-12-14 14:53:27 · 1532 阅读 · 1 评论 -
2020-12-12 Linux 内核定时器应用 init_timer add_timer
Linux 内核定时器应用 init_timer add_timer一、定时器的结构体,kernel/include/linux/timer.h。二、相关的API函数。初始化定时器:void init_timer(struct timer_list * timer);增加定时器:void add_timer(struct timer_list * timer);删除定时器:int del_timer(struct ti...原创 2020-12-12 17:54:16 · 1642 阅读 · 0 评论 -
2020-12-12 linux date命令显示格式化的年月日时分秒
linux date命令显示格式化的年月日时分秒一、单独的date命令xxx@ubuntu:~$ dateSat Dec 12 16:19:21 CST 2020xxx@ubuntu:~$ 二、显示格式,提取对应的时间,+是与后面的格式连在一起的,一定要有。xxx@ubuntu:~$ date -d today +%Y%m%d%H%M%S20201212162042xxx@ubuntu:~$ date +%Y%m%d%H%M%S20201212162048xx...原创 2020-12-12 16:25:57 · 5998 阅读 · 0 评论