LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

2024年7月2日

Linux RT Patch配置和测试

摘要: Linux实时补丁是针对Linux内核进行的一系列修改,以提高其性能,使其更适合实时应用。 1. 内核RT补丁 稳定版本内核地址: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git 针对linux不同版本的patch列表 阅读全文

posted @ 2024-07-02 23:59 ArnoldLu 阅读(0) 评论(0) 推荐(0) 编辑

2024年6月29日

Ubuntu下OpenGL开发环境搭建、编译、测试

摘要: 基于Ubuntu20.04进行OpenGL编程,使用Mesa3D开源实现方案,环境搭建、编译、测试如下。 1 环境搭建 安装依赖库文件: sudo apt install wayland-protocolssudo apt install libgtk-3-devsudo apt-get insta 阅读全文

posted @ 2024-06-29 23:59 ArnoldLu 阅读(34) 评论(0) 推荐(0) 编辑

2024年6月24日

LVGL(2):Ubuntu下基于VSCoce搭建LVGL开发环境和启动流程

摘要: 在PC上可以调试LVGL(参考Simulator on PC — LVGL documentation),借助VSCode在Ubuntu下调试可以参考:GitHub - lvgl/lv_port_pc_vscode。 1 下载VSCode项目代码 git clone --recursive http 阅读全文

posted @ 2024-06-24 23:59 ArnoldLu 阅读(40) 评论(0) 推荐(0) 编辑

2024年6月23日

LVGL(1):资源、特性、Linux下移植(RK3588)、测试

摘要: LVGL(Light and Versatile Graphics Library)是一个开源的嵌入式图形库,专为嵌入式系统和微控制器设计。它提供了一整套丰富的图形元素和功能,使得开发者能够在资源受限的设备上创建现代化的图形用户界面(GUI)。 LVGL介绍文档《Welcome to the doc 阅读全文

posted @ 2024-06-23 23:59 ArnoldLu 阅读(44) 评论(0) 推荐(0) 编辑

2024年6月21日

Linux下基于USB的Bluetooth(RTL8723DU):RFKILL子系统、HCI/BlueZ、Bluetooth驱动、bluetoothd、bluetoothctl等

摘要: 简单梳理RFKILL子系统、基于USB的Bluetooth驱动、Bluetooth守护进程bluetoothd、Bluetooth配置工具bluetoothctl/hcitool/hciconfig等。 1 RFKILL子系统 rfkill 是 Linux 系统中的一个工具和内核接口,用于启用或禁用 阅读全文

posted @ 2024-06-21 23:59 ArnoldLu 阅读(65) 评论(0) 推荐(0) 编辑

2024年6月16日

Linux下基于USB的WiFi(RTL8723DU):驱动、wpa_supplicant配置、hostapd配置等

摘要: 1 WiFi基本概念 WLAN(Wireless LAN)是无线局域网的意思。 IEEE 802.11是现今无线局域网通用的标准。 关于802.11协议介绍参考《802 11协议介绍》。 信道也就是频段,是以无线信号作为传输载体的数据信号传送通道。802.11 工作组划分了4个独立的频段:2.4 G 阅读全文

posted @ 2024-06-16 23:59 ArnoldLu 阅读(55) 评论(0) 推荐(0) 编辑

2024年6月15日

Linux PM:wakeup count、wakelock、autosleep

摘要: 在进行wakeup count、wakelock、autosleep之前,先参考《Linux电源管理(7)_Wakeup events framework (wowotech.net)》。 下面简单跟一下,wakeup count、wakelock、autosleep,及其使用方法。 1 PM初始化 阅读全文

posted @ 2024-06-15 23:59 ArnoldLu 阅读(24) 评论(0) 推荐(0) 编辑

2024年6月14日

Mastering the FreeRTOS™ Real Time Kernel V1.0 - 11 Low Power Support

摘要: 文档来自:Mastering-the-FreeRTOS-Real-Time-Kernel.v1.0.pdf。 关注FreeRTOS下低功耗实现,主要包括Idle Hook和Tickless Idle两种实现方式。 1 Low Power Support 11.1 Power Saving Intro 阅读全文

