- 博客(143)
- 资源 (30)
- 问答 (1)
- 收藏
- 关注
原创 Linux 内核设备树 ranges属性
注:上面的设备树代码是随便找的。#address-cells:本节点和父节点的值。注:具体有多少行,根据实际情况来决定。#size-cells:本节点的值。
2024-04-22 18:03:37 44
原创 kmallc、kzalloc、vmalloc使用
vmalloc() 函数则会在虚拟内存空间给出一块连续的内存区,但这片连续的虚拟内存在物理内存中并不一定连续。由于 vmalloc() 没有保证申请到的是连续的物理内存,因此对申请的内存大小没有限制,如果需要申请较大的内存空间就需要用此函数了。kmalloc() 申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移。kzalloc是kmalloc的变种。GFP_ATOMIC:分配内存的过程是一个原子过程,分配内存的过程不会被(高优先级进程或中断)打断;
2024-03-14 16:54:12 39
原创 list_head的使用方法
定义一个list_head类型的head将我们自定义的结构体里面的所有的list_head串起来。后面我们需要的时候,就遍历head变量的所有list_head节点,找到的每一个节点,都使用container_of来找到该节点结构体的首地址,来判断是不是我们找寻的目标。最近用到了list_head,在这里记录一下。如果要搞清楚list_head的使用方法,需要了解container_of的原理。上面代码实现了list_head的增删改查的操作。里面有个我自己定义的删除函数,请忽略。
2024-02-28 18:19:05 134
原创 container_of宏的简介及使用
container_of宏之前看了一下内核里面的使用方法,然后就直接依葫芦画瓢用了。没有深究其实现原理。最近使用list_head的时候,发现也用到了container_of。所以就详细看看container_of的实现原理。那么问题又来了,我们根据结果或者结构体的定义,可以知道这个8是怎么来的。但是我们只知道t.c的地址,和t的类型,怎么来得到这个8呢?结合上面的代码,问个问题,如果我们知道t.c的地址,怎么计算t的地址。计算方式如下:t=t.c-8。
2024-02-28 17:49:29 35
原创 关于Linux存储空间异常的问题
1、已有文件被覆盖遮蔽住了:比如你的/data/sdg1目录下面有10G的文件,这个时候,你将U盘挂载到/data/sdg1目录下。那么你通过du -sh去统计的时候,/data/sdg1目录下原有的文件就被隐藏了。但是df -h去统计的时候,/data/sdg1里面原有的内容又能看见。这个时候,如果进程A一直向文件里面写数据,就会导致df -h统计的数据大于du -sh统计的数据。之前的时候,有同事反馈,df -h查看磁盘空间大小的时候,发现和du -sh统计出来的数据不一致。
2023-06-15 15:01:37 241
原创 Linux获取目录及其子目录的绝对路径
因为某种需要,我们需要获取指定目录及其子目录的绝对路径,可以使用如下命令:以获取/usr/lib目录及其子目录所有文件路径为例:命令:find /usr/lib结果:再获取目录及其子目录的详细信息,这个时候需要用脚本了:#!/bin/bashfor aa in `find /usr/lib`do if [ -d "${aa}" ];then ls -ld ${aa} #对目录单独处理 else
2022-05-16 19:44:38 2263
原创 Linux查看分区label信息
知道分区的label信息,怎么查找到对应的是哪一个设备文件,以userdata分区为例:执行如下命令:/sbin/blkid | grep "userdata" | awk -F'[":"%]+' '{print($1)}'命令输出:Linux的分区label查看方式如下:执行命令:/sbin/blkid输出如下:/dev/sde50: PARTLABEL="multiimgoem" PARTUUID="8c92ee74-0b82-1c43-7c7a-3c2d64f
2022-05-10 16:41:18 1717
原创 Linux查看设备树节点的相关信息
内核升级以后,devices的信息就在设备树里面进行描述了。某些时候,我们可能需要查看当前外设对应的设备树里面配置的信息,比如分辨率、时钟等。在这里做一个记录。比如mmc里面存在如下属性:compatible、bus-width、clock-names、max-frequency上面的属性,有些是string类型,有些是int类型。对于string类型,我们只需要找到对应的文件,直接cat,就能获取对应的信息。对于int类型,我们只需要找到对应的文件,通过hexdump来获取,hexdu
2022-04-28 15:39:34 3214
原创 Linux 查看动态库里面有哪些接口
今天,提供了一个操作底层的动态库给到应用层的同事,应用层的同事反馈找不到接口。因为这个库在协作开发过程中,有点曲折。所以第一时间搞得我也有点不自信了,就先排查了一下是否是自己的问题。排查方式如下:nm libtest.so通过上述命令查看,发现需要的接口已经在库里面实现了。结果如下图:相关符号说明:A Global absolute 符号。a Local absolute 符号。B Global bss 符号。b Local bss 符号。D .
2022-04-26 18:31:15 3463
原创 gdb调试应用程序记录
gdb 调试说明:判断程序是否为debug版本: 方法一: 命令:gdb a.out //注:这里的命令是指在Linux终端下面输入的命令 非debug版本,会提示:Reading symbols from a.out...(no debugging symbols found)...done. debug版本,会提示:Reading symbols from a.out...done.方法二: 命令:readelf -S binfi......
2022-04-20 13:43:00 1132
原创 在库里面实现注册函数回调
因为工作需要,需要做一个升级库,app调用升级库的接口,完成升级。大部分情况下,app需要实时知晓升级的进度。那么获取升级进度有2种方式:1、app主动掉库提供的升级进度接口。2、app向库里面注册一个回调函数,库实时调用回调函数来更新。所谓的在库里面注册回调函数,其实就是app告诉库对应函数的函数指针,库拿到函数指针后,就可以调用对应的函数了。代码结构如下:.├── func.c├── func.h├── main.c└── make.sh代码如下:库代码:func...
2022-04-12 20:12:19 730
用代码解压zip文件里面的指定文件
2022-01-25
Draw.io_jb51.rar
2021-07-16
i.MX6Q_uboot_keep_logo_to_kernel.tar.gz
2021-01-04
Writing_udev_rules.tar.gz
2019-07-28
cpulimit-master.tar.gz
2019-05-22
QT Creator 第三版 高清+书签+源码
2018-12-28
stm32f4文档
2018-12-27
提取BMP图片的数据
2018-10-13
IMX7-MFGTools
2018-08-06
IMX7文档集合 Yocto使用教程
2018-08-06
STM32F407+LWIP+DP83848移植例程
2018-01-13
怎么解决QT使用linuxfb插件时gdb调试QT UI程序看不到程序堆栈信息?
2020-03-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人