- 博客(98)
- 收藏
- 关注
原创 MTK Linux DRM分析(十一)- MTK KMS Panel显示屏驱动
面板扩展(Panel Extension)是指 MediaTek 在标准 DRM 面板驱动框架之上添加的定制化功能模块。
          2025-08-22 09:58:41
           1302
1302
        
原创 MTK Linux DRM分析(十)- KMS drm_connector.c
drm_connector 是 DRM 子系统中用于抽象和管理显示输出设备的核心组件。
          2025-08-21 17:01:26
           1142
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
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
1080
        
原创 MTK Linux DRM分析(七)- KMS drm_plane.c
在 Linux DRM(Direct Rendering Manager)子系统中,(平面)代表了一个图像源,可以在扫描输出过程中与 CRTC 混合或叠加显示。每个 Plane 从中获取输入数据,并负责图像的裁剪、缩放、旋转等变换,最终显示在 CRTC 代表的显示区域上。:主平面,通常用于显示主内容,每个 CRTC 必须有一个主平面。:光标平面,用于显示硬件光标。:覆盖平面,用于额外的叠加层(如视频播放)。
          2025-08-21 11:08:29
           999
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
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
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
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
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
802
        
原创 MTK Linux DRM分析(一)- DRM简介
DRM驱动通过分层设计(KMS/GEM)统一管理显示与渲染任务,支持多应用并发访问、原子更新(无闪烁)和高级GPU功能,成为现代Linux图形栈的核心基础。其灵活性适用于从嵌入式设备(如RK3506处理器)到桌面级显卡的广泛场景。
          2025-08-20 17:43:26
           453
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
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
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
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
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
1701
        
原创 FunASR在Ubuntu上的部署(2pass模式)
1:注意事项,server端启动需要比较长时间,因为需要在线下载很多模型。2:启动客户端会需要配置好端口号。
          2024-05-13 16:34:42
           1119
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
629
        
转载 ESP WiFi启动流程
当运行系统初始化时,PRO CPU 上的代码会给 APP CPU 设置好入口地址,解除其复位状态,然后等待 APP CPU 上运行的代码设置一个全局标志,以表明 APP CPU 已经正常启动。APP CPU 的复位状态会在应用程序启动代码的。一旦处理完所有段(即加载了代码并设置了 flash MMU),二级引导程序将验证应用程序的完整性,并从二进制镜像文件的头部寻找入口地址,然后跳转到该地址处运行。当一级引导程序校验并加载完二级引导程序后,它会从二进制镜像的头部找到二级引导程序的入口点,并跳转过去运行。
          2024-01-18 14:16:06
           211
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
492
        
原创 Node MCU V3学习(基于ESP8266)
3:安装u8g2图形库,直接在项目-->导入库-->管理库中搜索u8g2安装,注意不是u8glib库。4:打开文件-->示例-->u8g2-->full_buffer-->GraphicsTest。安装错误的库会导致出现编译错误。2:开发环境搭建参考。
          2023-05-08 14:09:25
           1104
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
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
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
2232
           1
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
3484
        
原创 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
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
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
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
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
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
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
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
522
        
原创 Linux 5.1移植到orange pi (四)--网络协议
1:网络驱动分析协议栈上层见图片,TCP/IP收发流程2:Ethernet驱动分析待续,待会写
          2019-07-06 12:04:18
           267
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
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
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
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
1015
        
         
      
空空如也
         
      
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
 RSS订阅
RSS订阅