posted @ 2024-06-14 23:59 ArnoldLu 阅读(22) 评论(0) 推荐(0) 编辑

2024年6月8日

ARM GPU(Mali G610)及其驱动、OpenGLES、性能测试相关

摘要: 关键词:MALI、Valhall、G610、OpenGL、OpenGL-ES、OpenCL、Vulkan、libmali等等。 以RK3588实例简单了解: ARM MALI G610硬件驱动,以及相关的libmali库文件。 通用的OpenGL-ES、EGL协议以及库文件。 OpenGL-ES测试 阅读全文

posted @ 2024-06-08 23:59 ArnoldLu 阅读(133) 评论(0) 推荐(0) 编辑

2024年6月2日

Linux下GMAC网络设备:硬件接口、GMAC/PHY、驱动、测试程序

摘要: 1 嵌入式网络硬件接口 如下是常见的嵌入式网络硬件接口框图: SOC集成MAC。 MAC通过MII系列接口和PHY之间传输数据,通过MDIO接口初始化配置PHY芯片。 PHY芯片和RJ45之间通过4组差分模拟信号传输数据,并驱动RJ45的LED信号灯。 RJ45通过网线和外部连接。 1.1 嵌入式网 阅读全文

posted @ 2024-06-02 23:59 ArnoldLu 阅读(300) 评论(0) 推荐(0) 编辑

2024年6月1日

Linux低功耗Suspend/Resume梳理(基于STM32MP1)

摘要: 基于STM32MP1简单梳理Linux suspend/resume涉及到的内容: 触发Suspend流程,以及唤醒手段和后续resume流程。 Linux kernel中Suspend/Resume流程。 TFA中冷启动、热启动、SMC处理、PSCI实现等等。 其他低功耗相关:poweroff、r 阅读全文

posted @ 2024-06-01 23:59 ArnoldLu 阅读(155) 评论(0) 推荐(0) 编辑

2024年5月26日

Linux NVMEM子系统:概述以及RK3588 OTP实例

摘要: NVMEM子系统为Non-Volatile类型存储提供统一内核处理框架。 1 NVMEM概述 NVMEM子系统为eeprom,otp,efuse类型设备提供统一的访问接口。一般都基于regmap实现读写。 NVMEM子系统初始化: nvmem_init bus_register--注册NVMEM总线 阅读全文

posted @ 2024-05-26 23:59 ArnoldLu 阅读(153) 评论(0) 推荐(0) 编辑

2024年5月17日

switch_root切换rootfs实例

摘要: 将可读写的rootfs进行overlay到只读rootfs,形成新的rootfs。通过switch_root将跟文件系统切换的overlay结果的rootfs上。进而形成对只读rootfs的保护,也可以进行读写。 1 switch_root用法 switch_root切换跟文件系统,必须保证作为PI 阅读全文

posted @ 2024-05-17 23:59 ArnoldLu 阅读(100) 评论(2) 推荐(0) 编辑

2024年5月10日

squashfs配置和使用

摘要: Squashfs的设计是专门为一般的只读文件系统的使用而设计,它可应用于数据备份,或是系统资源紧张的电脑上使用。 最初版本的Squashfs采用 gzip 的数据压缩。版本 2.6.34 之后的Linux内核增加了对 LZMA[1] 和 LZO [2]压缩算法的支持,版本 2.6.38 的内核增加了 阅读全文

posted @ 2024-05-10 23:59 ArnoldLu 阅读(202) 评论(0) 推荐(0) 编辑

2024年5月6日

OpenSBI背景介绍/编译/启动,及其和Linux交互

摘要: 基于OpenSBI 1.2和Linux 5.10.110,分析RISC-V特有的OpenSBI及其和Linux Kernel的交互。 1 OpenSBI介绍 1.1 RISC-V基础 RISC-V Core支持三种Mode:User Mode、Supervisor Mode、Machine Mode 阅读全文

posted @ 2024-05-06 23:59 ArnoldLu 阅读(562) 评论(0) 推荐(0) 编辑

2024年5月5日

Buildroot+RISC-V+QEMU(@Ubuntu):搭建RISC-V Linux开发环境

