Processing math: 100%

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

2025年7月6日

slub/slab的内存泄漏、越界访问、UAF、效率分析等调试手段和工具(slabinfo/slub_debug/slabtop/kmemleak/kfence/kasan等)总结

摘要: 1 简单认识slab/slub 1.1 slab/slub是什么? slab/slub都是对象缓存分配器,目标是高效地分配和释放内核中频繁使用的小尺寸内存对象(如 task_struct, inode, dentry, sk_buff 等)。基本思想: 预分配: 在内核启动或模块加载时,预先从伙伴系 阅读全文

posted @ 2025-07-06 23:59 ArnoldLu 阅读(12) 评论(0) 推荐(0)

2025年6月22日

OpenWRT(23): 使用sar进行系统级状态监控

摘要: 1 OpenWRT下sar配置 如果要在OpenWRT下使用sar,需要配置打开: Utilities ->sysstat 2 sar介绍 sar相关工具包括: 工具功能描述使用场景示例 sar 系统活动报告器,收集/显示系统性能数据 sar -r 1 3 查看内存使用率 sadc 系统活动数据收集 阅读全文

posted @ 2025-06-22 23:59 ArnoldLu 阅读(28) 评论(0) 推荐(0)

2025年6月21日

借助ftrace生成系统启动进程/线程树

摘要: 当一个稍微复杂系统启动时,需要研究这过程都创建了哪些进程/线程,用于分析优化启动速度、降低内存开销。 当系统启动后,通过pstree、top等只能获得进程的snapshot。了解ftrace的events之后,可以知道这里面提供了从系统开始创建进程/线程的事件。 下面在cmdline中打开task_ 阅读全文

posted @ 2025-06-21 23:59 ArnoldLu 阅读(20) 评论(0) 推荐(0)

2025年6月17日

OpenWRT(22):hotplug处理流程

摘要: procd同时负责hotplug处理,根据hotplug.json或hotplug-preinit.json中的规格进行处理。 1 procd中处理热插拔流程 procd对hotplug的出流程如下: 代码流程如下: main ->procd_state_next ->state_enter ->h 阅读全文

posted @ 2025-06-17 23:59 ArnoldLu 阅读(23) 评论(0) 推荐(0)

2025年6月15日

dwarf4和dwarf5差异,以及应用

