自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 收藏
  • 关注

原创 MTK Linux DRM分析(十一)- MTK KMS Panel显示屏驱动

面板扩展(Panel Extension)是指 MediaTek 在标准 DRM 面板驱动框架之上添加的定制化功能模块。

2025-08-22 09:58:41 1302

原创 MTK Linux DRM分析(十)- KMS drm_connector.c

drm_connector 是 DRM 子系统中用于抽象和管理显示输出设备的核心组件。

2025-08-21 17:01:26 1142

原创 MTK Linux DRM分析(九)- KMS drm_encoder.c

基本原理:Encoder 是 DRM 中连接 CRTC 和 Connector 的中间组件,负责像素数据的格式转换和信号处理。它通过模块化设计支持多种硬件接口,并与 drm_bridge 和 drm_i2c_encoder 配合实现复杂功能。主要作用转换像素数据以适配不同硬件接口。提供模块化驱动支持,简化硬件适配。向用户空间暴露显示管道信息(尽管受限)。支持电源管理、模式设置和硬件检测。I2C Encoder 的特殊性。

2025-08-21 15:51:38 695

原创 MTK Linux DRM分析(八)- KMS drm_crtc.c

CRTC 在 Linux DRM 子系统中是显示控制的核心,负责时序生成、模式设置和管线的调度。理解其工作原理和 API 对于进行底层图形开发、调试显示问题或 simply understanding how your graphics stack works 都至关重要。

2025-08-21 11:31:52 1080

原创 MTK Linux DRM分析(七)- KMS drm_plane.c

在 Linux DRM(Direct Rendering Manager)子系统中,(平面)代表了一个图像源,可以在扫描输出过程中与 CRTC 混合或叠加显示。每个 Plane 从中获取输入数据,并负责图像的裁剪、缩放、旋转等变换,最终显示在 CRTC 代表的显示区域上。:主平面,通常用于显示主内容,每个 CRTC 必须有一个主平面。:光标平面,用于显示硬件光标。:覆盖平面,用于额外的叠加层(如视频播放)。

2025-08-21 11:08:29 999

原创 MTK Linux DRM分析(六)- KMS(Kernel Mode Setting)对象模型

