linux
文章平均质量分 79
chengwei_peng
想折腾却不会折腾的阿伟
展开
-
linux驱动资源没有及时释放排查
O_CLOEXEC 很关键原创 2024-06-21 17:09:28 · 266 阅读 · 0 评论 -
linux为什么不是实时操作系统
为什么Linux不是实时操作系统呢?原创 2024-06-13 20:40:23 · 3762 阅读 · 3 评论 -
Linux应用之OTA升级
swupdate OTA升级介绍原创 2023-09-26 13:26:45 · 2014 阅读 · 0 评论 -
Linux设备驱动之Camera驱动
Linux Camera驱动框架原创 2023-09-23 09:25:34 · 3308 阅读 · 1 评论 -
Linux设备驱动之IIC驱动
Linux I2C框架介绍原创 2023-09-22 11:52:35 · 2070 阅读 · 0 评论 -
Linux设备驱动模型之SPI
Linux SPI 使用介绍原创 2023-09-21 13:38:15 · 904 阅读 · 0 评论 -
Linux设备驱动之gpio-keys
看看gpio key在linux是如何配置使用的原创 2023-09-20 09:06:15 · 1205 阅读 · 0 评论 -
Linux设备驱动模型之devicetree
linux内核使用的设备树简单介绍原创 2023-09-11 09:22:46 · 196 阅读 · 0 评论 -
什么是Linux
一直想写Linux相关的文档,就从什么是Linux开始吧原创 2023-09-09 17:17:44 · 5312 阅读 · 0 评论 -
浅入浅出linux中断子系统
linux中断是怎么回事,看看?原创 2022-09-30 14:02:39 · 1404 阅读 · 0 评论 -
linux出现oom分析流程
linux OOM 分析介绍原创 2022-08-12 08:49:37 · 6113 阅读 · 1 评论 -
内核内存泄漏排查方向
meminfo信息原创 2022-03-12 12:55:45 · 1837 阅读 · 0 评论 -
slub debug
内核存在内存泄漏时,通过kmemleak无法有效分析或怀疑是slab存在内存泄露,则可使用slabinfo信息进行debug。原创 2022-03-12 12:50:53 · 2017 阅读 · 1 评论 -
内核检查内存泄漏的工具 --- kmemleak
如何使用kmemleak检查内核内存泄漏?原创 2022-03-12 12:47:09 · 6717 阅读 · 0 评论 -
Linux应用程序动态更改用户ID
Linux下如何动态修改程序运行时的用户ID呢?原创 2021-12-13 23:10:01 · 3374 阅读 · 0 评论 -
Linux非root用户使用socket出现“Permission denied”解决方式
非root用户使用socket出现“Permission denied”解决方式原创 2021-12-12 17:14:20 · 13616 阅读 · 0 评论 -
怎么解决编译时出现的“undefined reference to `xxx`”错误
undefined reference to `xxx_function'快速定位原创 2021-10-02 16:05:47 · 44498 阅读 · 0 评论 -
openwrt reboot流程
reboot到底是怎么完成重启的呢?一起来看一下。原创 2021-06-23 19:53:07 · 4392 阅读 · 0 评论 -
ROS 交叉编译介绍
如何交叉编译 ROS?本文来给你简单介绍!!!原创 2020-11-28 18:13:34 · 3885 阅读 · 0 评论 -
linux 系统 CPU 负载高导致丢失 camera 中断从而丢帧的查找过程
问题背景编写 camera 应用应该都知道,如果应用层没有及时的获取 buf,或者长期占用了内核的 buf 而没有返回给内核队列将会导致丢帧。这个丢帧是应用操作导致内核驱动队列 buf 不够用而覆盖之前的图像内容导致的丢帧,这种丢帧是内核驱动框架是知道的,本来应该重新设置 DMA 的目标地址的,但是因为队列中没有空闲的 buf 从而覆盖之前旧的 buf,也就是这样的丢帧,内核驱动是可以计数的,可...原创 2020-03-29 17:48:26 · 2608 阅读 · 0 评论 -
autoconfig实现条件编译
在使用开源框架的时候,可以发现大部分的源码都是使用自动生成Makefile工具生成Makefile,而这一过程大多数的又是通过configure.ac配置生成Makefile。在这里,我们不讨论它是如何进行该操作的,而是想记录一下,当我们需要给源码打patch的时候,如何实现与外部一些库的链接以及源码的宏定义区分。 相信很多人在Makefile以及源码中做过以下的操作:#incl...原创 2018-09-06 21:52:45 · 2107 阅读 · 1 评论 -
解决嵌入式使用SQL出现 Error(5): database is locked
之前有遇到通过sqlite3_exec()函数操作数据库出现 database is locked 这样的一个问题,特别的记录一下这个问题。SQLite,是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。但是,SQL只是支持单线程操作的,如果在应用程序中,有多个线程同时操作数据库,也将会产生da...原创 2018-10-03 16:10:37 · 12137 阅读 · 3 评论 -
camera申请buf流程
camera通过v4l2框架申请buf流程以下内容,以linux4.9版本代码arm架构进行介绍。VIDIOC_REQBUFS在应用层通过ioctl传输VIDIOC_REQBUFS命令,将会传递count、type和memory等参数,通过ioctl将会执行到camera的驱动函数vidioc_reqbufs()。通过驱动的该函数,最终将会调用到videobuf2-v4l2.c的vb2_co...原创 2018-12-02 15:45:08 · 3171 阅读 · 5 评论 -
linux GPIO子系统
linux GPIO子系统linux中有各种各样的子模块系统,最简单的应该就是GPIO子系统了。GPIO(General Purpose Input Output),通俗的说就是输入输出管脚了,控制它状态,就是GPIO子系统了,滑稽脸.jpg。一直都说,linux内核代码,满满的都是软件分层的设计思想,下面通过linux4.20.3版本的内核代码,以全志平台v3s为介绍,一起来学习一下Linu...原创 2019-01-19 17:36:57 · 4796 阅读 · 2 评论 -
静态交叉编译错误
当通过增加-static静态交叉编译的时候,编译出现以下问题:libc.a(vfprintf.o):(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'libc.a(vfprintf.o):(.ARM.exidx+0x10): undefined reference to `__aeabi_unwind_cpp_pr...原创 2019-02-12 09:08:20 · 2624 阅读 · 0 评论 -
linux input子系统简单介绍
linux input子系统是linux内核用于管理各种输入设备的部分,内核将给用户导出一套固定的硬件无关的input API,供用户空间程序使用。input系统分为三块:input core、input drivers和event handles。数据传输从底层硬件到input driver,再经过input core到event handles,最后到达用户空间。以下代码,以 linux4...原创 2019-02-18 19:58:14 · 1456 阅读 · 0 评论 -
记录Slab占用内存过大导致kill程序的情况
起因在应用程序的老化测试时发现,系统被kill掉,但是从kill掉的内核打印信息,没有发现太大的问题。[411371.892812] ntpd invoked oom-killer: gfp_mask=0x27000c0(GFP_KERNEL_ACCOUNT|__GFP_NOTRACK), nodemask=0, order=1, oom_score_adj=0[411371.911869]...原创 2019-02-28 14:47:33 · 6476 阅读 · 0 评论 -
Linux media子系统
为什么会有media这样的一个子系统?在多媒体的框架中,总是复杂多样的,为了解决多媒体设备的复杂性和数据流动性,创建了media子系统。Media使用一个树状结构,将多媒体数据通路的各个设备连接在一起,方便各个设备的管理和控制。media 框架在开机的时候,将会在[media-devnode.c]中,通过media_devnode_init()函数为media设备分配一个主设备号,次设备号从...原创 2019-05-24 14:21:02 · 5571 阅读 · 1 评论 -
select()函数使用
select() 函数允许程序监视多个文件描述符,等待一个或多个文件描述符为某类I/O操作变为“就绪”。/* According to POSIX.1-2001 */#include <sys/select.h>/* According to earlier standards */#include <sys/time.h>#include <sys/ty...原创 2019-05-25 17:25:38 · 923 阅读 · 0 评论 -
opkg软件包管理
opkg 工具 (一个 ipkg 变种) 是一个用来从本地软件仓库或互联网软件仓库上下载并安装 OpenWrt 软件包的轻量型软件包管理器。GNU/Linux 用户可能会对 apt-get,aptitude,pacman,yum 等比较熟悉,也会看出其相似之处。它与 NSLU2 上同样用于嵌入式设备的 Optware 也有相似之处。OPKG 没有仅仅将软件安装到一个单独的路径(如:/opt),而...原创 2019-05-18 13:00:58 · 3124 阅读 · 0 评论 -
opkg 更新软件
opkg 不同的版本存在不同的配置文件,一般常用的是 /etc/opkg.conf 、/etc/opkg/customfeeds.conf 和 /etc/opkg/distfeeds.conf三个。这三个配置文件将会影响opkg运行时软件资源的取向,opkg软件源定义在/etc/opkg/distfeeds.conf(更新/etc/opkg.conf并没有作用)文件中,包含软件源索引的目录路径。下...原创 2019-05-18 17:05:56 · 12153 阅读 · 0 评论 -
linux内核oops调试跟踪
当内核出现类似用户空间的 Segmentation fault 时,oops会被打印到控制台和写入内核log缓冲区。下面来制造一个oops,程序如下:#include <linux/init.h>#include <linux/module.h>static int __init test_init(void){ char *tmp = NULL...原创 2019-07-10 19:12:11 · 2156 阅读 · 0 评论 -
C库修改文本出现字符缺失
之前想打开一个文本文件,读取数据,匹配正确之后,修改文本,再回写文本,操作流程如下:myFile = fopen("xxx", "rb+"); fseek(myFile, 0L, SEEK_SET); memset(str, 0, 256); while (fgets(str, 256 , myFile)){ if (!strncmp(key, s...原创 2018-06-02 16:59:35 · 309 阅读 · 0 评论 -
fputs函数修改文件出现位置偏移问题
在Linux嵌入式端,想通过c库函数,修改一个文本文件,在使用fputs函数写文件时出现了真正写入的文件的位置不对。具体操作流程如下:通过fopen打开已存在的文本; 通过fgets读取文本内容并查找相应字符串; 当查找到需要修改的字符串时,直接在fgets返回的字符缓冲修改后,通过fputs函数将内容回写文件; fclose函数关闭文本操作。myFile = fope...原创 2018-06-01 19:35:40 · 904 阅读 · 0 评论 -
linux大量写数据到存储设备write线程偶尔出现卡顿的原因
之前有个项目,是做行车记录仪的,大家都知道,行车记录仪有多路视频数据需要保存到TF卡类的存储介质,但是芯片的IO速度却是有限的,尝试过将写卡线程的优先级提高,但是最后也还是发现,并没有什么改善,最终发现是,在调用驱动中的write函数之后,数据并没有在底层驱动缓冲区满之后回写存储介质。是什么原因导致没有会写的呢?这个需要了解linux的回写机制了,这个也是我们下面介绍的,分别是dirty_...原创 2018-06-08 15:35:28 · 4016 阅读 · 0 评论