- 博客(168)
- 资源 (30)
- 问答 (1)
- 收藏
- 关注
原创 Windows11右键默认显示所有选项
打开任务管理器,在进程里面找到Windows 资源管理器,然后右键,重启。4、这个时候,鼠标右键就默认显示所有选项了。1、使用win+x,打卡终端管理员。
2025-03-04 16:55:02
281
原创 更改Linux console输出等级
最近在调试问题的时候,发现有些日志没有通过串口终端打印出来。排查发现是内核里面配置的串口日志等级较高,导致有些日志没有打印。在内核的配置文件里面,更改CONFIG_CONSOLE_LOGLEVEL_DEFAULT的值。
2024-11-06 14:57:32
151
1
原创 fPIC和非fPIC混用导致程序Segmentation Fault
排查了很久,后面怀疑可能是fPIC选项导致的。找第三方确认他们编译的时候,是否添加了fPIC选项,发现他们没有添加。让他们添加后,重新提供过来,发现问题就解决了。最近在调试一个功能时,使用到了一个第三方库,第三方提供的是一个静态库。这个库在我们之前其他的平台上已经用过了。简单测试过后,发现也能用。添加到工程里面:我们工程输出的是动态库,相当于我们的动态库里面包含了第三方的静态库。后面将库添加到工程里面,发现会死在第三方库里面。简单测试时:程序直接链接了第三方提供的静态库。
2024-10-16 16:25:10
186
原创 通过dlopen使用动态库
在和别人合作开发的时候,往往存在一方提供库供另一方调用。这个过程存在编译依赖问题,库更新问题。为了解耦,这里可以使用dlopen的方式去使用动态库。
2024-10-16 15:39:16
357
原创 yocto通过环境变量控制代码的编译
编译的时候,编译器会报错。为了快速的确认自己的宏控有没有生效,可以在自己的代码认为添加一些错误,这样在编译的时候根据报错信息,就能知道宏控定义是否生效。2、将TEST_FUNC_ENABLE环境变量添加到yocto的BB_ENV_EXTRAWHITE环境变量里面。实施方案:通过编译选项去配置环境变量,然后在bb文件里面根据环境变量的信息,去定义对应的宏。说明:此步骤主要是获取TEST_FUNC_ENABLE环境变量的值,并定义对应的宏。至此,我们的代码就会根据我们传递的参数编译对应的代码。
2024-09-27 17:05:23
243
原创 以太网传输出现不分包
最近对手件反馈,在传输文件的时候,我们这边发包太快,导致对手件网络出现了拥塞,把他们程序给搞死了。他们抓了一下他们收到的包,发现我们发送的数据包都大于了MTU设置的值。然后再次验证,发现Don't Fragment确实取消了,但是发包数据量还是大于了MTU。验证:我们去抓我们发送出去的包,发现确实配置了Don't Fragment。后续再进行测试,就可以看到,我们发送的包是按照MTU大小进行分片了。排查方法:为什么我们发送的数据包会大于MTU的值。注:查看属性是小写的k。可能性二:硬件tso属性导致的。
2024-09-14 18:11:31
206
原创 panic_on_rcu_stall
之前项目在开发阶段,有个版本,内核很容易就挂了。后面排查发现,是因为内存用完了,导致内核出现了panic。当时一直很疑惑,为什么内存没有了,导致内核出现了panic。后面发现,在启动的时候,/proc/sys/kernel/panic_on_rcu_stall里面被人写入了1。内存在耗尽的时候,导致RCU出现了问题。进而导致内核出现了panic。内核运行时的参数,在/proc/sys/目录下都存在对应的文件。查看内核运行时参数的命令:sysctl -a。
2024-09-09 10:15:19
277
原创 yocto配置多线程编译
上面两个变量最后在conf/local.conf里面会有定义。以高通8155为例。conf/local.conf是编译的时候自动生成的。它原始配置是在./conf/include/local.conf.templet文件。当然,不同的平台可能对应到不同的配置文件。yocto涉及到多线程的编译配置主要有两个变量:BB_NUMBER_THREADS、PARALLEL_MAKE。BB_NUMBER_THREADS:启用多少个线程编译。PARALLEL_MAKE:同时并行编译的任务数。
2024-08-28 11:28:42
404
原创 C和C++实现互调的方法
C++支持函数重载,所以在编译的时候,函数名会发生变化。C语言不存在这个问题。那么在调用的时候,C++找的是变化后的函数名,而C语言找的是原始的函数名。所以两者不能直接调用。
2024-08-21 13:43:35
540
原创 uboot、kernel通过KCFLAGS控制代码编译
很多时候,为了便于代码管理,我们希望在编译的时候,根据传入的参数去编译我们指定的代码。这样可以大大的减少我们的工作量。
2024-08-19 15:35:40
214
原创 vscode设置tab为制表符
点击上图框起来的【制表符长度】,就可以进行配置。注:你的有可能显示【空格】。至此就完成了tab配置成制表符。如果配置成空格,也是一样的操作。选择你需要的制表符长度。
2024-08-01 10:53:06
1268
原创 dm-verity给内核传递的参数解析
这篇博客完整解析了dm-verity在使用过程中bootloader(uboot)向Linux kernel应该传递哪些参数以及这些参数分别是什么意思。
2024-07-12 18:10:21
260
原创 dm-verity hashtree的结构
介绍了dm-verity的hashtree的结构图。很形象的表明了hashtree的构成。根据这个结构图,可以自己编码完成hashtree镜像的生成
2024-07-12 18:02:34
184
原创 生成dm-verity的hashtree
这个博客主要是生成dm-verity对应的hashtree和root hash。里面是纯C代码,只依赖libcrypto.so这个库。非常易于移植。
2024-07-12 17:57:58
141
原创 vscode 乱码解决
今天用vscode打开工程时,发现中文是乱码。分析了一下,发现应该是工程文件的编码和vscode打开文件时使用的编码不一致。因此解决办法就是改变vscode打开文件的编码格式。步骤一:点击编码信息按钮UTF-8(有些可能有区别,自己灵活变通)步骤三:选择自己想要的编码格式(不知道的就自己去试)步骤二:选择通过编码重新打开。至此,乱码就解决了。
2024-06-28 09:46:36
580
原创 Linux 内核设备树 ranges属性
注:上面的设备树代码是随便找的。#address-cells:本节点和父节点的值。注:具体有多少行,根据实际情况来决定。#size-cells:本节点的值。
2024-04-22 18:03:37
782
原创 kmallc、kzalloc、vmalloc使用
vmalloc() 函数则会在虚拟内存空间给出一块连续的内存区,但这片连续的虚拟内存在物理内存中并不一定连续。由于 vmalloc() 没有保证申请到的是连续的物理内存,因此对申请的内存大小没有限制,如果需要申请较大的内存空间就需要用此函数了。kmalloc() 申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移。kzalloc是kmalloc的变种。GFP_ATOMIC:分配内存的过程是一个原子过程,分配内存的过程不会被(高优先级进程或中断)打断;
2024-03-14 16:54:12
298
原创 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
214
原创 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
138
原创 关于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
369
vbmeta.img文件的完整解析,对该文件的所有字段都做出了详细标注
2024-10-16
用代码解压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关注的人