(图层):primary(主图层)、cursor(光标)、overlay(覆盖层)。每个 plane 声明自己支持的像素格式/修饰符(modifier),并绑定到可用的 CRTC。:外部连接器,暴露给用户态(HDMI-A、eDP、DSI-panel、Writeback 等)。:把 CRTC 的像素流编码到某种物理链路(HDMI/DP/DSI…DRM Core 提供统一的对象/IOCTL,驱动填充回调即可。(扫描管线):时序发生器,代表一个“显示管线”。:显示子系统总管,保存全局能力、各种对象集合。

2025-08-21 10:43:33 431

原创 MTK Linux DRM分析(五)- 其他drm_mode_xx.c简要总结

这些对象包括 CRTC(显示控制器)、平面(planes)、连接器(connectors)和编码器(encoders)等,用于跟踪和引用图形硬件的配置。drm_modes.c 处理 DRM 中的显示模式(display modes),包括时序计算(timings)、模式线(modeline)的创建、验证和比较。drm_modeset_helper.c 提供模式设置(mode setting)的辅助函数,帮助驱动程序简化连接器探测、电源管理(DPMS)和 CRTC/编码器状态管理。

2025-08-21 10:02:18 835

原创 MTK Linux DRM分析(四)- drm_mode_config.c

函数主要作用目的被调用场景创建 DRM 对象的标准属性(如坐标、帧缓冲 ID、颜色管理 LUT)。提供用户空间与硬件交互的标准化接口,确保 UAPI 一致性。由 drmm_mode_config_init 调用,作为模式配置初始化的子步骤。注册所有模式设置组件(平面、CRTC、编码器、连接器)。使 DRM 组件对用户空间可见,支持模式设置操作,并确保错误恢复。通常在驱动程序初始化时调用,晚于模式配置初始化。

2025-08-21 09:44:10 1075

原创 MTK Linux DRM分析(三)- drm_drv.c分析

Linux DRM (Direct Rendering Manager) 子系统是内核图形框架的核心,drm_drv.c 文件负责 DRM 设备的注册、初始化和注销等通用驱动逻辑。它不直接实现 plane、CRTC、connector 或 encoder 的具体功能,这些功能分别在 drm_plane.c、drm_crtc.c、drm_connector.c 和 drm_encoder.c 中定义。

2025-08-20 18:18:39 732

原创 MTK Linux DRM分析(二)- 核心层代码目录和基本流程

核心框架drm_drv.cdrm_file.cKMS 对象drm_crtc.cAtomic 模式设置Buffer 管理drm_gem*.cdrm_mm.c显示模式drm_edid.c辅助模块调试与工具PQ/色彩vblank & 事件。

2025-08-20 18:01:03 802

原创 MTK Linux DRM分析(一)- DRM简介

DRM驱动通过分层设计(KMS/GEM)统一管理显示与渲染任务,支持多应用并发访问、原子更新(无闪烁)和高级GPU功能,成为现代Linux图形栈的核心基础。其灵活性适用于从嵌入式设备(如RK3506处理器)到桌面级显卡的广泛场景。

2025-08-20 17:43:26 453

原创 PCIE FAQ

传统PCI使用物理中断引脚(INTA#、INTB#、INTC#、INTD#)来传递中断信号,而PCIe引入了更高效的**消息信号中断(MSI,Message Signaled Interrupt)**和**MSI-X**,以及部分场景下的**传统中断仿真(Legacy Interrupt)**,从而淘汰了物理中断引脚。PCIe枚举流程通过配置读/写TLP发现和配置设备,涉及的主要TLP类型包括**CfgRd**、**CfgWr**、**Cpl/CplD**,偶尔使用**MRd/MWr**和**Msg**。

2025-07-31 11:33:53 913

原创 使用Nuclei IDE调试N900内核Linux启动

本文档主要说明如何调试在板子上运行的程序,调试原理是用pc端openocd做gdb server,接收pc端gdb发送过来的命令,通过jtag与板子进行通信,完成相应命令的处理。出现这个错误提示,一般是跨image 调试时,出现此地址不在当前调试镜像内存范围内,所以跨镜像调试前,需要把断点删掉,以免出现错误调试。IDE上调试和gdb 调试原理上是一样的,只是gdb 输入的是命令,IDE上是以图形化呈现功能,人机交互IDE界面会更友好一些。内存地址可以是物理地址,也可以是虚拟地址(前提是系统开了MMU)

2025-06-20 17:46:58 1092

原创 Zephyr boot

dsp_acts</code>设备被配置在<code>POST_KERNEL</code>级别进行初始化。<li><strong>执行调用:</strong> 当遍历到 <code>dsp_acts</code> 对应的入口时,内核会调用 <code>dsp_acts_init</code> 函数,并将指向 <code>dsp_acts

2025-06-19 15:38:30 561

原创 Luckfox Pico Max运行RKNN-Toolkit2中的Yolov5 adb USB仿真

RV1103/RV1106上使用的RKNPU Runtime库是librknnmrt.so,使用32-bit的rknn_server,启动步骤如下:(armhf-uclibc)2:修改onnx目录下的yolov5的test.py的代码。4:运行yolov5的python代码进行adb连接仿真。3:adb push rknn_sever和依赖库。1:下载rknn-toolkit2。

2025-02-19 11:34:03 627

原创 ES8388 Record/Playback/Bypass寄存器设置

* ADC 数据选择为left data = left ADC, right data = left ADC 音频数据为16bit *//* ADC数字音量控制将信号衰减 L 设置为最小!/* ADC数字音量控制将信号衰减 R 设置为最小!/* DAC 配置 MCLK/采样率=256 *//* ADC L/R PGA增益配置为+24dB *//* ADC配置 MCLK/采样率=256 *//* 软复位ES8388 *//* 等待复位 *//* L混频器 *//* R混频器 */

2024-09-03 15:50:15 1701

原创 Eclipse添加C和C++编译成汇编文件的选项

在miscellaneous中添加assemble listing选项就可以生成汇编文件了。

2024-06-06 08:40:27 670

原创 FunASR在Ubuntu上的部署(2pass模式)

1:注意事项,server端启动需要比较长时间,因为需要在线下载很多模型。2:启动客户端会需要配置好端口号。

2024-05-13 16:34:42 1119

原创 Jetson AGX Orin平台搭建whisper语音转写实时录音

A: 平台不支持,修改Makefile,查看支持的计算ARCH_FLAG。这样编译可通过了, Steam是实时转写的,用大模型效果会好点。模型下载用github的脚本下载会报错,可以在以下链接下载。B:错误 修改Makefile 339行开始注释掉。编译WHISPER_CUDA=1 make -j。很多应用APP都在example目录。1:下载whisper C++版本。1:语音转写需要转成16bit的。

2024-05-07 16:33:32 629

转载 ESP WiFi启动流程

当运行系统初始化时,PRO CPU 上的代码会给 APP CPU 设置好入口地址,解除其复位状态,然后等待 APP CPU 上运行的代码设置一个全局标志,以表明 APP CPU 已经正常启动。APP CPU 的复位状态会在应用程序启动代码的。一旦处理完所有段(即加载了代码并设置了 flash MMU),二级引导程序将验证应用程序的完整性,并从二进制镜像文件的头部寻找入口地址,然后跳转到该地址处运行。当一级引导程序校验并加载完二级引导程序后,它会从二进制镜像的头部找到二级引导程序的入口点,并跳转过去运行。

2024-01-18 14:16:06 211

原创 基于Tasmota NodeMCU和安信可AI-Thinker RD-03毫米波雷达人体检测

6: 查看console log就可以看到检测到人体会持续一段时间ON,没有人体会显示OFF。5:Tasmota设置MQTT服务器相关参数,在console口中输入命令。1:下载VSCODE,安装PlatformIO插件。3:下载Tasmotizer选择对应串口烧录附件。2:编译固件,选择Tasmota CN。4:选择Tasmota 设置。

2023-12-08 16:56:45 492

原创 Node MCU V3学习(基于ESP8266)

3:安装u8g2图形库,直接在项目-->导入库-->管理库中搜索u8g2安装,注意不是u8glib库。4:打开文件-->示例-->u8g2-->full_buffer-->GraphicsTest。安装错误的库会导致出现编译错误。2:开发环境搭建参考。

2023-05-08 14:09:25 1104

原创 Android OrangePi 4G IOT(五) - MTK电源管理驱动(一)

一、MTK电源管理组成这里讲的电源管理驱动主要是SPM驱动,CPU idle驱动,CPU Hotplug驱动,CPU Frequency驱动等,代码主要集中在以下目录。1:/home/ubuntu/Mediatek/code/kernel-3.18/drivers/misc/mediatek/base/power/2:/home/ubuntu/Mediatek/code/kernel-3.18/drivers/base/power3:/home/ubuntu/Mediatek/c...

2022-05-29 19:54:52 877

原创 Android OrangePi 4G IOT(四) - MTK LK分析

一、MTK启动流程1-3:设备上电起来后,跳转到Boot ROM(不是flash)中的boot code中执行把pre-loader加载起到ISRAM, 因为当前DRAM(RAM分SRAM跟DRAM,简单来说SRAM就是cache,DRAM就是普通内存)还没有准备好,所以要先把pre-loader load到芯片内部的ISRAM(Internal SRAM)中。4-6:pre-loader初始化好DRAM后就将lk从flash(nand/emmc)中加载到DRAM中运行;7-8:解压boot..

2022-05-28 21:50:44 1467

原创 Android OrangePi 4G IOT(三) - MTK preloader分析

一、代码目录结构二、preloader简介1: preloader实在LK启动前一阶段的对系统进行初始化的代码,在bootroom后加载的。2: 对硬件进行必要的一些准备和初始化(Timer,PLL,UART,GPIO,PMIC Wrapper,I2C,PMIC,Mem/Storage初始化,Memory自检)3:检测商店原因(RTC,WDT,Powerkey,USB),然后检查是否关闭BB的power4:启动模式检测,检测来自tools的启动模式(Flashtool,Metatoo

2022-05-21 20:41:53 2232 1

原创 Android OrangePi 4G IOT(二) - MTK更换调试串口

一、OrangePi 4G IOT简介香橙派Orange Pi 4G-IOT是一款开源的单板电脑,新一代的arm开发板,它可以运行Android6.0、Lunix等操作系统。香橙派Orange Pi 4G-IOT使用MTK系列MT6737 CPU,同时拥有1GB DDR3 内存。

2022-05-14 20:50:36 3484

原创 Android OrangePi 4G IOT(一) - MTK Android开发环境搭建

Android 6开发环境搭建

2022-05-14 20:37:32 881

原创 sublime text安装

aptThe apt repository contains packages for both x86-64 and arm64.Install the GPG key:wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -Ensure apt is set up to work with https sources:sudo apt-get install apt-tr

2021-12-24 22:32:13 902

原创 Linux 5.1移植到orange pi (八)--PWM驱动

1:移植PWM驱动PWM驱动主要是修改下DTS,看了下驱动架构和Linux 3.10区别还是比较大,主要添加了sysfs接口为上层提供控制接口,echo 0 > /sys/class/pwm/pwmchip0/exportecho 1000000 > /sys/class/pwm/pwmchip0/pwm0/periodecho 500000 > /sys/clas...

2020-03-05 20:04:26 457

原创 libusb FAQ

Can libusb be used on the USB device side, e.g. Linux Gadget Device?No.libusb only provides an API for writing software on the host. Of course, if the device also acts as a USB host then libusb cou...

2020-01-08 10:58:18 192

原创 IMX6Q开发环境搭建

1:repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-4.1-krogoth --repo-url=https://gerrit-googlesource.lug.ustc.edu.cn/git-reporepo syncsudoapt-getinstallbuild-essential...

2019-08-28 12:54:29 777

原创 RCF Ubuntu 18.04中demo编译以及so库文件编译

下载RCF3.1,此版本不依赖于boost库,用std库重构了下载LinkRCF包g++ DemoClient.cpp ../src/RCF/RCF.cpp -lpthread -ldl -std=c++1y -luuid -I ../include -o DemoClientg++ -fPIC -shared ./src/RCF/RCF.cpp -lpthread -ldl -st...

2019-08-10 17:30:29 815

原创 Linux 5.1移植到orange pi (七)--搭建NFS

1:Ubuntu主机安装NFS-serversudo apt-get install nfs-kernel-serversudo vim /etc/exports ++/home/xxx/nfs *(rw,sync,no_root_squash,no_subtree_check)exportfs -rvsudo /etc/init.d/nfs-kernel-server r...

2019-07-12 21:36:58 461

原创 Linux 5.1移植到orange pi (六)--SPI NOR FLASH驱动

1:W25Q128FVSG驱动移植到orange pi上&spi0 { status = "okay"; nor_flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "winbond,w25q128", "jedec,spi-nor"; spi-max-frequ...

2019-07-09 21:36:47 770

原创 Linux 5.1移植到orange pi (五)--USB摄像头

1:mjpg-streamer在orange pi ubuntu上测试UVC camerasudo apt-get install libjpeg8-devsudo apt-get install imagemagicksudo apt-get install libv4l-dev sudo apt-get install cmake git clone https:/...

2019-07-07 22:06:25 522

原创 Linux 5.1移植到orange pi (四)--网络协议

1:网络驱动分析协议栈上层见图片,TCP/IP收发流程2:Ethernet驱动分析待续,待会写

2019-07-06 12:04:18 267

原创 Linux 5.1移植到orange pi (三)--网卡驱动

drivers/net/ethernet/allwinner/sun8i-emac.c:160:19: warning: duplicate ‘const’ declaration specifier [-Wduplicate-decl-specifier] static const char const estats_str[][ETH_GSTRING_LEN] = { ...

2019-07-02 22:31:38 1448

原创 Linux 5.1移植到orange pi (二)--build相关

1:查看下defconfig设置首先看下官方支持的4.9的sun8iw7p1_mainline_defconfig和sunxi_defconfig对比复制到Linux-5.1的configs目录。make zImage,有错误scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or dire...

2019-07-01 21:01:40 520

原创 Linux 5.1移植到orange pi (一)--移植新内核

Linux 5.1移植到orange pi pc plus快速预览1:下载最新的Linux内核首先下载最新的Linux 5.1,解压压缩包xz -dlinux-5.1.15.tar.xztar xvzf linux-5.1.tar.gz2:编译sudo make ARCH=arm CROSS_COMPILE=~/share/orangepi_h3_linux/or...

2019-07-01 20:47:50 1689

原创 Orange Pi build rootfs错误解决

+ chroot /home/jqian/works/OrangePiH5/output/rootfs pacman -Rsn --noconfirm linux-aarch64chroot: failed to run command 'pacman': Exec format error+ chroot /home/jqian/works/OrangePiH5/output/rootfs...

2019-06-15 10:47:40 1015

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除