![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 69
huntenganw
中年嵌入式工程师,随心所欲不逾矩。
展开
-
RK3588上手踩坑之启动卡死2
认真看了下文档,要求是22以上版本,果断换了ubuntu2204,一把编过,就是buildroot也是下载编好了。个人觉得还是用各大开发板商提供的核心板,毕竟经过了严格测试,还有一定的技术支持,少走些弯路。RK3588的SDK瑞芯微是没有开放的,这点太坑了,又想推广芯片,又要立牌坊。一番折腾,验证了自制硬件板是好的。自己画的板子,firefly的系统是不让用的,应该是在内核加了锁。各种检查,核对pin表和dts,检查了几遍,没啥问题。同事开发了一块RK3588Q,记录下上手的踩坑过程。崩溃了,问题出在哪?原创 2024-06-24 16:13:07 · 480 阅读 · 0 评论 -
瑞芯微RK3588驱动设计之DVP并口摄像头2
sensor_register这个是camera的寄存器设置,厂商调好的,一般不动。根据相应的选择配置就行。比如上面使用c2145->framesize_cfg[0]--------gc2145_dvp_framesizes[0]----gc2145_dvp_svga_20fps。BT601和BT656/BT1120的区别就是前者有行长同步信号,后者没有, 行场同步信号嵌入在数据流中。指定数据的排列,这里用MEDIA_BUS_FMT_UYVY8_2X8。这里看看驱动的具体实现,以gc2145为例。原创 2024-05-15 16:42:09 · 1010 阅读 · 0 评论 -
RK3588 camera驱动总结一
3. 当dphy0_hw使用full mode时,链路需要按照csi2_dphy1这条链路来配置,但是节点名称csi2_dphy1需要修改为csi2_dphy0,软件上是通过phy的序号来区分phy使用的模式。3. 当dphy1_hw使用full mode时,链路需要按照csi2_dphy4这条链路来配置,但是节点名称csi2_dphy4需要修改为csi2_dphy3,软件上是通过phy的序号来区分phy使用的模式。1. full mode:节点名称使用csi2_dphy0,最多支持4 lane。原创 2024-05-14 14:54:29 · 1031 阅读 · 0 评论 -
瑞芯微RK3588驱动配置之DVP并口摄像头1
在瑞芯微的早期芯片都是用的cif接口来描述,实际就是连接的dvp接口。如果是8位线宽,一般就是YUYV、UYVY来传输数据,如果是16位线宽,一般就是8位Y数据,8位UV数据传输。因为瑞芯微的大部分芯片都支持DVP摄像头,配置都大同小异,这里以当下最流行的RK3588为例,从文档资料中我们可以看到对DVP的支持能力。下面就是核心的配置了。挂载在i2c下,不管摄像头有没有用到i2c,必须挂载在i2c下,因为驱动的设计就是这样的,走这个总线最方便。在实际的传输中,还有内同步外同步的区别,这根据使用的摄像头来。原创 2024-02-20 10:27:04 · 1629 阅读 · 5 评论 -
RK3588上手踩坑实录
好,下载不了是吧,我在buildroot里面给你屏蔽先,继续运行,又是各种Duang,白白折腾二天,库没下全,编译不成功,闹心。原来编译内核,既生成了boot.img ,又生成了extboot.img,但是需要用到的是extboot.imx。仔细看打印消息,发现内核编译时间还是旧的,这时候怀疑没有烧写成功,重复一次,依然不行。拿到板子,首先上个电,默认烧写的貌似是ubuntu,我想用Linux,直接重新烧写。先下个buildroot的固件。重启,嗯,啥反应都没有,现象还是卡死在pcie,破防了。原创 2023-12-26 09:42:53 · 1241 阅读 · 0 评论 -
imx VPU解码分析5-Linux视频VPU设备驱动hantro
Linux内核驱动源文件在kernel/drivers/mxc下,在hantro库中也发现有这个驱动,文件在hantro/decoder_sw/software/linux/pcidriver。这里以内核中的驱动文件为主,后面再看二者的差别。vpu的使用依赖驱动,驱动名称是hantro,在设备节点中为/dev/mxc_hantro。前文提到二个驱动文件,经过对比,发现基本一致,感觉是版本升级了,内核这个比较新。主要函数就是设备检测函数hantro_dev_probe。这个设备树描述了VPU的信息。原创 2023-11-23 15:26:54 · 277 阅读 · 0 评论 -
imx VPU解码分析4-抽丝剥茧wrap与hantro的关系
前面已经分析了wrap和hantro,但是二者是如何结合的,wrap是如何封装hantro的,提供了哪些接口,封装了哪些细节还不太清楚,此文来探究下。原创 2023-11-21 16:14:13 · 166 阅读 · 0 评论 -
使用FFmpeg开发简介1
适逢FFmpeg6.1发布,准备深入学习下FFmpeg,将会写下系列学习记录。这个install文件,实际就相当于一个ffmpeg的sdk了,利用它就开发自己的程序了。重点看看头文件中的函数,究竟给我们提供了怎样的接口函数、怎么使用就是难点了。以前在某个地方看到说so库的后缀中可以看到版本号,从ffmpeg的lib中看到这个不一致,也就是这个规则不存在的。二次开发则需要编译出的库。原创 2023-11-12 23:05:37 · 870 阅读 · 0 评论 -
适用于嵌入式arm的ffmpeg编解码
现在ffmpeg更新较频繁,如果使用API开发,各个版本都有一定区别,建议查阅文档。如果只需要ffmpeg的命令行,就不用理会了,直接上最新的。在嵌入式arm应用开发中,经常会遇到需要处理视频的情况,这时候就需要强大的开源工具ffmpeg出马了。这里的ffmpeg只具备了解码的功能,如果还需要264等编码功能,还需要安装x264库,这里就不细说了,网上很多教程。ffmpeg的编译系统做得特别好,基本兼容各类型环境,不管是x86还是arm,都可以顺利编译通过。将生成的so库拷贝到系统目录下,执行程序即可。原创 2023-10-27 12:15:28 · 983 阅读 · 0 评论 -
嵌入式Linux下tc358743的驱动设计
设备树配置的名字得和这个驱动名称一致,就是compatible属性tc358743还是tc358749。总之,这个结构体用于组织和管理TC35874X设备的各种状态信息和控制参数。因为内核已经有了这个官方给的驱动,不需要再折腾,所有直接menuconfig配置上就行了。它包含了一系列成员变量和控件,用于管理并存储TC35874X设备的状态。等,其中一些成员变量与设备的配置、控制、信号处理等相关。最重要的就是probe函数了,基本的初始化配置都是在这里实现的。可以看出tc358743的功能还是很强大的。原创 2023-07-07 15:49:50 · 1133 阅读 · 2 评论 -
全志A40i调试记录
记录下全志A40i调试中的一些问题原创 2023-03-16 17:34:27 · 393 阅读 · 2 评论 -
ARM应用之瑞芯微RK3568上使用QT+Opencv
手上有一块RK3568板子,正好官方SDK提供了opencv和QT的环境,就整个QT+OPENCV的简单应用玩玩。还是通过ioctl映射出原始的图像数据,这里将图像的YUV数据转为bgr。在opencv中一般输入的是bgr图像进行处理。QT一般使用的是RGB图像,所以注意得转换一下,不然那颜色就反了。这里直接使用USB采集的图像进行处理。原创 2023-03-14 17:23:25 · 2230 阅读 · 0 评论 -
在ARM上使用QT的TCP/UDP实现图像数据传输
在ARM上使用QT的TCP/UDP实现图像数据传输原创 2023-01-12 11:46:18 · 1117 阅读 · 0 评论 -
Linux系统C函数简记
Linux系统函数原创 2022-11-09 10:45:00 · 484 阅读 · 0 评论 -
瑞芯微RK3568驱动配置之十串口
基于飞凌的开发板设计,这里需要使用到RK3568的串口,开发板只开放了UART2、UART3、UART4、UART5、UART8。查看文档,准备配置UART0、UART6、UART7、UART9。rk3568.dtsi为基本配置文件,只需要修改OK3568-C-common.dtsi。占用了LVDS的管脚,LVDS无法使用。修改设备树DTS文件配置。原创 2022-09-28 11:33:00 · 6489 阅读 · 1 评论 -
Linux多进程之线程通信
互斥量类似一把锁,用来保护数据,防止几个线程同时访问修改统一数据,加锁后同一时刻只有一个线程能够处理,其他线程阻塞。在多线程程序中,多个线程并发执行一个程序,所有线程共享相同的全局和堆变量,但每个线程都配有用来存放局部变量的私有栈。多用于在某个子线程平时不执行,当满足某一条件时,在主线程发出消息,子线程再执行的情况。条件变量允许一个线程就某个共享变量的状态变化通知其他线程,并让其他线程等待这一通知。线程ID:进程内部的每个线程都有一个唯一标识,称为线程ID。创建线程:pthread_create()原创 2022-09-07 15:50:11 · 257 阅读 · 0 评论 -
Linux 文件IO之操作缓存
在Linux世界里,一切皆文件。Linux中所有的IO操作的系统调用都是文件描述符。原创 2022-09-02 16:36:09 · 359 阅读 · 0 评论