- 博客(33)
- 资源 (6)
- 收藏
- 关注
原创 kernel与modules解耦
linux的kernel与modules存在耦合版本匹配,在版本不匹配(内核重新编译后,或者驱动模块编译依赖的内核版本跟运行版本不匹配)时候,会存在insmod 驱动模块失败的情形;modutils/modutils.c中 finit_module(fd, options, 2);2、修改内核源码:./scripts/setlocalversion脚本,为res="$res${scm:+}";1、修改内核配置,去掉CONFIG_MODVERSIONS的选项,表示不增加sub-string;
2025-03-14 15:50:50
196
原创 修改kernel的spi驱动,cmd+addr+data时序连续以支持spiFlash的mtd设备
修改Linux系统kernel代码的spi驱动,以支持spiflash的mtd设备。
2023-07-17 17:14:03
381
转载 SDIO 基础知识
SDIO卡SDIO卡是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备,目前根据SDIO协议的SPEC,SDIO接口支持的设备总类有蓝牙,网卡,电视卡等。SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速卡的目标应用是以最小的硬件开始来支持低速I/O能力。低...
2022-03-22 16:15:18
7795
原创 网卡驱动分析--IMX6X
ETHER内核数据流处理--NXP_IMX6x系列eth的初始化:fec的probe后,进入ether的初始化流程fec_enet_init(dev);fec_enet_init()的主要工作如下:fec_enet_alloc_queue();创建queue等待队列,dma_alloc_coherent()创建一致性DMA地址。netdev->netdev_ops= ;netdev->ethtool_ops =填充netdev_ops和ethtool的ops.n
2021-05-20 10:42:06
447
转载 linux驱动框架--阻塞/唤醒
Linux 驱动框架---驱动中的阻塞 描述和API 阻塞IO和非阻塞IO的应用编程时的处理机制是不同的,如果是非阻塞IO在访问资源未就绪时就直接返回-EAGAIN,反之阻塞IO则会使当前用户进程睡眠直到资源可用。从应用场景来说两种方式分别适应不同的使用场景。而驱动开发不可避免的需要支持两种访问方式。如果不是采用现成的子框架而自己实现文件操作底层接口部分时就需要自己实现这一机制。文件的访问方式除了在打开文件时指定外还可以在打开以后通过fcnt和ioctl进行修改和获取。 ...
2021-05-08 09:56:30
396
原创 V4L2-虚拟摄像头驱动
【目的】在linux平台上创建虚拟摄像头设备/dev/video2,实现了V4L2的接口;【意义】1、熟悉V4L2的内核层面和驱动层面的一些接口操作; 2、原始数据的帧缓存自定义;【平台】ARM-IMX6Q硬件平台试验【驱动】 驱动的核心思想,就是queue入队列添加到queue出队列。 1、video_register_device()注册video设备:/dev/video2,初始化相关工作链表;...
2021-04-23 16:56:34
1294
原创 ARM视频输入流的电子倍焦-SCALE裁剪
【目的】依赖平台硬件实现视频输入流的电子倍焦(SCALE裁剪)功能【平台】Imx6q GPU Gstreamer1.0【思想】电子倍焦,就是图像裁剪后的图像放大,放大可以使用软件算法,也可以使用硬件。【软件方法】gstreamer的plugin:videoscale可以用于视频图像裁剪,但是是基于软件的,会有如下弊端: 1、纯软件的视频处理,消耗cpu非常高; 2、某些场景下,比如物理地址连续的一些plugin,...
2021-04-16 09:04:57
438
1
原创 rtsp_server嵌入工程中,以支持多路视频流和在线配置编码格式
【目的】 onvif项目中嵌入rtsp_server服务,并且支持encode的配置,例如在线配置编码格式H264/MPEG4/JPEG等,配置编码图像质量等;【方法】 rtsp_server使用gstreamer1.0框架,参考gst-rtsp-server开源代码;使用arm平台硬件编码器VPU,并且动态替换元件以支持编码格式修改;【效果】 对于多路视频流,有2种创建rtsp_server的方法: 1、多线程,每...
2021-04-08 14:43:35
523
1
原创 ONVIF_SERVER的ARM平台C代码
一、ONVIF的调试: ONVIF官方给出的调试工具有ODM和ODTools,具体区别:ODM更加和onvif_client工具更加类似,可以面向用户操作;OTDTools更加面向debug,可以对每一项接口进行debug。 也可以用大厂给出的onvif_client或者网上开源的onvif_client工具进行调试;二、ONVIF_SERVER代码框架: 1、一般使用gsoap工具来生成代码框架,支持C/C++/phthon等多种语言。但是生产的只是...
2021-03-05 10:26:09
1382
2
原创 gstreamer1.0动态替换element
pipeline处于playing状态时,如果要动态替换element元件,而又不从新停止pipeline,开始pipeline,则会用到下面的动态替换element元件。element元件包括ending element和filter element,所以包括如下2类:一、filter element替换: 【原理】 处于非ending point的element元件,在替换某元件时,在unlink旧的元件,link新的元件之前,需要添加probe eos探针,eos信号给被替换元件的...
2021-03-05 10:02:29
900
2
原创 ARM-IMX6Q硬件视频流混合imxg2dcompositor
【目的】 硬件平台的视频流混合,方便讲2条视频流或者多条视频流混合输出为一条视频流,输出可以以RTSP形式输出,也可以直接显示LCD,也可以通过qmlglsink给qt的UI显示。【意义】 使用基于G2D的硬件视频流混合,比纯软件混合(比如gstreamer的videomixer)占用CPU资源要少的多。【硬件平台】 Imx6q-arm的硬件平台,video0和video1两个摄像头输入,其中video0是红外摄像头,DVP接IPU;video1是OV摄像头,MIP...
2021-02-05 15:09:10
1332
2
原创 linux网卡提供ioctl操作phy内核源码分析
MAC注册:./drivers/net/ethernet/freescale/fec_main.c注册mac驱动,compatible匹配dts里面的”fsl,imx6q-fec”的MAC设备,成功后->probe(fec_probe)中:struct net_device *ndev = alloc_ethrdev_mqs(); //创建net_devSET_NETDEV_DEV(ndev, &pdev->dev); //绑定net_dev到具体dev时钟资源get...
2021-01-22 15:44:15
984
1
原创 Qt+arm处理多路camera以及显示
qt采集摄像头视频并显示LCD的方案,基本如下3种:1、qt-widget v4l2: v4l2接口直接获取camera的qbuf,在timer中获取一帧数据后,添加上bmp头信息,然后通过imageWidget->setPixmap()来显示每帧图像;2、qt-widgetQcamera: qt使用qcamera空间,new QCameraViewfinder 用于LCD显示,new QCameraImageCapture 用于camera获取,SIGNAL...
2020-12-29 12:22:52
1688
原创 Gstreamer1.0+arm多路视频输入输出开发
一、背景: 【软件】ARM使用Imx6q,kernel使用4.9.88内核版本,从nxp官网获取yocto来编译整个BSP工程。rootfs使用包含qt5的版本,gstreamer1.0版本是1.12.2.NXP提供的yocto均为免费,其中我使用的是-b imx-linux-rocko -m imx-4.9.88-2.0.0_ga.xm这个版本的BSP。Imx6q支持的硬件IPU/VPU功能,在gstreamer中已经以插件和补丁形式提供支持。可以直接搜索:gst-inspect-...
2020-12-28 16:23:31
2235
原创 接口测试的对象化编程(X86的C)
【目的】 模块化编程设计中,对于模块提供的一些API接口,可能会在不同case下重复使用,case不同而调用顺序不同,或者说运行实例不同。为了增加代码的可视化和对象化设计,减少重复编码,这里使用数组来预定义api执行流程。【环境】 x86的64位dos环境下执行C代码。【方案】 给定的API接口,需要对其验证,不同case场合有不同的调...
2020-03-25 16:14:30
147
原创 SDM845的音频路径分析
【目的】 结合SDM845处理器的Android内核代码来静态分析deep_buffer spker的playback路径,涉及dts的解析,pcm fe->dai be->dai_link->codec->pa->spker的整个流程。【分析】1、PA wsa991x:static const struct snd_soc_dapm_rout...
2020-03-25 15:18:15
2846
1
原创 x86下xml文件解析C实现
【目的】 x86的64位的c工程的一个xml文件解析功能,能够解析xml的配置参数,以供程序其他模块使用。【方案】 1、使用第三方库tinyxml.dll,直接调用解析接口来使用; 2、自己写代码来实现对xml文件的解析,并使用list_head的双向链表存储xml中的所有元素。【实现】 1、使用linux内核数据结构...
2020-03-25 12:06:42
586
原创 MINGW64下的Makefile环境调用dll库
【前言】 X86的64位PC机上,一般使用eclipse+mingw的编辑和编译环境来实现无界面和有界面的开发工作,之前使用eclipse搭建环境需要用到dll库,而eclipse使用mingw编译环境对dll的支持不是很好,一直无法正常添加dll库到工程中去,所以摒弃了eclipse的编辑界面,直接使用Makefile+mingw64来编译链接,直接使用source insig...
2020-03-25 11:21:48
2490
1
转载 kdump分析三:解析kernel下的局部变量
Crash工具用于解析Vmcore文件,Vmcore文件为通过kdump等手段收集的操作系统core dump信息,在不采用压缩的情况下,其相当于整个物理内存的镜像,所以其中包括了最全面、最完整的信息,对于分析定位各种疑难问题有极大的帮助。配置kdump后,在内核panic后,会自动进入kump流程,搜集Vmcore。Crash工具即为专门用于分析vmcore文件的工具,其中提供了大量的实用分析...
2020-03-04 19:49:14
565
转载 Kernel Panic (Kdump) 解析实例之二:内存溢出
关于怎么打开core文件,参见上一篇,这里不罗嗦了。1) 首先,这个panic跟内存使用越界有关。先来看看导致panic的call trace和寄存器。RIP: 0010:[<ffffffff81237e71>] [<ffffffff81237e71>] elv_rqhash_add+0x81/0xa0RSP: 0018:ffff880142c7da68...
2020-03-04 19:40:57
1015
转载 kdump使用实例一:内存越界
Kernel Panic (Kdump) 解析实例之一原创Red-White-Blue 最后发布于2013-09-27 23:02:29 阅读数 4256 收藏网络上已经有一些介绍如何配置kexec已产生kdump的文章。这里不重复介绍配置方法,而是介绍如何进行kdump文件解析。下面介绍的都是Linux内核产生的kdump,利用crash这一工具解析。关于crash这个工具支持哪些命令...
2020-03-04 19:31:09
621
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人