摘要: 1 RISC-V相关Buildroot代码下载和编译 下载Buildroot代码并切换特定分支: git clone https://github.com/buildroot/buildroot.git git checkout 2024.02.1 编译RISC-V的Buildroot: make 阅读全文

posted @ 2024-05-05 23:59 ArnoldLu 阅读(73) 评论(0) 推荐(0) 编辑

2024年5月4日

Linux extcon概要记录

摘要: 关键词:extcon、uevent等。 1 extcon介绍 extcon是External Connector的简称,用于抽象外部连接器,比如说Audio Jack、USB MicroB/TypeC接口等。 extcon驱动的主要功能是识别外部连接器状态变化,并将状态变化通知到与外部连接器相关的其 阅读全文

posted @ 2024-05-04 23:59 ArnoldLu 阅读(153) 评论(0) 推荐(0) 编辑

2024年5月3日

Linux音频(3):alsa-lib以及alsa-utils

摘要: alsa-lib是为了简化、便利用户空间对ALSA驱动框架声卡编程的开源库。 alsa-utils是alsa的一个工具包,里面包含有声卡测试和音频编辑的工具. 1 alsa-lib alsa-lib在Buildroot中配置如下,包含一系列库插件: Target packages ->Librari 阅读全文

posted @ 2024-05-03 23:59 ArnoldLu 阅读(125) 评论(0) 推荐(0) 编辑

2024年5月2日

Linux音频(2):pulseaudio

摘要: pulseaudio作为声音服务器,启动时根据配置文件对ALSA子系统进行配置,并作为后台进程进行声音重定向配置。 官方文档位于《Documentation – PulseAudio》,但是没有更多概括性介绍和设计功能介绍。《PulseAudio under the hood (gavv.net)》 阅读全文

posted @ 2024-05-02 23:59 ArnoldLu 阅读(340) 评论(0) 推荐(0) 编辑

2024年5月1日

Linux音频(1):alsa架构和RK3588 PCM实例

摘要: 《Linux Sound Subsystem Documentation》对Kernel ALSA进行了详细介绍:Designs and Implementations介绍了ALSA的一些设计和实现;The ALSA Driver API分类介绍了ALSA API,然后Writing an ALSA 阅读全文

posted @ 2024-05-01 23:59 ArnoldLu 阅读(396) 评论(0) 推荐(0) 编辑

2024年4月19日

camera:一个基于QT+Weston的Camera应用

摘要: 基于QT UI框架编写camera,作为Wayland Client运行。 QT Multimedia自带的camera示例程序位于examples/multimediawidgets/camera。 Camera Example | Qt Multimedia 5.15.16 1 camera框架 阅读全文

posted @ 2024-04-19 23:59 ArnoldLu 阅读(156) 评论(0) 推荐(0) 编辑

2024年4月17日

Linux Media子系统:Media Controller设备

摘要: 关键词:Media、Device、Entity、Pad、Link、Interface、Graph、Pipeline等等。 Media Framework一个目的是发现设备内部拓扑结构,并对其进行运行时配置。 为此硬件被被抽象为通过Pad连接的Entity,Pad之间的连接称为Link。 1 Medi 阅读全文

posted @ 2024-04-17 23:59 ArnoldLu 阅读(189) 评论(0) 推荐(0) 编辑

2024年4月16日

Linux v4l2子系统(11):UVC驱动分析

摘要: UVC即USB Video Class,可以看出是基于USB接口的视频设备。相关规范在Video Class,目前最新的版本是Video Class 1.5。 uvc_driver.c:UVC驱动的主体。 uvc_v4l2.c:主要实现了uvc_fops和uvc_ioctl_ops两个数据结构。 u 阅读全文

posted @ 2024-04-16 23:59 ArnoldLu 阅读(320) 评论(0) 推荐(0) 编辑

2024年4月15日

Linux v4l2子系统(10):基于opencv的v4l2应用

摘要: 关键词:v4l2、OpenCV、mmap、ioctl。 Ubuntu下cheese非常简洁易用的拍照/录像工具,通过apt-get install cheese安装。相关的源码也可以在cheese.git下载。 如果想要更深入的了解v4l2的相关使用方法,就需要对v4l2设备进行编程。 首先通过编写 阅读全文

