- 博客(1188)
- 资源 (77)
- 收藏
- 关注
原创 DRM应用编程–atomic接口
如下图所示: 上图的Properties并非全部的Properties,这里只列举了drm程序里通用的几个Properties, 如果想要知道更多的Properties,后面的程序分析会有讲到。当开发者有新的功能需要添加时, 无需增加新的函数名和IOCTL,只需在底层驱动中新增一个property, 然后在自己的应用程序中获取/操作该property的值即可。Property把前面的legacy接口传入的参数单独抽出来,做成一个个独立的全局属性。通过设置这些属性参数,即可完成对显示参数的设置。
2025-02-21 09:51:18
52
1
原创 基于drm框架的drmModeAtomicSetCursor接口的用法,以及完整的代码示例
这个示例代码演示了如何使用drmModeAtomicSetCursor函数来设置cursor的位置。它首先找到可用的CRTC,然后创建一个cursor plane和一个buffer,最后将cursor移动到指定位置。在执行完毕之后,程序会清理所有资源并退出。
2025-02-21 09:48:05
44
原创 RK3588---doubleBuffer、page-flip
drmModePageFlip()的功能也是用于更新显示内容的,但是它和drmModeSetCrtc()最大的区别在于,drmModePageFlip()只会等到VSYNC到来后才会真正执行framebuffer切换动作,而drmModeSetCrtc()则会立即执行framebuffer切换动作。所以将新帧画面绘制到framebuffer时,需要绘制到一个新buffer,而不是front-buffer(即正在使用的buffer),避免这种现象发生的技术称为double-buffering。
2024-12-13 15:57:32
122
原创 RK3588--解码H264(mpp-dec-h264-to-yuv-file)
当解码器中数据读取到结束标志位时进入mpp_frame_get_eos()分支,设置over变量,最终循环终止,解码结束。dump_frame_to_file:这个函数将从解码器获取的MppFrame保存到指定文件,当解码器第一次返回时通常会走进mpp_frame_get_info_change()分支,在这个分支里可以设置图像内存分配以及交互模式模式,如果使用纯内部模式,则直接调用ret = mpi->control(ctx, MPP_DEC_SET_INFO_CHANGE_READY, NULL);
2024-12-07 13:10:04
206
原创 RK3588---编解码之mpp解码demo解析:mpi_dec_test,源码讲解
1. 简介mpi_dec_test 是rockchip官方解码 demo本篇文章进行mpi_dec_test 的代码解析,解码流程解析2. 环境介绍硬件环境:ArmSoM-W3 RK3588开发板软件版本:3. mpp解码流程解析图3.1 RKMPP解码器接口为用户提供了输入码流,输出图像的功能mpp_create :获取 MppCtx 实例以及 MppApi 结构体mpp_init: 初始化MppCtx 的编解码类型与格式。
2024-12-04 10:33:39
647
原创 RK3588-DRM例子(modetest、modeset-single-buffer)
【代码】RK3588-DRM例子(modetest、modeset-single-buffer)
2024-11-27 16:42:44
358
原创 RK3588-MPP 库编译与使用
此函数先初始化一个buffer,然后将输入文件的info,data等信息放到这个buffer里面,再调用 mpp_create 实例化一个MppCtx 然后使用 mpp_init 初始化它,再使用 mpp_enc_cfg_init 设置一下,最后在 test_mpp_run 中调用 mpi->encode_put_frame(ctx, frame);mpi_enc_test_cmd_update_by_args函数就是逐个参数解析,并检查参数,然后把不全的参数补齐。然后cd到mpp的工程目录下,分别执行。
2024-11-27 16:17:39
506
原创 RK3588-LinuxSDK安装
镜像文件说明 boot.img 内核镜像,包含内核和设备树 MiniLoaderAll.bin DDR 初始化镜像和 U-Boot SPL 镜像 misc.img misc 镜像 oem.img oem 镜像,存放用户数据,挂载至文件系统的"/oem"目录 parameter.txt 分区表,update.img 按照此分区表存放各个镜像 recovery.img recovery 镜像,用于系统升级 rootfs.img 根文件系统镜像 uboot.img U-Boot 镜像。
2024-11-26 15:26:21
302
原创 Ubuntu下v4l2采集摄像头视频
linux系统下一切皆文件,对视频设备的操作就像对文件的操作一样,使用类似读取、写入文件的方式来进行,v4l2也都是通过open()、ioctl()、read()、close()来实现对视频设备的操作。指向该缓冲区的用户空间指针。// 当 memory 为 V4L2_MEMORY_DMABUF 时,与该平面相关联的用户空间文件描述符。v4l2_format中的fmt是联合体,不同的type使用不用类型的结构体,V4L2_BUF_TYPE_VIDEO_CAPTURE使用v4l2_pix_format。
2024-10-09 10:00:35
714
原创 ubuntu下打开摄像头
这是一个开源的摄像头应用程序。来打开摄像头并进行简单的录制。首先确保你已经安装了。设置视频分辨率为640x480,在Ubuntu下,你可以使用。指定了使用V4L2驱动,ubuntu下打开摄像头。
2024-10-09 09:45:59
1333
原创 vmware下ubuntu18.04中使用笔记本的摄像头
win10系统中,在左下的搜索栏,搜索“相机”,点击进入即可打开相机,并正常显示图像。注意:如果相机连接到了虚拟机,则不能显示正常。步骤5:重新打开相机工具,可以正常显示图像。步骤1:在windows中检查相机状态。按照上述操作之后在系统中可找到设备。按照以上步骤,等待虚拟机的自动启动。步骤2:在ubuntu中连接相机。使用ubuntu自带的茄子工具,但是显示没有发现设备!步骤3:使用工具打开相机。
2024-10-09 09:40:54
808
原创 C语言 BMP图片的旋转与缩放
printf("位图实际数据大小:%d_%d(kb)\n", srcBmpInfoHeader->biSizeImage, srcBmpInfoHeader->biSizeImage / 1024);printf("文件大小:%d_%d(kb)\n", srcBmpFileHeader->bfSize, srcBmpFileHeader->bfSize / 1024);//写入位图实际数据。printf("位图实际使用的颜色数:%d\n", srcBmpInfoHeader->biClrUsed);
2024-03-04 16:35:12
1933
原创 图像传感器与信号处理——SFR算法/ISO 12233解读
(2)文中提到,相机拍摄的Test Chart可能并不是占据整张像,因此获得的结果也需要按照Test Chart的大小比例进行放缩,例如,图像中的Test Chart只占据整张图像的1/2,按照Test Chart获得的结果是2000LW/PH,那么相机的实际分辨率是4000LW/P。以我的理解,ISO 12233这篇文章主要是规定了摄像头分辨率的测量标准,一共有三种方法:基于视觉的分辨率测量方法,基于边界的SFR算法以及基于正弦波的SFR算法。
2024-03-04 16:32:15
3381
3
原创 最小二乘法C语言的实现
printf ("\n请输入您要处理的数据的组数(提示:程序定义一对x,y值为一组数据):");printf ("请输入第%d个x的值x%d=",i+1,i+1);printf ("\n请输入你要修改的第%d个x的值x%d=",z,z);printf ("\n请输入第%d个x的值x%d=",i+1,i+1);printf ("\n请输入你要修改的对应的y的值:y%d=",z);printf (" 输入对应的y的值:y%d=",i+1);printf ("\n请输入对应的y的值:y%d=",i+1);
2024-03-04 16:30:41
1439
原创 OpenCV | 直线拟合fitline函数(Python)
之前做直线拟合时,自己写了一个利用最小二乘做直线拟合的程序,但是由于直线检测的误差比较大,拟合的效果并不好。个人不知道是什么原因,因此想尝试更改一下直线拟合的算法,后来找到了OpenCV中的fitline函数,也是一个距离最小化函数,它完全包含了最小二乘法。output : 对于二维直线,输出output为4维,前两维代表拟合出的直线的方向,后两位代表直线上的一点。注意,这里是N条直线的直线拟合,拟合思路为提取N条直线的坐标点,然后进行点的直线拟合。这里,data_line1 表示直线检测出的直线的数据。
2024-03-04 16:29:25
2217
原创 用Visual Studio 2015成功编译、发布UMDF驱动到目标机!!
D,上面点击“下一步”按钮后,就进入了主机和目标机建立通讯的过程,这个过程需要一些时间,要耐心等待完成,不要进行其它操作,期间目标机会进行多次重启操作,都是自动完成,我们不要进行任何人为干预!B,点击VS2015的菜单“生成”->“部署 UMDF 2 Driver1”,注意,这里面的“UMDF 2 Driver1”是我当前建立的工程名称,如果你的工程名称和我的不一样,那么只是后面的工程名称不同而已,也是选择这个菜单项!C,对这个驱动进行编译,如果一切顺利,那么从输出窗口,我们应该能看到编译成功的信息!
2024-02-27 10:27:46
1016
原创 测试模式
bcdedit.exe /set nointegritychecks onbcdedit.exe /set nointegritychecks offbcdedit /set testsigning onbcdedit /set testsigning off
2024-02-23 11:44:10
142
原创 像素格式转换
使用ffmpeg的swscale_scale函数可以实现像素格式转换,具体代码如下:#include <libavcodec/avcodec.h>#include <libswscale/swscale.h>int main(){ // 初始化转换器 struct SwsContext *sws_ctx = sws_getContext(width, height, AV_PIX_FMT_YUYV422, width, height, AV_PIX
2024-01-08 08:43:28
896
原创 CH340串口驱动(包含各系统平台)
说明:CH340/CH341 USB转串口WINDOWS驱动程序,支持32/64位Windows 11/10/8.1/8/7/VISTA/XP,SERVER 2022/2019/2016/2012/2008/2003,2000/ME/98,通过微软数字签名认证,支持USB转UART/3线和9线SERIAL串口等,用于随产品发行到最终用户。CH340/CH341/CH342/CH343/CH344/CH347/CH9101/CH9102/CH9103/CH9143 MAC驱动链接。
2023-11-30 10:25:31
3726
原创 PCIe 配置空间:Command 寄存器
该位为 0 时,Root Port 或者 Switch 的 Downsteam 端口收到 Memory 请求和 I/O 请求后,应该按照 Unsupported Requests(UR)处理。除了 Memory 读写请求和 I/O 读写请求,其他类型的请求不受该位控制。除了 Memory 读写请求和 I/O 读写请求,其他类型的请求不受该位控制。该位为 0 时,不允许设备发出 Memory 读写请求、I/O 读写请求。该位为 1 时,允许设备发出 Memory 读写请求、I/O 读写请求。
2023-09-05 09:03:53
943
原创 C语言socket传输文件
可以传输大型文件,其基本思想为把文件名字读出来放到filename数组中,然后copy到buffer中,接着将独到的文件内容接在buffer数组中文件名称后面。然后循环读取,以后每次将独到的数据放入buffer传输。TCP服务端和TCP客户端编程,完成文件传输(客户端输入文件名,服务端接收文件数据并保存至服务端本地)此文件是在Linux系统运行的,Windows中不包含socket等头文件。关于头文件可以参考socket编程中用到的头文件。关于用到的函数可以通过查询C 语言教程。下面是客户端端的代码。
2023-06-29 17:09:55
764
原创 Ubuntu 18.04安装 RT-PREEMPT 实时内核及补丁【过程记录】
Ubuntu 18.04安装 RT-PREEMPT 实时内核及补丁【过程记录】1、查看当前内核版本2、下载内核和补丁3、配置内核4、编译内核5、安装 deb 包6、reboot 并验证7、参考8、给实时内核安装 nvidia 显卡驱动8.1 进入之前的非实时内核系统中查看nvidia 驱动版本号8.2 卸载 nvidia 驱动(非实时内核中)8.3 查看适配的 nvidia 版本(非实时内核中)8.4 安装推荐版本的 nvidia 驱动(非实时内核中)
2023-05-19 10:13:14
1219
原创 【UEFI实战】EFI System Table中的输入输出
gEfiSimpleTextOutProtocolGuid的安装对应到不同的情况,比如对于串口就需要有gEfiSerialIoProtocolGuid,对于显示器就需要依赖于gEfiUgaDrawProtocolGuid或者gEfiGraphicsOutputProtocolGuid等与图形输出有关的protocols。这里有一个循环,可以起到多个位置打印的效果,而ConSplitterTextOutAddDevice()可以增加输出位置。DEBUG,它一般通过串口输出,这个是调试的时候最常用的;
2023-05-09 11:32:40
992
原创 【UEFI实战】Linux下如何解析ACPI表
上述的iasl工具获取ACPI表需要从特定目录去拿,比较复杂,这里还可以用一个简单的工具acpidump来获取。iasl是一个编译和解析ACPI的工具,在编译UEFI的时候也是必不可少的。之后就可以通过iasl命令来解析ACPI文件了。本文介绍如何在Linux下查看ACPI表示。以上就是对APCI表在Linux下解析的一些说明。所以需要借助额外的工具来查看。
2023-05-09 11:32:36
1659
原创 【UEFI基础】ACPI基础
为了让OSPM能够控制计算机上的设备的资源和热插拔,ACPI提供了一种描述这些设备的信息和控制方式的结构,称为ACPI Definition Blocks,它们按照一种层级结构组织,这种组织方式成为ACPI Namespace。因为OS控制了设备和CPU的电源和性能,所以也需要通过ACPI来管理温度,ACPI中可以方便的定义温度区域,温度指示器和冷却温度区域的方法。ACPI表描述了计算机包含的设备以及它们的电源状态(D状态,D0表示正常状态,数字越大性能和耗能越小),使设备进入不同电源状态的控制方式。
2023-05-09 11:31:22
2468
原创 UEFI开发探索13 – 访问PCI/PCI-E设备1
从实践中知道,PCI I/O Protocol可以访问改在在主板上的所有PCI设备,而PCI Root Bridge I/O Protocol不能访问PCI to PCI桥设备。UEFI Spec中有两个protocol可以访问PCI设备,PCI Root Bridge I/O Protocol和PCI I/O Protocol。配置空间包括一系列的PCI配置寄存器,其实现位置可以在PCI配置空间中,或者IO空间,也可以直接在申请的memory空间中实现。代码中以此函数,获取所有能找到的PCI设备。
2023-04-23 15:48:14
827
原创 Uefi编程 检查Pcie设备是否支持ASPM功能
WritePci.c (待完善,需要保持其他寄存器值不变)对pci设备某个寄存器实现写功能。WritePci.inf文件。Aspm.inf文件。
2023-04-23 12:39:03
943
1
原创 如何在飞腾平台上安装Ubuntu操作系统
注意: 若主板上配置的是NVME硬盘,在进行内核配置时,需要将内核的NEME驱动勾选上,否则移植内核时,无法找到文件系统,进不去操作系统。可以通过rufus软件将镜像做到U盘中,本次使用版本为Rufus 3.9.124 ,其他版本也可以。不要下载live版本的,没有准备网络环境,是一个头疼的事情,笔者暂时没有实现网络安装。将U盘接到主板usb口上,接上串口,显示器,,必需串口有打印才可以安装。可以通过dd命令,将iso安装到U盘。安装的是最小系统,缺少很多命令,需要联网更新,或则更换飞腾专用内核。
2023-04-23 09:24:22
1790
原创 读取飞腾套片X100内部温度和chipID
上面返回共16字节有效数值0x4b 0x50 0x41 0x30 0x34 0x39 0x30 0x31 0x33 0x32 0x31 0x39 0x30 0x30 0x30 0x30,转换成ASCII字符串,即“KPA0490132190000”。sudo i2ctransfer -f -y 1 w10@0x18 0x00 0x70 0x02 0x10 0x28 0x00 0x00 0x00 0x01 0x01 //低32bit。//读取chipID 高32-bit。//读取chipID。
2023-04-23 09:21:14
1100
原创 coreboot & seabios
seabios现在是很多虚拟机的默认启动bios,这跟它的短小精干有很大关系,也跟它提供比较完备的legacy支持有关。按照以下步骤把seabios制作成coreboot的payload,最新的代码是seabios v1.7.3.1建议先试用seabios v1.7.2,因为下面提供的参考.config文件基于seabios v1.7.2。如果运行该命令时报错,一般可安装所需的library解决。
2023-04-17 09:59:51
1143
原创 在Ubuntu18.04或者20.04下搭建edk2运行环境
4.安装OpenSSL* Crypto 库:https://github.com/openssl/openssl/archive/OpenSSL_1_1_0g.zip,下载解压至目录UDK2018\CryptoPkg\Library\OpensslLib,并命名为openssl。1.下载edk2源码https://github.com/tianocore/edk2/releases/tag/vUDK2018。也可下载最新版edk2。(最好下载Linux下的.tar.gz类型的源码文件。
2023-04-15 11:46:53
560
原创 Ubuntu16.04 python2.7升级python3.5
安装完成之后,你在终端中输入python,输出的信息里面会提示是2.7版本的,也就是说默认打开的并不是刚才安装好的3.5,所以还需要我们重新修改一下链接。正常情况下,你安装好ubuntu16.04版本之后,系统会自带 python2.7版本,如果需要下载新版本的python3.5,就需要进行更新。输入你的密码后会下载,刚才下载的Python程序被安装在usr/localb/python3.5 中。2.指定默认打开的是python3.5版本(你新安装的python版本)。至此,python版本更新已经完成。
2023-04-15 11:43:25
816
1
原创 Ubuntu 18.04系统中可用并行算法库的GCC-9安装
使用C++17需要gcc为7.0以上版本即可,但要使用C++ 17 STL并行算法库,必须是9.1以上版本。Ubuntu 16.04系统中使用GCC 9.1及Intel TBB库运行C++17 STL并行算法库。如果输入选项2,则会将系统默认调用的gcc版本定为9。我需要使用并行库,但gcc为7.5版本,故有此文。可以看到我这里是gcc7.5。如果还想装其他版本可参考链接。接下来TBB的安装请参考。
2023-04-15 11:40:31
1066
原创 UEFI Device Path (1): 重新认识Device Path
每个variable的内容都包含1个Device Path,这个Device Path表示每次开机默认使用的用于该种用途(ConIn,ConOut, ErrOut)的Console Device,UEFI应用可以通过这个Device Path来确定对应的Console Device。Messaging Device Path IDE设备,USB设备,SATA设备,SAS设备,SCSI设备,UART设备,Vendor自定义对象,MAC地址,IPv4/IPv6地址,其他新兴设备。
2023-04-06 08:21:54
1289
e1000e-3.8.4.tar.gz
2020-08-17
win7 vs2012+wdk8.0 pci驱动源码 Solution.zip
2019-05-27
后台服务监控应用
2019-03-14
删除vs垃圾
2019-01-05
基于HI3531d的udp命令控制basler pylon gige工业相机程序
2018-12-05
基于hi3531、3531d的yuv压缩h264
2018-11-22
基于hi3531的live555例子(发送h264)
2018-11-20
hi3531\3531a\3531d\3536\3536d\3559\3559a\3519SDK
2018-11-16
基于basler工业相机的H264压缩
2018-10-29
dm642_PCI_INTA
2017-09-13
uefi的protocol例子
2023-03-18
Windows Embedded Standard 7 快速入门指南1234.pdf
2021-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人