摘要: 不使用DEBUG_INFO,和使用dwarf4、dwarf5对问题调试定位影响很大。 在嵌入式环境下,尽量使用dwarf5,对最终Image大小影响很小,调试定位收益较大。 1 DWARF4 与 DWARF5 核心差异对比 DWARF 是一种调试信息格式,专门用于描述可执行程序(如编译后的 C、C+ 阅读全文

posted @ 2025-06-15 23:59 ArnoldLu 阅读(43) 评论(0) 推荐(0)

2025年6月14日

RISCV Linux下Illegal Instruction解析定位

摘要: 一个非法指令的日志和产生日志的代码流程分析。 1 非法指令log 一个非法指令异常的log如下: [ 27.111085] Oops - illegal instruction [#1] [ 27.111108] Modules linked in: xxx(O)--tainted信息参考下面。 [ 阅读全文

posted @ 2025-06-14 23:59 ArnoldLu 阅读(59) 评论(0) 推荐(0)

2025年6月7日

Ubuntu(2):systemd启动流程

摘要: systemd是 Linux 系统中最主流的初始化系统(init)和服务管理器,旨在替代传统的 SysV init 系统。它不仅是系统启动的第一个进程(PID 1),还提供了一套完整的系统管理工具集,深度集成到现代 Linux 发行版(如 Ubuntu、Fedora、Debian、RHEL)中。 1 阅读全文

posted @ 2025-06-07 23:59 ArnoldLu 阅读(92) 评论(0) 推荐(0)

2025年6月6日

RISC-V扩展指令集说明

摘要: 1 RISC-V扩展指令集列表 RISC-V扩展指令集列表: 类别扩展名英文全称功能描述详细用途状态 基础整数扩展 I Base Integer RV32I/RV64I核心指令集 提供基础整数运算(加减/逻辑运算)和控制流(跳转/分支),所有RISC-V处理器的基础运行环境。 强制实现 E Embe 阅读全文

posted @ 2025-06-06 23:59 ArnoldLu 阅读(306) 评论(0) 推荐(0)

2025年6月1日

Ubuntu(1):构建自己的Ubuntu发行版(ARM64)并使用QEMU测试

摘要: 针对 ARM64 (AArch64) 架构优化的嵌入式Ubuntu构建与测试指南,包含完整构建流程和QEMU测试方案。 1 交叉编译环境配置 安装ARM64工具链: sudo apt update sudo apt install gcc-aarch64-linux-gnu build-essent 阅读全文

posted @ 2025-06-01 23:59 ArnoldLu 阅读(336) 评论(0) 推荐(0)

2025年5月24日

device-mapper(2):块设备数据完整性验证功能dm-verity

摘要: dm-verity(Device-Mapper Verity)是 Linux 内核中的一个Device-Mapper Target,用于提供块设备数据的完整性验证 功能。它通过哈希树(Hash Tree)和密码学签名,确保设备内容在运行时未被篡改,广泛应用于嵌入式系统、移动设备(如 Android) 阅读全文

posted @ 2025-05-24 23:59 ArnoldLu 阅读(127) 评论(0) 推荐(0)

RISC-V Linux下Trap日志解析

摘要: 作为日常RISC-V Linux Trap问题定位参考。 1 Trap输出日志解析 [ 220.441130] dddd[2177]: unhandled signal 11 code 0x1 at 0x000000a8 in dddd[10000+37000] 表示进程 dddd(进程ID为217 阅读全文

posted @ 2025-05-24 23:59 ArnoldLu 阅读(42) 评论(0) 推荐(0)

2025年5月10日

FIT(3):基于FIT对镜像进行加密和解密

摘要: mkimage根据its配置对镜像进行加密,uboot解析FIT对加密部分进行解密,完成镜像内容保护。 1 生成FIT加密镜像 通过openssl rand生成32字节二进制秘钥文件: openssl rand -out aes-key.bin 32 修改kernel.its文件,增加cipher节 阅读全文

posted @ 2025-05-10 23:59 ArnoldLu 阅读(108) 评论(0) 推荐(0)

2025年5月2日

device-mapper(1):概述

摘要: device-mapper是一种块设备虚拟化技术,下面分别介绍device-mapper的背景、在Linux块设备框架结构中位置、内核配置、相关文件、核心数据结构、相关module初始化、支持的Target。 1 dm说明 Device Mapper(设备映射器) 是 Linux 内核中的一个块设备 阅读全文

posted @ 2025-05-02 23:59 ArnoldLu 阅读(308) 评论(0) 推荐(0)

2025年5月1日

RK3588+Deepseek(2):RKNNP驱动

摘要: RNNNP的驱动将RKNPU作为一个DRM设备,同时支持IOMMU以及devfreq进行动态调频。 上层应用通过对RKNPU DRM设备进行控制,发起NNP命令执行和数据搬运。 1 RKNNP硬件框架 RKNN包括3个NPU,可以单核、双核、3核模式下工作,每个核2T算力,共6T。支持TensorF 阅读全文

posted @ 2025-05-01 23:59 ArnoldLu 阅读(122) 评论(0) 推荐(0)

2025年4月12日

OpenWRT(21):sysupgrade中签名和验签流程

摘要: sysupgrade支持在编译的时候生成签名和metadata,在设备进行upgrade进行验签和metadata检查。 1 签名和metadata生成流程 签名和metadata流程如下: 文件类型核心作用 key-build 私钥 签名固件和软件包。 key-build.pub 公钥 验证签名合 阅读全文

posted @ 2025-04-12 23:59 ArnoldLu 阅读(195) 评论(0) 推荐(0)

2025年4月5日

RK3588+Deepseek(1):开发环境搭建、模型转换、推理程序编译以及模型运行测试

摘要: 1 开发环境搭建 1.1 下载安装miniconda 进入miniconda下载页面下载x86版本:Miniconda3-latest-Linux-x86_64.sh。 执行./Miniconda3-latest-Linux-x86_64.sh安装Miniconda3: 1.2 安装rkllm_to 阅读全文

posted @ 2025-04-05 23:59 ArnoldLu 阅读(305) 评论(0) 推荐(0)

2025年3月22日

sysctl:vm参数设置

摘要: 1 vm.admin_reserve_kbytes = 8192 参数作用: - 功能:为系统管理员(root)进程保留 8MB 内存,防止内存耗尽时关键管理进程(如 SSH、systemd)崩溃。 - 默认值:通常为 256(0.25MB)或 8192(8MB,因系统而异)。 影响分析: 场景 影 阅读全文

posted @ 2025-03-22 23:59 ArnoldLu 阅读(234) 评论(0) 推荐(0)

2025年2月1日

OpenWRT(20):NAND上squashfs+ubifs的overlay实现rootfs

摘要: OpenWrt 使用 squashfs + ubifs 组合作为根文件系统(rootfs)的设计,是针对嵌入式设备(尤其是基于 NAND Flash 的硬件)的一种优化方案。这种设计结合了两种文件系统的优势,解决了嵌入式场景下的关键需求。 1 背景说明 嵌入式设备的硬件限制 NAND Flash 特 阅读全文

posted @ 2025-02-01 23:59 ArnoldLu 阅读(504) 评论(0) 推荐(1)

2025年1月12日

ROS2(2):ROS2 Humble源码下载、编译、软件包说明及其架构

摘要: ROS 2(Robot Operating System 2)是一个开源的机器人开发框架,旨在提供模块化、可扩展的机器人软件开发工具。ROS 2 的源码基于现代 C++ 和 Python,支持多种操作系统(如 Linux、Windows 和 macOS)和硬件平台。 1 环境准备 ROS 2 Hum 阅读全文

posted @ 2025-01-12 23:59 ArnoldLu 阅读(2662) 评论(0) 推荐(0)

2025年1月4日

ROS2(1):基于ROS2+Gazebo+RViz2的TurbleBot3仿真开发环境搭建

摘要: 关键词: ROS2:一个用于开发机器人系统的开源框架,提供从通信到硬件抽象等一系列功能,使开发者能够快速构建复杂的机器人应用。 通信机制 (Data Distribution Service, DDS):基于DDS的发布/订阅模型,支持多对多通信,自动发现机制,QoS设置。 节点 (Nodes):代 阅读全文

posted @ 2025-01-04 23:59 ArnoldLu 阅读(4293) 评论(1) 推荐(4)

2024年12月21日

Buildroot:Debugging, profiling and benchmark(4)

摘要: 21 ramspeed/smp ramsmp是ramspeed的SMP版本,同样都用于缓存和内存性能基准测试的工具,特别适用于 UNIX 类操作系统的单处理器和多处理器机器。 ramspeed 的几个主要测试项包括:1. INTmark/FLOATmark:测量缓存和内存的最大理论带宽性能。2. I 阅读全文

posted @ 2024-12-21 23:59 ArnoldLu 阅读(231) 评论(0) 推荐(0)

2024年12月20日

Buildroot:Debugging, profiling and benchmark(3)

摘要: 11 latencytop 使用latencytop需要打开内核CONFIG_LATENCYTOP: Kernel hacking ->Latency measuring infrastructure latencytop运行结果: LatencyTOP version 0.5 (C) 2008 I 阅读全文

posted @ 2024-12-20 23:59 ArnoldLu 阅读(100) 评论(0) 推荐(0)

2024年12月7日

QEMU和主机之间网络通信:使用用户网络模式+端口转发建立主机和虚拟机之间通信

摘要: QEMU使用主机网络主要有以下几种方式,每种方式依赖的技术以及它们是否可以互相访问如下: 1.桥接网络(BridgedNetworking):-依赖技术:桥接网络依赖于在宿主机上创建一个网络桥接接口,将物理网络接口(如eth0)和虚拟机网络接口连接到这个桥接接口上。这样,虚拟机就可以直接与宿主机所在 阅读全文

posted @ 2024-12-07 23:59 ArnoldLu 阅读(2291) 评论(0) 推荐(0)

2024年12月6日

Buildroot:Debugging, profiling and benchmark(2)

摘要: 6 dhrystone Dhrystone是一个基准测试程序,它通过模拟一系列简单的算术运算和内存访问操作来测量CPU的整数运算和逻辑运算性能,其测试结果以DMIPS/MHz为单位,表示在Dhrystone标准测试方法下的MIPS值。 参考《dhrystone计算和测试 - ArnoldLu - 博 阅读全文

posted @ 2024-12-06 23:59 ArnoldLu 阅读(86) 评论(0) 推荐(0)

2024年11月29日

Buildroot:Debugging, profiling and benchmark(1)

摘要: 1 blktrace blktrace 是一个 Linux 内核工具,用于跟踪和分析块设备(如硬盘、固态硬盘、USB 存储设备等)的 I/O 请求。它可以帮助用户理解操作系统如何与块设备交互,以及 I/O 请求在系统中的流动情况。这对于性能分析、故障排除和存储系统优化非常有用。 参考《Linux I 阅读全文

posted @ 2024-11-29 23:59 ArnoldLu 阅读(125) 评论(0) 推荐(0)

2024年11月23日

时间同步:基于PPS、NMEA协议,使用GPS模块、gpsd、chronyd构建时间同步方案

摘要: 基于GPS(提供NMEA和PPS)获取精确时间,gpsd将时间提供给chronyd,进而完成精确时间同步。 1 时间同步框架 整个时钟同步框架实现包括: GPS模块:通过UART传输NMEA协议信息;通过GPIO中断,传递PPS信号。 gpsd从PPS(/dev/pps0)和NMEA(/dev/tt 阅读全文

posted @ 2024-11-23 23:59 ArnoldLu 阅读(3092) 评论(0) 推荐(1)

Linux TEE子系统:TEE子系统、OPTEE驱动、tee-supplicant

摘要: Linux TEE(以RISC-V为例)解决方案大致如下: TEE中运行TOS,比如OPTEE OS,及运行于其上的TA(Trusted Application)。 SecureMonitor,比如OpenSBI,负责安全和非安全切换,以及安全任务分发。 Linux kernel中TEE子系统,负责 阅读全文

posted @ 2024-11-23 14:54 ArnoldLu 阅读(969) 评论(0) 推荐(1)

2024年11月22日

Linux PPS子系统:PPS子系统框架、PPS-GPIO驱动、pps-tools等介绍

摘要: PPS(Pulse Per Second)指的是“每秒脉冲”,它是一种高精度的时间信号,每秒钟提供一个脉冲,通常用于时间同步和时钟校准。PPS源可以是各种设备,比如GPS接收器、网络时间协议(NTP)服务器或其他能够提供精确时间信号的设备。 PPS信号的发送时机通常是在每秒的开始,即在UTC时间的整 阅读全文

posted @ 2024-11-22 23:59 ArnoldLu 阅读(1604) 评论(0) 推荐(0)

2024年11月17日

Hamming Code

摘要: 1 汉明码概要 汉明码的位宽和校验位组合是根据汉明码的设计原则来确定的,这些组合满足特定的数学关系,以确保能够检测并纠正单个位错误。 1.1 汉明码校验位宽和数据位宽关系 汉明不等式如下所示: 2k1n+k。 n是数据位的数量。 k是校验位的数量。 不同校验位能够校验 阅读全文

posted @ 2024-11-17 23:59 ArnoldLu 阅读(467) 评论(0) 推荐(1)

2024年11月16日

GTL:Trace32针对Simulators、Emulators、Virtual Targets调试技术

摘要: 在RTL环境中,借助Trace32调试有助于提高效率、降低风险等。 1 Trace32 PowerView支持Simulator、Emulator等调试 TRACE32可以连接到各种模拟器、仿真器和虚拟目标,以帮助缩短设计周期。 TRACE32工具能够在整个产品生命周期中重复使用生成的脚本,因为从模 阅读全文

posted @ 2024-11-16 23:59 ArnoldLu 阅读(175) 评论(0) 推荐(0)

2024年11月10日

dhrystone计算和测试

摘要: Dhrystone是一个用于评估计算机性能的基准测试,主要用于测量整数运算的性能。 ARM关于dhrystone测试介绍:《Dhrystone Benchmarking for ARM Cortex Processors》。 1 dhrystone计算方法 dhrystone测试输出结果:Micro 阅读全文

posted @ 2024-11-10 23:59 ArnoldLu 阅读(628) 评论(0) 推荐(0)

2024年11月9日

RISC-V:异常及其在Linux下的处理

摘要: 首先了解RISC-V异常相关配置和寄存器,然后了解各种异常类型以及Linux下是如何处理的。 1 RISC-V异常类型 RISC-V异常配置和处理寄存器组 机器模式 超级用户模式 异常配置寄存器组 处理器状态寄存器 MSTATUS 存储了处理器在机器模式下的状态和控制信息,包括全局中断有效位、异常保 阅读全文

posted @ 2024-11-09 23:59 ArnoldLu 阅读(1022) 评论(0) 推荐(0)

2024年11月8日

RISC-V:浮点规格、kernel中关于浮点配置和浮点相关流程

摘要: 关注RISC-V中浮点配置寄存器、浮点指令,以及Linux内核中浮点相关编译、配置流程、测试工具等。 1 RISC-V规格书关于浮点说明 RISCV提供了多种浮点扩展,包括单精度浮点(F)、双精度浮点(D)、四倍精度浮点(Q)以及十进制浮点(L)扩展。这些扩展是可选的,可以根据应用场景的需求进行配置 阅读全文

posted @ 2024-11-08 23:59 ArnoldLu 阅读(688) 评论(0) 推荐(0)

2024年11月2日

SM2/3/4:gmssl命令行、gmssl-python、openssl等验证

摘要: GmSSL是一套实现国密算法的开源库,支持C、Python等语言。 更多参考《GitHub - guanzhi/GmSSL: 支持国密SM2/SM3/SM4/SM9/SSL的密码工具箱》。 1 GmSSL介绍 GmSSL支持SM2/SM3/SM4/SM9/ZUC等国密算法。SM2国密数字证书及基于S 阅读全文

posted @ 2024-11-02 21:52 ArnoldLu 阅读(2492) 评论(0) 推荐(0)

2024年10月26日

ThreadX(3):TraceX创建、事件分类、解析

摘要: 分别从如下几方面介绍TraceX: 如何创建TraceX数据。 TraceX数据格式。 TraceX检测哪些事件。 TraceX工具TraceX和Tracealyzer使用方法。 1 TraceX生成trace buffer 1.1 TraceX初始化 参考《Chapter 5 - Generati 阅读全文

posted @ 2024-10-26 23:59 ArnoldLu 阅读(183) 评论(2) 推荐(1)

2024年10月19日

ThreadX(1):ThreadX介绍、主要组件、相关Windows工具

摘要: 1 ThreadX介绍 ThreadX主要特性: 1. 可预测性:ThreadX 提供了确定性的线程调度,确保任务可以按照预定的顺序和时间执行。 2. 实时性能:作为一个实时操作系统,ThreadX 能够快速响应外部事件和中断,满足实时系统的要求。 3. 小体积:ThreadX 的内核非常紧凑,适合 阅读全文

posted @ 2024-10-19 23:59 ArnoldLu 阅读(704) 评论(0) 推荐(0)

2024年10月18日

OpenWRT(19):根文件系统挂载mount_root

摘要: 参考《[OpenWrt Wiki] The OpenWrt Flash Layout》、《[OpenWrt Wiki] Extroot configuration》。 1 mount_root概要 mount_root函数在系统启动的早期阶段被调用,以确保系统能够访问一个可写的根文件系统。 moun 阅读全文

posted @ 2024-10-18 23:59 ArnoldLu 阅读(957) 评论(0) 推荐(0)

2024年10月6日

OpenWRT(18):固件升级sysupgrade

摘要: sysupgrade的主要作用是升级OpenWrt固件,同时尽可能保留用户配置。它通过备份指定的配置文件,擦除整个文件系统,安装新版本的OpenWrt,然后恢复保存的配置文件来实现升级。 参考《[OpenWrt Wiki] Sysupgrade – Technical Reference》。 1 s 阅读全文

posted @ 2024-10-06 23:59 ArnoldLu 阅读(2674) 评论(0) 推荐(0)

2024年9月28日

OpenWRT(17):网络接口管理守护进程netifd

摘要: netifd是一个网络接口守护程序(daemon),它负责初始化网络设备、配置网络参数、处理网络事件以及维护网络连接。netifd通常在系统启动时启动,并在后台运行以监视和调整网络设置。 以下是netifd的一些关键特性和功能: 1.热插拔支持:netifd能够检测网络设备的变化,如USB网络适配器 阅读全文

posted @ 2024-09-28 23:59 ArnoldLu 阅读(1176) 评论(0) 推荐(0)

2024年9月27日

QEMU上RISC-V架构[U-Boot-OpenSBI-OPTEE-Linux]:环境搭建、启动流程概述、运行流程概述

摘要: 1. 编译运行Kernel和OPTEE 参考文档《 OPTEE_00_01 - OP-TEE support - Home - RISE Project Confluence Wiki (atlassian.net)》。 下载和编译代码: git clone https://gitlab.com/r 阅读全文

posted @ 2024-09-27 23:59 ArnoldLu 阅读(1307) 评论(0) 推荐(2)

导航

< 2025年7月 >
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
点击右上角即可分享
微信分享提示