posted @ 2024-04-15 23:59 ArnoldLu 阅读(271) 评论(0) 推荐(0) 编辑

2024年4月14日

Linux v4l2子系统(9):libv4l2

摘要: libv4l是一个对v4l2设备抽象层,包括一系列库文件和测试程序。 1 v4l2库文件 libv4l1.so:支持v4l1应用访问v4l2设备。 libv4l2.so:支持对v4l2设备的open/ioctl/close/poll等访问。 libv4l2convert.so:是为v4l2应用使用的 阅读全文

posted @ 2024-04-14 23:59 ArnoldLu 阅读(256) 评论(0) 推荐(0) 编辑

2024年4月13日

Linux v4l2子系统(8):Rockchip ISP

摘要: 关键词:ISP、DMA等等。 1 Rockchip ISP的dts配置和初始化 rkisp0是硬件设备节点: rkisp0: rkisp@fdcb0000 { compatible = "rockchip,rk3588-rkisp"; reg = <0x0 0xfdcb0000 0x0 0x7f00 阅读全文

posted @ 2024-04-13 23:59 ArnoldLu 阅读(393) 评论(0) 推荐(0) 编辑

2024年4月12日

Linux v4l2子系统(7):CIF(VICAP)

摘要: 关键词:CIF、Interface、Crop、MUX、Scale、IOMMU、MIPI、PVDS、DVP等等。 1 VICAP框架图 VICAP负责从DVP/MIPI接收数据,将数据通过AXI存入内存,或者直接送到ISP,包括如下组件: Interface:和DVP/MIPI CSI接口对接,共7个 阅读全文

posted @ 2024-04-12 23:59 ArnoldLu 阅读(386) 评论(0) 推荐(0) 编辑

2024年4月11日

Linux v4l2子系统(6):MIPI CSI2

摘要: 关键词:CSI2、endpoint、Entity、Pad等。 1 CSI2 Host架构图 2 CSI Host的DTS配置和初始化 mipi2_csi2: mipi2-csi2@fdd30000 { compatible = "rockchip,rk3588-mipi-csi2"; reg = < 阅读全文

posted @ 2024-04-11 23:59 ArnoldLu 阅读(238) 评论(0) 推荐(0) 编辑

2024年4月10日

Linux v4l2子系统(5):MIPI DPHY

摘要: 1 CSI2 DPHY框架图 2 CSI2 DPHY的DTS配置和初始化 csi2_dphy0_hw中定义了DPHY的硬件信息: csi2_dphy0_hw: csi2-dphy0-hw@fedc0000 { compatible = "rockchip,rk3588-csi2-dphy-hw"; 阅读全文

posted @ 2024-04-10 23:59 ArnoldLu 阅读(144) 评论(0) 推荐(0) 编辑

2024年4月9日

Linux v4l2子系统(4):I2C&OV13850

摘要: 关键词:ov13850、subdev、media entity pad等等。 1 OV13850原理图 由原理图可知,Camera接口分为三部分: 4 Lane MIPI信号接口。 I2C控制接口。 Powerdown,Reset,供电接口。 2 I2C总线dts配置和初始化 i2c3总线: i2c 阅读全文

posted @ 2024-04-09 23:59 ArnoldLu 阅读(247) 评论(0) 推荐(0) 编辑

2024年4月8日

Linux v4l2子系统(3):video buffer

摘要: 1. videobuffer介绍 videobuf2用于链接v4l2驱动层与用户层,提供数据传输通道,它可以分配并管理视频帧数据。 videobuf层实现了很多ioctl函数,包括buffer分配、入队、出队和数据流控制。 video buffer支持三种类型的struct vb2_mem_ops: 阅读全文

posted @ 2024-04-08 23:59 ArnoldLu 阅读(330) 评论(0) 推荐(0) 编辑

2024年4月7日

Linux v4l2子系统(2):v4l2框架分析

摘要: v4l为Video子系统提供统一框架,驱动通过将v4l2_dev/v4l2_subdev注册到Video子系统,在用户空间创建设备节点。 使用如下命令在kernel(5.10.110)生成driver-api.pdf帮助文件: make SPHINXDIRS="driver-api" pdfdocs 阅读全文

posted @ 2024-04-07 23:59 ArnoldLu 阅读(498) 评论(0) 推荐(1) 编辑

2024年4月6日

Linux v4l2子系统(1):RK3588 VI概述

摘要: 本文从硬件框架、软件框架、Buildroot配置、相关源码、创建Video设备及其关系图,来对整个RK3588 VI有所了解。 基于对硬件架构的了解,然后通过 《Linux v4l2子系统(2):v4l2框架分析》。 《Linux v4l2子系统(3):video buffer》。 《Linux M 阅读全文

posted @ 2024-04-06 23:59 ArnoldLu 阅读(781) 评论(0) 推荐(0) 编辑

2024年3月29日

基于ldd快速遍历应用/库的依赖关系

摘要: 对于复杂的应用或库文件,要了解其运作原理、架构,通过了解其库依赖关系不失为一种手段。 ldd可以查看单个可执行文件或库文件以来的库,但是库比较多的话不容易有个全局概念。 所以基于ldd编解Python脚本,做个小工具,提供集中查看方式: 直接文本查看类似tree命令输出的属性结构。 xml格式的树形 阅读全文

posted @ 2024-03-29 23:59 ArnoldLu 阅读(119) 评论(0) 推荐(0) 编辑

2024年3月23日

Weston概览:架构、配置、启动、代码

摘要: 关键词:wayland、westom、compositor、render、shell backend等等。 weston是Wayland compositor的参考实现。整个weston解决方案包括Wayland协议实现、Wayland协议定义、weston server、weston默认clien 阅读全文

posted @ 2024-03-23 23:59 ArnoldLu 阅读(1594) 评论(0) 推荐(0) 编辑

2024年3月22日

POSIX标准及其一致性/功能/压力测试

摘要: 1 POSIX标准 POSIX: Portable Operating System Interface of Unix.,可移植操作系统接口。X表示其是对Unix API的传承。 POSIX标准由IEEE(电气和电子工程师协会)发布,定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种 阅读全文

posted @ 2024-03-22 23:59 ArnoldLu 阅读(159) 评论(0) 推荐(0) 编辑

2024年3月16日

Linux Graphics Stack(图图图)

摘要: Linux图形相关涉及到硬件、内核驱动、协议API、2D/3D渲染框架、GUI框架、桌面环境等,相当复杂,这里简单收集架构图作为记录。 1 硬件相关 显示相关的有: Displaying:显示器、投影等。包括Display engine、Timings controller、Display inte 阅读全文

posted @ 2024-03-16 23:59 ArnoldLu 阅读(223) 评论(1) 推荐(0) 编辑

2024年3月10日

Ubuntu 22.04内核代码下载、编译、调试

摘要: 1 下载Ubuntu Kernel 参考《Kernel/Dev/KernelGitGuide - Ubuntu Wiki》,下载Ubuntu 22.04代码。 优先使用: apt source linux-image-unsigned-$(uname -r) 或者: git clone https: 阅读全文

posted @ 2024-03-10 23:59 ArnoldLu 阅读(965) 评论(0) 推荐(1) 编辑

2024年3月9日

Linux CAN子系统:基于M_CAN解读

摘要: Linux下CAN驱动属于网络设备驱动。 CAN在内核中大致框架如下: 1 CAN配置 对CAN设备的配置,首先需要打开CAN子系统,然后打开CAN设备驱动,其他还包括调试信息等。 Networking support ->CAN bus subsystem support ->Raw CAN Pr 阅读全文

posted @ 2024-03-09 23:59 ArnoldLu 阅读(495) 评论(0) 推荐(0) 编辑

2024年3月3日

Linux显示(六):基于Buildroot的QT显示(mesa3d+opengl+libdrm)

摘要: Biuldroot下配置libdrm、Mesa3D、Qt5进行测试。 1 Buildroot下QT配置 Buildroot下配置libdrm、mesa3d、Qt5: Target packages ->Libraries ->Graphics ->libdrm ->etnaviv--支持的GPU驱动 阅读全文

posted @ 2024-03-03 23:59 ArnoldLu 阅读(577) 评论(0) 推荐(0) 编辑

导航