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

2024年11月29日

Buildroot:Debugging, profiling and benchmark

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

posted @ 2024-11-29 23:59 ArnoldLu 阅读(12) 评论(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 阅读(128) 评论(0) 推荐(0) 编辑

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 阅读(24) 评论(0) 推荐(0) 编辑

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 阅读(67) 评论(0) 推荐(0) 编辑

2024年11月17日

Hamming Code

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

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

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 阅读(27) 评论(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 阅读(43) 评论(0) 推荐(0) 编辑

2024年11月9日

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

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

posted @ 2024-11-09 23:59 ArnoldLu 阅读(76) 评论(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 阅读(72) 评论(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 阅读(376) 评论(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 阅读(70) 评论(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 阅读(102) 评论(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 阅读(168) 评论(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 阅读(626) 评论(0) 推荐(0) 编辑

2024年9月28日

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

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

posted @ 2024-09-28 23:59 ArnoldLu 阅读(279) 评论(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 阅读(381) 评论(0) 推荐(1) 编辑

2024年9月22日

OpenWRT(16):基于ubus的远程调用守护进程rpcd(Remote Procedure Call Daemon)

摘要: OpenWrt的rpcd(RemoteProcedureCallDaemon)是一个守护进程,它提供了一个基于UBUS(OpenWrt'sUnifiedBinaryService)的RPC框架,允许通过插件来扩展其功能。rpcd的主要作用包括: 提供远程过程调用接口:允许远程客户端(如LuCIWeb 阅读全文

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

2024年9月21日

第400篇,献给园子

摘要: 感谢园子提供干净的交流分享平台。 1 捐助 捐助 - 博客园 (cnblogs.vip) 2 购买周边 周边 - 博客园 (cnblogs.vip) 3 成为会员 博客园 VIP (cnblogs.vip) 阅读全文

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

2024年9月20日

GmSSL进行SM2(签名验签/加密解密/证书生成和验证)/SM3(哈希)/SM4(加密解密)测试

摘要: GmSSL 是一个开源的密码学工具包和库,它实现了包括 SM2、SM3、SM4 在内的中国商用密码算法,以及国际通用的密码算法,如 RSA、AES、DES、SHA 等。GmSSL 旨在提供一个符合中国国家标准的密码学解决方案,适用于需要使用国产密码算法的场景。 快速上手:《快速上手 (gmssl.o 阅读全文

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

2024年9月9日

OpenWRT(15):ubox下的日志管理logd/logread

摘要: logd搜集日志,保存在缓存中。通过ubus提供给logrread读取。logd/logread和ubus/ubusd大致架构如下: 1 logd 1.1 logd主要作用 logd是 OpenWrt 系统中的日志守护进程,它负责处理系统产生的日志消息。logd的主要作用包括日志的收集、过滤、存储和 阅读全文

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

2024年9月8日

根证书、中间证书、目标证书,以及签名和验签(基于openssl)

摘要: 1 相关名词解释 在讨论证书和加密的上下文中,以下是一些基本概念的解释: CA (Certificate Authority):证书颁发机构,是一个负责颁发和管理数字证书的实体。CA 验证实体(如个人、公司或服务器)的身份,并发行数字证书,这些证书包含公钥和身份信息,并由 CA 的私钥签名。 Roo 阅读全文

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

2024年9月7日

RISC-V spl/OpenSBI/u-boot/Linux启动流程交互节点

摘要: OpenSBI给出的fw_dynamic镜像启动建议流程: 实际详细流程如下: 1 SPL到OpenSBI spl启动流程如下: 从外设加载镜像到DDR中。 解析镜像格式,比如FIT。 解析FIT中OpenSBI镜像地址和入口地址;uboot镜像地址,并附着到fdt中;解析获取fdt地址。 准备好H 阅读全文

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

2024年9月1日

OpenWRT(14):本地时钟校准服务ntpd(Network Time Protocol Daemon)

摘要: ntpd是一个用于实现网络时间协议(NTP)的守护进程,它允许路由器与互联网上的时间服务器同步时间。这样可以确保路由器的系统时间是准确的,这对于很多依赖于时间的服务和功能来说非常重要,比如VPN、动态DNS、定时任务等。 1 配置ntpd ntpd由Busybox提供: Base system Ne 阅读全文

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

2024年8月30日

OpenWRT(13):DNS和DHCP服务守护进程dnsmasq和odhcpd

摘要: dnsmasq 是一个轻量级的DNS和DHCP,它通常用于小型网络。 odhcpd 是OpenWrt中用于IPv6的DHCP和RA(Router Advertisement)服务的守护进程。 1 dnsmasq dnsmasq是DNS masquerade的意思, dnsmasq是一个为小型网络提供 阅读全文

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

2024年8月25日

OpenWRT(12):uhttpd主要功能以及客户端连接、CGI/Lua/UBUS/UCODE等处理

摘要: uhttpd是一个功能全面、轻量级的Web服务器,是Web管理界面LuCI的默认服务器,支持SSL、CGI、Lua。 uhttpd是单线程,但支持多个实例。 1 配置uhttpd 1.1 配置uhttpd uhttpd配置如下: Network Web Servers/Proxies uhttpd 阅读全文

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

2024年8月24日

OpenWRT(11):failsafe mode触发和流程说明

摘要: failsafe是一种安全模式,允许用户在遇到配置错误或者其他问题导致设备无法访问时,通过一个简化配置来重新获得对设备的控制。 为什么需要failsafe(配置错误或者无法访问)?怎么触发(通过按键、命令行、环境变量、网络)?触发后干什么(仅启动ssh服务、shell等有限服务。仅提供最小服务,用于 阅读全文

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

2024年8月23日

OpenWRT(10):OpenWRT下rootfs的cpio/squashfs/ubifs/ext4生成流程

摘要: 在include/image.mk中定义了initramfs、ubifs、squashfs、ext4等镜像的生成。 OpenWRT提供配置选项入口,借助mkfs.ubifs、mksquashfs4、make_ext4fs创建镜像。 1 ubifs 下面是include/image.mk中生成ubif 阅读全文

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

2024年8月18日

init启动库文件找不到问题定位和解决

摘要: 内核启动流程start_kernel->arch_call_rest_init->rest_init->kernel_init启动第一个用户空间进程。 init启动时提示库文件无法找到。 说明是ld.so正常执行,但是未能在目录列表中找到依赖的库文件。问题根源在于ld.so中默认库文件搜索路径和ro 阅读全文

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

2024年8月17日

OpenWRT(9):随机数发生器urngd,以及/dev/random

摘要: urngd是一个基于时间jitter的非物理随机数发生器。urngd为Linux的/dev/random设备提供熵源,当/dev/random熵不足时,它会向其注入熵。 它会向其中注入熵。这确保了/dev/urandom也能从注入的熵中受益,尤其是在系统启动时,Linux的熵较低的情况下,urngd 阅读全文

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

2024年8月16日

OpenWRT(8):使用quilt对OpenWRT的patch进行管理

摘要: quilt是一个用于管理源代码补丁的工具,广泛用于 Linux 内核和许多其他开源项目中。它提供了一种方便的方式来创建、修改、应用和撤销补丁。 1 quilt使用 关键特性: 补丁系列管理:quilt允许你将多个补丁组织成一系列,这样可以轻松地对它们进行排序和应用。 自动补丁应用:可以自动应用补丁系 阅读全文

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

2024年8月11日

OpenWRT(7):OpenWRT进程间通信-ubus、ubusd、libubus等

摘要: ubus提供了各种守护进程和应用程序之间的进程间通信。它包括如下几部分: 守护进程ubusd:在系统启动时运行,负责进程间的消息路由和传递。其他进程可以通过注册到ubusd进程来发送和接收消息。这些消息通过Unix套接字和TLV(类型-长度-值)格式进行传输 。 库文件libubus:为了简化开发, 阅读全文

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

2024年8月10日

OpenWRT(6):添加自己的Target/Subtarget/Target Profile

摘要: OpenWRT前三个配置Target/Subtarget/Target Profile基本决定了一款产品的软硬件基本配置。 Target可以是一系列处理器型号、或者一个公司、或者一种架构。 Subtarget是对Target细分。 Target Profile是Target和Subtarget的不同 阅读全文

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

2024年8月3日

OpenWRT(5):QEMU运行SiFive FU540(RISC-V)

摘要: 对应的OpenWRT版本为23.05: git clone https://git.openwrt.org/openwrt/openwrt.git -b openwrt-23.05 1 OpenWRT配置 选择Target、Subtarget、Target Profile,以及生成ramdisk文件 阅读全文

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

2024年7月24日

OpenWRT(4):启动流程以及添加自己的服务

摘要: OpenWRT的启动流程主要如下: 启动/init脚本,挂载tmpfs,并切换到/sbin/init运行。 启动/sbin/init,然后依次启动/etc/preinit和/sbin/procd。 如需要在/sbin/procd之前处理工作,需要在/lib/preinit按序号添加脚本。 /sbin 阅读全文

posted @ 2024-07-24 23:59 ArnoldLu 阅读(1999) 评论(2) 推荐(1) 编辑

2024年7月19日

OpenWRT(3):目录结构、创建维护feeds、创建package及其编译安装

摘要: 总结OpenWRT目录结构,然后创建feeds,并创建package。 编译package,并安装到target进行测试。 1 OpenWRT目录结构 OpenWRT的目录结构解释如下,高亮部分是编译后创建的: ├── bin--编译完成后ipk和image文件存放在此。 │ ├── package 阅读全文

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

2024年7月16日

问题定位:mount: mounting /dev/mtdblock23 on /rootfs failed: Invalid argument

摘要: 原有使用ubifs文件系统的分区,计划切换到squashfs。在镜像制作好之后,mount出现如下错误: mount: mounting /dev/mtdblock23 on /rootfs failed: Invalid argument 1 定位前思考 操作流程如下: Buildroot生成ro 阅读全文

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

2024年7月15日

Linux hwspinlock子系统(STM32MP157 HSEM)

摘要: hwspinlock(硬件自旋锁)是 Linux 内核中的一个同步机制,它提供了一种在多核处理器系统中保护共享资源的方法。 hwspinlock分为三部分: hwspinlock core提供注册注销以及对hwspinlock获取和释放接口。 hwspinlock Controller驱动。 hws 阅读全文

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

2024年7月14日

AMP相关:5 OpenAMP以及RPMsg-Lite

摘要: OpenAMP是一个开源框架,专为非对称多处理系统设计,提供生命周期管理和处理器间通信能力,支持与Linux兼容的组件以及独立库,适用于RTOS和裸机环境。 1 OpenAMP说明 OpenAMP框架包含提供了三个重要组件:Virtio、RPMsg和Remoteproc。Remoteproc实现了主 阅读全文

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

2024年7月13日

AMP相关:4 Linux virtio子系统概览

摘要: Virtio是一个开源的虚拟化I/O设备标准,它在虚拟化环境中扮演着至关重要的角色。 Virtio提供了一种标准化的设备接口,使得虚拟机(guest)可以在不同的虚拟化平台上使用相同的驱动程序,而不受底层硬件或虚拟化技术的限制。 Virtio设计了高效的数据交换机制,如使用虚拟队列(virtqueu 阅读全文

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

2024年7月12日

AMP相关:3 Linux rpmsg子系统(STM32MP157方案)

摘要: rpmsg框架位于virtio上层,rpmsg总线是一种基于virtio的消息总线。 rpmsg子系统包含如下部分: rpmsg核心提供rpmsg_bus总线,以及rpmsg驱动和设备注册注销接口。 rpmsg通道提供主处理器和远程处理器之间的通信通道。这些通道通过文本名称和本地(源)及远程(目的) 阅读全文

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

导航