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

[置顶] 第400篇,献给园子

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

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

2024年9月18日

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

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

posted @ 2024-09-18 23:59 ArnoldLu 阅读(10) 评论(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 阅读(49) 评论(0) 推荐(0) 编辑

2024年9月8日

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

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

posted @ 2024-09-08 23:59 ArnoldLu 阅读(35) 评论(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 阅读(49) 评论(0) 推荐(0) 编辑

2024年9月1日

OpenWRT(14):本地时钟校准服务ntpd

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

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

2024年8月30日

OpenWRT(13):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 阅读(153) 评论(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 阅读(125) 评论(0) 推荐(0) 编辑

2024年8月24日

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

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

posted @ 2024-08-24 23:59 ArnoldLu 阅读(93) 评论(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 阅读(85) 评论(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 阅读(29) 评论(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 阅读(41) 评论(0) 推荐(0) 编辑

2024年8月16日

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

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

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

2024年8月11日

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

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

posted @ 2024-08-11 23:59 ArnoldLu 阅读(283) 评论(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 阅读(112) 评论(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 阅读(55) 评论(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 阅读(719) 评论(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 阅读(536) 评论(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 阅读(93) 评论(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 阅读(59) 评论(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 阅读(213) 评论(0) 推荐(0) 编辑

2024年7月13日

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

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

posted @ 2024-07-13 23:59 ArnoldLu 阅读(63) 评论(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 阅读(118) 评论(0) 推荐(1) 编辑

2024年7月7日

AMP相关:2 Linux Mailbox子系统(基于TM32MP1的IPCC)概览

摘要: Mailbox子系统是一种用于处理期间的通信机制,通过消息队列和中断驱动信号来处理多个处理器之间的通信。主要包括Controller和Client两部分。 Mailbox子系统包括如下几部分: Mailbox子系统核心。 Mailbox控制器驱动,比如STM32MP157的IPCC驱动。 使用Mai 阅读全文

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

2024年7月5日

AMP相关:1 Linux remoteproc子系统(基于STM32MP157)概览

摘要: remoteproc(Remote Processor Framework)用于管理异构远程处理器设备。这些设备通常在非对称多处理(Asymmetric MultiProcessing,AMP)配置中,可能运行不同的操作系统实例,包括Linux或其他实时操作系统的变体。 remoteproc框架允许 阅读全文

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

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 阅读(295) 评论(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 阅读(264) 评论(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 阅读(290) 评论(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 阅读(457) 评论(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 阅读(339) 评论(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 阅读(211) 评论(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 阅读(92) 评论(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 阅读(77) 评论(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 阅读(1461) 评论(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 阅读(991) 评论(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 阅读(588) 评论(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 阅读(474) 评论(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 阅读(466) 评论(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 阅读(728) 评论(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 阅读(2043) 评论(0) 推荐(0) 编辑

导航