Posts by Tag

Ubuntu 开发指南

RK3568 Ubuntu 20.04 显卡mali驱动配置与桌面加速

3 分钟阅读

1 deb包安装 内核mali版本为g18p0对应的用户空间的驱动就应该装比这个版本低级的,而3568SDK中只提供了g2p0和g24p0,前者版本太低,后者版本太新,故在3588SDK中找到了libmali驱动。要装的驱动包如下 RK3588SDK提供: libmali-bifrost-g52-g13p0...

什么是KMS —— 内核模式设置

少于 1 分钟阅读

DRM 管得宽,内部是分工的。KMS 全称是 Kernel Mode Setting(内核模式设置),它就是 DRM 里面专门负责“把画面送上屏幕”的那个大总管。

whoopsie报错offline解决

少于 1 分钟阅读

该程序是用于crash上报的,直接屏蔽其服务就可以 systemctl stop whoopsie systemctl disable whoopsie sudo systemctl mask whoopsie

RK3568 xfce 使用远程软件向日葵、todesk的问题记录

少于 1 分钟阅读

环境 RK3568 Ubuntu20.04 LightDM + X11 + XFCE 向日葵 最新版本向日葵无法显示主界面 低版本向日葵sunloginclient-10.0.2.24779_kylin_arm64可以显示主界面,也能远程连接,但是连接后虽然能看到桌面,但是有偏色,且提...

什么是EtherCAT

1 分钟阅读

EtherCAT(Ethernet for Control Automation Technology)是由德国倍福(Beckhoff)公司在2003年提出的一种基于以太网的实时工业网络通讯协议。它的核心目标是解决传统以太网在工业控制、多轴运动控制等领域中存在的非确定性和高延迟问题。

缺少librag.so

少于 1 分钟阅读

问题描述 安装后librga2_2.2.0-1_arm64.deb,发现/usr/lib/aarch64-linux-gnu/ 下缺少了 librga.so

如何构建 DEB 包

3 分钟阅读

本文是一篇通用指南,介绍如何将任意一组文件打包为 .deb 安装包,适配 Debian/Ubuntu 等系统。

XFCE调整面板位置

少于 1 分钟阅读

右键面板的空白处,打开菜单,选择“面板” -> “面板首选项” 取消勾选锁定面板,此时面板左侧会出现小点,鼠标点击即可拖拽

安装glmark2-es2并进行GPU测试

少于 1 分钟阅读

安装 rk sdk中获取这两个预编译的包 glmark2-data_2023.01+dfsg-1_all.deb glmark2-es2-x11_2023.01+dfsg-1_arm64.deb

RK3588 配置显卡栈显卡驱动配置,libmali 桌面加速

1 分钟阅读

前言 从ubuntu-base构建出来的系统,桌面使用cpu软解。要想使用上3588内置的mali显卡,必须打上显卡驱动。但是实测只安装瑞芯微预编译(rk SDK debian/package目录下)的libmali包后,桌面无法显示,须配合xserver和librga2才能显示。即使这样,桌面仍旧卡顿,需配合环...

Debian Ubuntu deb软件包状态标志详解

少于 1 分钟阅读

在 Debian/Ubuntu 系统中,dpkg -l 命令输出的状态标志实际上由 三个字母 组成(通常第三个字母为空白,所以大部分情况下看起来是两个字母)。

RK3588 Ubuntu20.04 根文件系统构建指南

3 分钟阅读

构建适用于 RK3588(基于 ARM64 架构)的 Ubuntu 根文件系统,最主流且高效的方法是使用官方的 Ubuntu Base 镜像,配合主机(通常是 x86 架构的 PC)上的 qemu-user-static 工具,通过 chroot 的方式进行模拟构建。

Linux 8250 串口48个数量限制

1 分钟阅读

问题 Linux 8250 串口子系统,在编译时指定了串口数量的限制,一般是48个,导致K3服务器(48个K3串口+1个BMC串口)的串口无法全部探测出来。

什么是 qemu-user-static

少于 1 分钟阅读

在 x86 主机上为 ARM64 架构(如瑞芯微 RK3568)构建根文件系统时,出现了 qemu-user-static,它究竟是什么?

RK3568 Ubuntu20.04 根文件系统构建指南

12 分钟阅读

构建适用于 RK3568(基于 ARM64 架构)的 Ubuntu 根文件系统,最主流且高效的方法是使用官方的 Ubuntu Base 镜像,配合主机(通常是 x86 架构的 PC)上的 qemu-user-static 工具,通过 chroot 的方式进行模拟构建。

《overlayroot 修改底层根文件系统并打包指南》

少于 1 分钟阅读

作为系统适配人员,为了能够成功修改底层系统并打包出可批量烧录的 overlayroot 根文件系统,你需要根据不同的修改场景,参考对应的指南文件。以下是具体的操作路径与规范:

vim 无法显示中文 —— 修改编码配置

少于 1 分钟阅读

在自己构建的根文件中,vim(或 vi)显示中文乱码通常是由编码不匹配导致的。从系统底层到终端软件,任何一个环节的字符集配置不对都会引发这个问题。

Gstreamer工具以及MPP插件

1 分钟阅读

本文来源于野火教程:https://doc.embedfire.com/linux/rk356x/quick_start/zh/latest/lubancat_rk_software_hardware/software/gstreamer/gstreamer.html#

关于右键菜单“注销”选项导致光标转圈卡住问题的说明

少于 1 分钟阅读

1 问题概述 在 RK3568 平台的 0326 版本系统中,通过桌面右键菜单点击“注销”选项时,可稳定复现鼠标光标持续转圈、界面卡住的现象。此问题与先前已识别的“XFCE 应用启动时光标转圈”问题同源,但因“注销”功能本身的特性,无法采用相同的规避方案。

Ubuntu 部署firefox

少于 1 分钟阅读

Firefox 官网 “Download for Linux ARM64” 会下载 firefox-*.tar.bz2 预编译 tarball,不需要编译,解包就能用。 https://www.firefox.com/en-US/download/linux/

使用overlayroot时root-ro被挂载为rw的bug

少于 1 分钟阅读

问题描述 bootargs = "earlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 irqchip.gicv3_pseudo_nmi=0 root=PARTLABEL=rootfs rootfstype=ext4 rw rootwait overlayroot...

overlayroot 镜像烧录注意事项

少于 1 分钟阅读

烧录overlayroot镜像,分为两种情况: EMMC刚贴片,是空的,那么正常烧录即可 EMMC中烧录过其他系统,那么需要按下面的步骤进行擦除后再烧录

3588 启动介质顺序

1 分钟阅读

启动介质顺序,由很多个方面决定,资料比较封闭,目前只能将收集到的资料都整理在此处,方便后人深入研究。

Docker引擎和Docker Compose是什么

少于 1 分钟阅读

Docker Engine 是底层的“发动机”,负责运行和管理单个容器;而 Docker Compose 是上层的“指挥官”,负责协调和管理由多个容器组成的复杂应用。

XFCE 如何关闭滚轮切换工作区

少于 1 分钟阅读

打开 设置管理器(Settings Manager)。你可以通过点击桌面右上角的图标,或者在终端输入 xfce4-settings-manager 打开。 找到并点击 窗口管理器微调(Window Manager Tweaks)。它的图标通常像一个带有齿轮的窗口。 在弹出的窗口顶部标签页中,切换到 ...

XFCE bug 打开应用鼠标一直转圈 startup notification busy

少于 1 分钟阅读

问题描述 XFCE 系统中,启动应用程序,光标一直显示正在转圈的状态,同时程序卡住无法打开。此时无法使用右键功能。不稳定复现。插拔USB,可以让光标恢复正常的箭头,此时程序正常弹出。

Ubuntu 日志大小限制

3 分钟阅读

systemd-journald、rsyslog 和 logrotate 这三者的概念,请阅读《Ubuntu 日志系统简介》。

update-alternatives 应用程序版本管理

少于 1 分钟阅读

update-alternatives 是 Debian/Ubuntu 等 Linux 发行版中的一个工具,用于管理系统中的替代程序(alternative programs)。它允许你在多个功能相似的程序版本之间进行切换,并维护一套统一的符号链接。

GNOME Shell 介绍

少于 1 分钟阅读

GNOME Shell 是 GNOME 桌面环境的核心用户界面和窗口管理器。它负责在屏幕上看到和与之交互的一切:顶栏、活动概述、应用网格、窗口切换、通知系统等等。

Ubuntu 安装 Chromium

少于 1 分钟阅读

概要:本文介绍了在 Ubuntu 系统上安装 Chromium 浏览器的具体步骤,并提供了注意事项,避免安装错误的软件包。

Ubuntu 22.04 XFCE 面板出现两个网络图标,圆角消失

少于 1 分钟阅读

首先说明,这个问题没有解决,只是规避了 这个问题在Ubuntu20.04 XFCE上没有遇见过,貌似和面板首选项中新增的暗黑模式相关 开启暗黑模式后,重启,面板上便会出现两个网络图标,其中一个是暗黑模式的,另一个是正常模式

Ubuntu 修改主机名

少于 1 分钟阅读

概念 主机名就像计算机的”名字”,在终端提示符中显示为user@firefly的”firefly”部分,主要用于在网络中唯一标识设备、方便管理员区分多台服务器、防止误操作,并让日常的SSH连接和系统管理更加直观和人性化。

Ubuntu 20.04 局域网内 VPN(L2TP IPsec)服务器搭建

2 分钟阅读

读者一定好奇,为什么要在局域网中搭建 VPN 服务器。笔者搭建服务器的目的,主要是为了测试其他设备的 vpn 功能是否正常。具体配置文件可见笔记同目录下内容,配置文件和文章中的配置不太一样,但是是经验证两份配置都是可以正常使用的。

Qt Creator 中交叉编译 Qt 程序

2 分钟阅读

概要:本文详细介绍了如何在 x86 主机上使用 Qt Creator 交叉编译 Qt 程序,并部署到 ARMv8 架构的目标设备上运行。内容涵盖 Qt Creator 的安装、交叉编译套件的配置、以及实际的 Qt 项目编译流程,适用于已完成 Qt 库交叉编译并部署的用户。

Ubuntu 触摸支持相关

少于 1 分钟阅读

概要:本文介绍了在 Ubuntu/Linux 系统中提升触摸屏交互体验的两种方法:修改触摸屏控制板固件或通过系统配置优化触控操作,包括单击激活和右键菜单模拟工具的使用(如 evdev-right-click-emulation)。

实时性测试指南与结果解读

2 分钟阅读

概要:本文介绍了在不同负载条件下使用 cyclictest 工具对 Linux 系统进行实时性测试的方法,涵盖测试环境配置、命令详解及测试结果的解读,特别强调了在压力测试下进行评估的重要性,并提供了一个非实时内核下的测试结果示例。

journalctl 设置不保存日志

少于 1 分钟阅读

概要:本文介绍如何配置 journalctl 仅查看本次启动日志,并禁止日志持久化保存。通过修改 systemd 日志服务配置文件,实现日志存储方式的灵活控制。

Qt 中无法使用ibus-rime中文输入

少于 1 分钟阅读

问题背景 客诉Qt 程序中无法使用ibus-rime中文输入,而在其他位置(例如终端、xfce搜索框)中,中文输入是正常的。

Ubuntu 蓝牙SPP 相关

少于 1 分钟阅读

待完善,参考 https://blog.csdn.net/quququuquq/article/details/131805413

VMware Ubuntu 无法拖拽文件复制解决方法

少于 1 分钟阅读

概要:本文介绍了在 VMware 中安装 Ubuntu 系统时,安装 VMware Tools 后仍无法实现物理机与虚拟机之间拖拽文件的常见原因,并提供了基于 Wayland 设置的解决方法。

EC200M-CN 模块使用说明

1 分钟阅读

概要:本文介绍了 EC200M-CN 模块的接入方式,包括端口识别、网卡模式配置(ECM/RNDIS)、拨号脚本、SIM 卡状态查看等操作,适用于快速部署 4G 网络连接。

XFCE中的字体设置与fontconfig,Qt默认字体

1 分钟阅读

概要:本文介绍了在 RK3568 + Ubuntu + Xfce4 环境中,通过 Fontconfig 配置方式修改 Qt5 应用默认字体为“文泉驿等宽微米黑”的方法,并探讨了桌面环境字体设置对 Qt 程序的影响范围。

firefly 根文件系统蓝牙自动加载分析

1 分钟阅读

概要:本文分析了 firefly 根文件系统中蓝牙固件自动加载的机制,定位到系统通过 udev 规则调用 bt-attach.service 自动加载 brcm_patchram_plus1 导致手动加载失败的问题,并提供了关闭自动加载的方法。

Ubuntu 用户目录文件夹语言更改(桌面 改 Desktop)

少于 1 分钟阅读

概要:本文介绍了在 Ubuntu 系统中,当系统语言为中文时,如何将用户目录(如“桌面”)的文件夹名称更改为中文或保持为英文的操作方法。通过设置环境变量并使用 xdg-user-dirs-gtk-update 工具,用户可以自由控制文件夹语言显示方式。

Ubuntu 绑定网口名称 ethX 与 MAC 地址

少于 1 分钟阅读

概要:本文介绍了如何在 Ubuntu 20.04 系统中,通过 udev 规则将特定的物理网口(MAC 地址)绑定为固定的 ethX 命名方式。内容涵盖环境验证、MAC 地址查看、规则文件编写及系统重载等操作步骤。

Ubuntu 20.04 停用 Snap 的方法

少于 1 分钟阅读

概要:本文介绍在 Ubuntu 20.04 系统中彻底停用 Snap 的方法。包括删除已安装的 Snap 软件、卸载核心文件、清除 Snap 管理工具及相关目录等步骤。无需停止 snapd 服务即可完成操作。

swap 操作时报错:failed Function not implemented

少于 1 分钟阅读

概要:本文记录了在执行 swap 操作时遇到的报错信息 “Function not implemented”,并分析其原因与给出解决方案。问题的根源是 Linux 内核未启用对交换文件的支持,解决方法是编译内核时启用 CONFIG_SWAP 选项。

3568 xfce 桌面卡顿优化

少于 1 分钟阅读

本文提供了多种提升 XFCE 桌面流畅度的设置建议,用户可根据实际使用体验,自由选择搭配使用,无需全部应用。

XFCE 更改时间显示的格式(地区格式)

少于 1 分钟阅读

问题描述 更改桌面环境为中文后,面板上的时间显示仍然为英文,且为英文的显示格式,而右键时间->属性,弹出来的时间设置窗口中也无法选择中文。

chromium 缺少 libjpeg.so.62 库

少于 1 分钟阅读

问题描述 firefly@firefly:/usr/bin$ ./chromium ./chromium: error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or di...

3588 Ubuntu 无声音问题

少于 1 分钟阅读

问题描述 从Gnome迁移到XFCE系统后,发现播放音乐时扬声器没有声音

Ubuntu 巨型帧配置与测试

少于 1 分钟阅读

概要:本文介绍了在 Ubuntu 系统中配置巨型帧(Jumbo Frame)的方法,并通过与 Windows PC 的直连测试验证配置是否成功。包括具体的 Ubuntu 命令操作、Windows 网卡设置步骤,以及 ping 测试示例。

rk3588 es8336 声音偏小的问题

2 分钟阅读

问题描述 RK3588适配了es8336芯片后,播放音频的声音一直比较小,查看适配的驱动发现为es8316.c,查看内核发现没有专门的es8336驱动。怀疑是驱动不完全适配导致的声音偏小。

用户添加 sudo 权限

少于 1 分钟阅读

方法1:使用 usermod 命令(推荐) 打开终端,使用已拥有 sudo 权限的用户登录。 将用户添加到 sudo 组: sudo usermod -aG sudo user -aG:表示追加(a)到指定的组(G),不覆盖原有组。 sudo:目标用户...

Ubuntu查看用户所属的组及加入其他组

少于 1 分钟阅读

1 查看用户所属的组 groups 命令: groups [username] 不加 username: 查看 当前登录用户 所属的所有组。 加 username: 查看指定用户 username 所属的所有组。 输出示例: username ...

Ubuntu开机脚本rc.local没有生效

少于 1 分钟阅读

在 Ubuntu 20.04 中,rc.local 默认是不启用的,因为它使用了更新的 systemd 启动系统。但你可以手动启用它,以下是完整步骤:

3568 安装dbeaver数据库可视化软件

少于 1 分钟阅读

简介 DBeaver Community 是一款免费跨平台的数据库工具,适用于开发者、数据库管理员、分析师以及所有处理数据的人员。它支持所有流行的 SQL 数据库,如 MySQL、MariaDB、PostgreSQL、SQLite、Apache 家族等。

Qt5.12.9库(交叉编译)移植指南

少于 1 分钟阅读

1 打包复制 交叉编译Qt库后,make install,目标库将会被安装在x86,configure时被配置为QT_TARGET_PREFIX的位置。假设配置在ext目录下。 将ext目录下的内容打包为tar.gz,复制到arm板的/opt上,解压: tar -xzvf

Ubuntu 启用软键盘

少于 1 分钟阅读

使用的软件 一般用的软键盘程序是onboard,且系统可能预装,如果没有,安装即可。

LD_LIBRARY_PATH设置的坑

少于 1 分钟阅读

LD_LIBRARY_PATH被显式设置时,系统可能就不会去/etc/ld.so.conf.d/aarch64-linux-gnu.conf文件中找动态链接库路径了!导致很多软件运行不正常!

清理fcitx输入法框架

少于 1 分钟阅读

背景 输入法框架从fcitx更换为ibus,为了避免冲突,决定清理fcitx

修改 LightDM 自动登录的账户

少于 1 分钟阅读

1. 编辑 LightDM 配置文件 打开终端,使用管理员权限编辑 LightDM 的主配置文件: sudo nano /etc/lightdm/lightdm.conf 如果文件不存在,检查 /etc/lightdm/lightdm.conf.d/ 目录下的配置文件(如 aut...

XFCE 网络同步时间报错

少于 1 分钟阅读

问题背景 xfce的网络时间同步默认没有打开,但是选择打开时会提示缺少组件需要下载,下载时又报错。 具体在桌面面板,右键时间,点击属性,点击时间和日期设置…,配置选择“与互联网服务器保持同步”时,会触发上面的问题。 问题原因 Ubuntu中的ntp分为两种,xfce GUI中的开关用的是传统ntp服务,而内置的...

Ubuntu下修改ntp服务器配置

1 分钟阅读

1 配置选择说明 Ubuntu系统通常使用两种时间同步服务: ntpd:传统NTP守护进程(安装后自动启用) systemd-timesyncd:现代Linux默认的时间同步服务

Ubuntu 普通用户更改名字

少于 1 分钟阅读

一般不要做更改用户名的操作,因为如果配置过依赖用户名或者用户组的操作,改名字要把这些操作都变更了,十分的麻烦,本指南比较适用于还没怎么配置过的系统。

rc.local 开机脚本sleep会阻塞系统启动

少于 1 分钟阅读

分析 rc.local 运行的性质: 尽管不同发行版和 systemd 的实现细节可能略有差异,rc.local 通常是在系统启动接近完成时(例如在 multi-user.target 阶段),由 rc-local.service 或类似的服务同步执行的一个脚本。

4G EC20 模块使用

少于 1 分钟阅读

概要:本文介绍了 EC20 4G 模块的基本工作方式,主要包括系统内核配置、拨号方式选择与端口切换的操作方法,同时说明了不同拨号模式的原理及设备节点的识别方法。本文适用于在 Linux 和 Android 系统中集成和使用 EC20 模块的开发者。

Ubuntu 中配置网络优先级——修改跃点 metric

1 分钟阅读

1 什么是跃点 metric 同一台ubuntu主机可能有不同的网络,比如多个有线网络、wlan、4G等等。当这些网络同时连接时,需要规定一个优先级,一般是有线>wifi>4G。优先级就是通过路由的跃点进行配置的。

RK 3566 3568 3588 NPU 测试指导

1 分钟阅读

概要:本文介绍了 RK 3566 3568 3588 平台上 NPU(神经网络处理器)的测试方法,包括驱动版本查看、开机日志检查、NPU 使用率获取以及 YOLOv5 demo 的使用指南,并指出常见报错的无害性,指导用户如何验证 NPU 功能完整性。

Ubuntu 自动将系统时间同步到RTC中

1 分钟阅读

概要:本文介绍了在 Ubuntu 系统中,通过 systemd 定时器与脚本实现自动检测并同步系统时间与硬件时钟(RTC)的配置方法,包含脚本编写、服务与定时器的创建、启用、关闭及恢复等完整流程。

Ubuntu 下 nmcli 修改网络优先级

少于 1 分钟阅读

概要:本文介绍了在Ubuntu系统中通过nmcli工具修改网络连接优先级的方法,包括查看现有连接、调整路由优先级以及验证配置效果。

Ubuntu todesk 识别码重置

少于 1 分钟阅读

概要:本文介绍了在Ubuntu系统中重置todesk识别码的方法,包括卸载软件、删除配置文件以及注意事项。

3568 Ubuntu todesk & 向日葵bug

少于 1 分钟阅读

todesk 显示正常,但鼠标移动缓慢 应该是cpu占用很多导致的,运行时rk3568,4个核心占用都在80%以上

RK Ubuntu下屏参 与 baseparameter

少于 1 分钟阅读

问题: 内核设备树修改屏参后,不生效,表现为debug口读取到的分辨率和设备树中设置的不一致,后面发现是和baseparameter 256KB处存储的屏参有关

rk3568 扬声器 音频 无声音问题

少于 1 分钟阅读

概要:本文介绍了在rk3568设备上运行Ubuntu系统时,扬声器无声音的可能原因及解决方法,主要通过配置音频设置来解决问题。

Ubuntu 启动桌面后显示自定义动态logo

1 分钟阅读

概要:本文介绍了在Ubuntu 20.04系统中,使用LXDE桌面环境时,如何在系统启动后显示自定义动态GIF logo,并在加载完成后自动关闭动态logo并启动指定软件的解决方案。

Ubuntu LxQt 配置 ibus-rime 中文输入法

少于 1 分钟阅读

概要:本文介绍如何在 Ubuntu 20.04 + LxQt 桌面环境下安装和配置 ibus-rime 中文输入法,包括依赖安装、环境变量设置、输入法添加、开机自启配置等步骤,并附有实际测试效果说明。

设置 apt 默认不升级指定的软件包

少于 1 分钟阅读

概要:本文介绍了如何使用 apt-mark 命令设置 apt 默认不升级指定的软件包,包括如何标记软件包为保留状态以及查看已保留的软件包列表。

ubuntu中修改某个账户的密码

少于 1 分钟阅读

概要:本文介绍了在Ubuntu系统中修改某个账户密码的两种方法,包括使用passwd命令修改其他用户密码和修改当前登录用户的密码。

Ubuntu 支持 NTFS U盘

少于 1 分钟阅读

概要:本文介绍了如何在 Ubuntu 系统中安装 NTFS 支持工具,以便能够正常读写 NTFS 格式的 U 盘。通过简单的命令行操作,您可以快速实现 NTFS 文件系统的支持。

LXDE 语言更改为中文

少于 1 分钟阅读

概要:本文介绍了如何将LXDE系统的语言更改为中文,提供了具体的操作步骤和相关配置文件的修改方法。

LXDE 开机默认不启动桌面

少于 1 分钟阅读

概要:本文介绍了如何在 LXDE 系统中禁用桌面组件,使系统启动时不加载桌面环境,适用于信息亭等信息展示用途。

启动时 logo 自定义功能

2 分钟阅读

概要:本文介绍了在系统启动时自定义 Logo 的实现原理和操作方法。通过在 update.img 中添加一个格式化为 ext4 的 resource.img 分区,实现开机自动加载 Logo 的功能,并支持用户后续自行更换 Logo 图片。

Qt5.15.2 本地编译及安装记录

1 分钟阅读

概要:本文记录了 Qt 5.15.2 的源码下载及本地编译安装过程,包含所需依赖包的安装指令、编译配置参数及安装路径设置等详细步骤,适用于希望在本地构建 Qt 环境的开发者参考。

apt 卸载软件包

少于 1 分钟阅读

1. 卸载软件包(保留配置文件) sudo apt remove 软件包名 仅删除软件包,但保留配置文件(便于重新安装时恢复配置)。

Ubuntu根文件系统分区扩展指南 - 修订版

1 分钟阅读

概要:本指南提供了一个用于扩展Ubuntu根文件系统的分区脚本,并解决了之前版本中的两个主要问题:残留标志文件导致扩展不生效,以及脚本中分区硬编码的问题。通过动态获取根设备和分区,该脚本可以在不同机器上使用。

Qt库 移植指南

少于 1 分钟阅读

概要:本指南记录了如何将已在 A 主机(RK3588 Ubuntu)上编译完成的 Qt5.14.2 库移植到 B 主机(另一台 RK3588 Ubuntu),包括打包、解压及必要的依赖安装步骤。

Qt库 deb包构建指南

1 分钟阅读

步骤1:准备基础环境 # 创建打包工作目录 mkdir -p qt5142-deb/DEBIAN qt5142-deb/opt

Qt5.14.2 本地编译及安装记录

1 分钟阅读

概要:本文记录了在 RK3588 上手动编译并安装 Qt 5.14.2 的完整过程,包括所需依赖的安装、源码下载与编译配置,以及常见问题的解决方案。

LXDE 隐藏桌面导航栏

少于 1 分钟阅读

概要:本文介绍了如何在 LXDE 桌面环境中隐藏桌面导航栏,通过终端命令进入面板设置进行调整。

LXDE 修改图标大小

少于 1 分钟阅读

概要:本文介绍了如何在 LXDE 桌面环境中调整 PCManFM 文件管理器的图标大小,包括具体的操作步骤和推荐的图标尺寸。

Ubuntu 下硬盘分区、格式化、挂载

1 分钟阅读

概要:本教程介绍了在 Ubuntu 系统下如何查看硬盘信息、进行分区、格式化、挂载以及设置开机自动挂载,适用于新安装的硬盘或重新配置的存储设备。

修复 sudo 报错:无法解析主机,未知的名称或服务

少于 1 分钟阅读

概要:在 Ubuntu 上运行 sudo 命令时,可能会遇到 “无法解析主机:user: 未知的名称或服务” 错误。通常,这是由于主机名 (hostname) 配置错误或 /etc/hosts 文件缺少相应的条目。本文介绍如何检查和修复该问题。

Linux 自定义桌面图标执行自定义命令

少于 1 分钟阅读

概要:本指南介绍如何在 Linux 桌面环境下创建自定义图标,并定义其执行的命令。通过 .desktop 文件,可以便捷地启动应用程序,本文以 VNC Viewer 为例进行演示。

Linux 桌面应用开机自启

少于 1 分钟阅读

概要:本文介绍如何在 Linux 桌面环境下配置 GUI 应用的开机自启。由于普通的开机自启脚本可能缺少 DISPLAY 变量,导致 GUI 程序无法正常运行,因此本文采用桌面环境的自动启动项进行配置。

Ubuntu下测量命令或脚本的执行时间

少于 1 分钟阅读

time 命令用于测量命令的执行时间,在 Linux 和 macOS 终端中非常有用。它可以显示程序运行所消耗的 总时间、用户 CPU 时间和系统 CPU 时间。

Ubuntu 下 sensors 查看温度

少于 1 分钟阅读

sensors 命令用于在 Linux 系统中显示硬件传感器的数据,例如 CPU 温度、风扇转速、电压等。

安装VNC服务并开机自启 实现远程桌面控制

1 分钟阅读

VNC(Virtual Network Computing)是一种远程桌面共享协议,允许用户通过网络访问远程计算机的桌面环境。本教程介绍如何在 Linux 系统(如 Ubuntu、Debian 等)上安装 x11vnc 服务器,并配置其开机自启,以便远程访问和管理桌面环境。

ping -I 指定网络接口 ping 时报错

少于 1 分钟阅读

错误信息 root@RK3568:/vendor/lib/modules# ping -I wlan0 8.8.8.8 ping: invalid option -- 'I' Try 'ping --help' or 'ping --usage' for more information.

解决 Ubuntu 下网络管理工具的混乱问题

1 分钟阅读

在 Ubuntu 系统中,可能会遇到多个网络管理工具共存的情况,导致网络配置混乱,甚至无法正常工作。本文将详细分析 Ubuntu 中常见的网络管理工具,并指导如何确定当前使用的工具,禁用多余的工具,确保网络管理的稳定性。

SSH 连接问候信息配置指南

少于 1 分钟阅读

SSH 连接时显示的问候信息称为 MOTD (Message of the Day),在 Ubuntu 系统中可以通过静态或动态方式配置。

查看 Ubuntu 系统的桌面环境和显示管理器

少于 1 分钟阅读

下面这些命令需要在桌面终端中执行,否则可能无法准确显示结果。如果你通过 SSH 登录系统,$XDG_SESSION_TYPE 和 $XDG_CURRENT_DESKTOP 等变量可能为空或返回非图形环境相关的值。

根文件系统打包时如何指定打包的目录

1 分钟阅读

FireFly 官方提供的打包工具 ff_export_rootfs 不能指定打包的目录,只能指定打包后 .img 文件的输出目录。为了解决这个问题,我对脚本进行了修改,添加了 -s 参数,用于指定需要打包的源目录。 </br> 此脚本适用于以下场景:在另一台机子上挂载根文件系...

Ubuntu Swap 配置指南

少于 1 分钟阅读

以下是如何在 Ubuntu 系统中启用、关闭和删除 Swap 的详细步骤。Swap 是虚拟内存的一部分,可以在物理内存不足时提供额外的内存支持。

Ubuntu 下查看当前目录下目录及文件大小

少于 1 分钟阅读

使用 du 命令: du -sh * 这个命令会列出当前目录下每个文件和目录的大小。-s 选项表示总结(只显示总大小),-h 选项表示以人类可读的格式显示大小(如 KB, MB, GB)。

加载libicui18n.so.66失败问题解决指南

少于 1 分钟阅读

问题描述 执行程序时,报如下的错误: error while loading shared libraries: libicuil8n.so.66: cannot open shared object file: No such file or directory

Ubuntu根文件系统打包方式

少于 1 分钟阅读

本指南介绍如何使用FireFly官方提供的打包工具 ff_export_rootfs 将Ubuntu的根文件系统打包成一个镜像文件。

Ubuntu根文件系统分区扩展指南

1 分钟阅读

在Ubuntu中,烧录好的 rootfs 文件系统可能未能占用整个分区的空间,导致设备的根分区提示空间不足。 解决方式:通过自动化脚本和服务配置,在启动时自动扩展根文件系统到分区的完整大小。

返回顶部 ↑

Android 开发指南

3568 PCIe2CAN模块 F81601A_PCIe_CAN 适配指南

1 分钟阅读

1. 芯片介绍 F81601A 是 Fintek 出品的 PCIe 转 2 路 CAN FD 芯片,基于自定义 SJA1000 兼容控制器实现。本文档记录在 RK3568 Android 11 平台(NK_RK3568 板卡)上完成 PCIe2x1 接口切换及驱动集成的完整过程。

什么是MDM

少于 1 分钟阅读

MDM(Mobile Device Management,移动设备管理)是一种企业级的 IT 管理解决方案。简单来说,它就是一个中央控制台,让你可以远程管理、配置、监控和保护分布在各地的海量终端设备(如手机、平板、工控机、数字标牌和 POS 机等)。

3568 Android 4K显示

少于 1 分钟阅读

HDMI 系统下设置 设置->显示->HDMI->分辨率设置中可以调节分辨率

Linux下交叉编译C程序到Android上运行

少于 1 分钟阅读

概要:本文介绍了如何在 Linux 平台下使用交叉编译器编译 C 语言程序,并将其部署到 Android 设备上运行的完整过程。通过具体的命令示例,演示了从编译、推送到设备、赋予执行权限直到运行程序的整个流程。

Android 音频相关命令

1 分钟阅读

概要:本文整理了在 Android 系统中查看和操作音频设备的常用命令,包括声卡与 PCM 设备的查看、音频控制项的读取与配置等,适用于调试与开发场景下的音频相关操作。

Android 音频框架

少于 1 分钟阅读

概要:本文介绍了 Android 音频框架的整体架构与各个组成部分的职责和作用,包括应用框架、JNI、原生框架、Binder IPC、媒体服务器、HAL 以及内核驱动程序等模块。

3568 Android 禁用板载 RK809 MIC 麦克风

少于 1 分钟阅读

需求 客户接入usb摄像头,携带有麦克风。3568表现如下: 没有接入USB摄像头时,板载RK809麦克风正常使用 接入USB摄像头时,系统自动关闭了RK809的麦克风,切换成USB摄像头上的麦克风

键码查询(Generic.kl KeyEvent.java)

2 分钟阅读

在 Android 系统中,每次物理按键的按下都触发了一系列精密的转换过程。这个过程中,Generic.kl 和 KeyEvent.java协同,将原始的硬件信号转化为应用程序可处理的事件。本文将深入探讨这两个关键组件如何协同工作,构成 Android 输入系统的基石。

sharedUserId 和 android.uid.system

少于 1 分钟阅读

AndroidManifest.xml中,有如下声明 ```xml ``` `android::sharedUserId="android.uid.system"` 是一个重要的 Android 系统属性,它表示应用要以**系统级特权**运行。

Android APK签名 与 jks文件

1 分钟阅读

Android APK签名 一、核心概念 APK签名是Android应用发布的核心安全机制,用于验证应用的完整性和来源真实性。它确保APK在发布后不被篡改,并建立开发者身份的可信链。

3568 Android 显示不支持VPN(第三方VPN应用)

少于 1 分钟阅读

概要:本文介绍了在 RK3568 Android 11 系统中,第三方 VPN 应用无法正常使用的问题。通过排查发现系统缺少必要的 VpnDialogs 组件,最终通过修改编译配置并重新编译系统解决了问题。

相关文件

少于 1 分钟阅读

frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp

Android 蓝牙 两设备互联

少于 1 分钟阅读

概要:本文介绍了两台 Android 设备在蓝牙配对后未显示“已连接”的原因,并通过经典蓝牙 SPP 通信建立持续数据通道,实现连接状态的显示。同时简要说明了如何使用“e调试”工具进行连接测试。

使用 audit2allow 工具生成 SELinux 权限

2 分钟阅读

概要:本文介绍了在 RK3568 Android11 SDK 上,如何通过 logcat 抓取 SELinux 拒绝日志,并使用 audit2allow 工具快速生成 SELinux 权限策略,解决权限拒绝问题。

rk 预装apk失败 —— apk无签名

少于 1 分钟阅读

问题描述 3568 预装apk(使用device/rockchip/rkxxxx/preinstall_del目录),编译无报错,但烧录系统后发现没有预装成功。

了解笔记

少于 1 分钟阅读

Rockchip上的 TX RX delay指 mac芯片和phy芯片之间,时钟和数据相位上的延迟。

Android 图标 矢量图 xml 代码获取方式

少于 1 分钟阅读

在看源码的过程中,发现有一些图标是这样引用的: <com.android.settings.wifiADB android:key="wifi_adb" android:title="@string/wifi_adb_title" android:summary="@string/w...

多设备树 build.sh修改 与打包解析

5 分钟阅读

概要:本文主要介绍如何修改 build.sh 脚本以支持多设备树的编译与打包,适用于 Android 平台。内容包括设备树的编译流程、resource.img 和 boot.img 的构建逻辑,以及 ./build.sh -u 选项的函数执行原理。

如何验证 apk 签名状态

少于 1 分钟阅读

Android 官方推荐使用apksigner来验证 APK 签名。该工具位于 Android SDK 的build-tools目录中。

apk预装指南

1 分钟阅读

1 方式一 这种方式预装的软件在开机自启应用处可能不显示。 相比于方式二,方式一安装的应用可获得的权限更高。 方式一是Android原生的软件预装方式。 1.1 目录结构

apk v1 v2 v3 v4 签名

少于 1 分钟阅读

下面用简明扼要的方式介绍 Android APK 的四种签名方案(v1、v2、v3、v4)、它们的特点、兼容性与常用操作建议。

Android 默认允许USB设备授权

1 分钟阅读

问题描述 客户apk会访问usb的摄像头,每次打开apk时,都会出现一个权限弹窗,提示“是否允许xxx应用访问xxx设备”。需求是去掉这个弹窗,默认允许所有USB设备的访问授权。

Android activity 生命周期

少于 1 分钟阅读

参考链接 https://developer.android.com/guide/components/activities/activity-lifecycle?hl=zh-cn

预装apk时,库没有更新导致的问题

1 分钟阅读

问题描述 更新厂测apk时,发现使用adb 或者 u盘手动安装apk,则运行一切正常,但是预装到系统中,则运行报错,具体表现为应用可打开,但是某些操作后触发闪退,或者是运行不正常,比如不能正确获取mac、SN等。

T3568I厂测镜像与厂测工具说明

少于 1 分钟阅读

厂测镜像 测试流程 先刷HDMI镜像,验证HDMI显示,然后使用OTA升级包升级,验证LVDS和eDP,然后使用厂测工具进行测试。

Android WebView测试与更新——rk3568

2 分钟阅读

概要:本文介绍了在rk3568平台上进行Android WebView兼容性测试的方法,探讨了不同WebView实现的差异,并提供了WebView的下载方式及预装配置方法,旨在帮助开发者解决特定网页在不同WebView版本下的显示兼容性问题。

3568 Android ntp校时使用

少于 1 分钟阅读

1 系统下配置方法 注意:需要加入commit baeccb51ad86565bf338302f1bb54900732a29a6 才有此选项

data分区由fsf2改为ext4导致的启动卡在Android logo的问题

1 分钟阅读

概要:本文记录了在 Android 11(RK3568)平台上,由于 data 分区文件系统从 f2fs 修改为 ext4,导致系统启动卡在 Android logo 的问题。通过分析 logcat 报错信息和对比 fstab 配置文件的修改,最终定位并解决问题的方法是修改当前编译版型对应的 recovery.f...

gms 认证弹窗问题解决与验证

1 分钟阅读

概要:本文介绍了 Android 11 环境下 GMS 认证弹窗问题的两种解决方式,并提供了详细的代码修改方案与验证方法,确保用户在非官方认证环境下也能正常使用谷歌服务。

3588 Android 串口软件提示“没有串口读写权限”

1 分钟阅读

概要:本文介绍了在 RK3588 Android 系统中,配置串口设备后,部分串口在使用串口调试软件时提示“没有串口读写权限”的问题。通过分析 /dev/ 目录下设备权限以及系统配置文件,最终定位到 ueventd.rockchip.rc 配置被其他 rc 文件覆盖,并提供了解决方法和参考补丁代码。

3588 Android 背光下电慢导致的闪屏问题

1 分钟阅读

概要:本篇文章针对 RK3588 Android 系统在关机过程中出现的“闪屏”问题进行分析,确认是由背光下电延迟引起。文章提供了硬件和软件两种解决方案,并详细说明了软件层的修改过程,包括关键代码路径和具体实现方式。

CONFIG_DEVMEM 编译失败问题 —— 3588 Android

1 分钟阅读

问题 首次编译3588 Android SDK时出现编译错误,日志如下: ```sh ‘out/target/product/rk3588_RB/system_ext/etc/vintf/manifest.xml’: OK checkvintf I 06-05 16:06:03 8701 8701 HostF...

Android GKI是什么

少于 1 分钟阅读

GKI(Generic Kernel Image,通用内核镜像) 是 Android 操作系统针对 Linux 内核推出的标准化架构,旨在解决 Android 生态的内核碎片化问题。

Android 设置下增加选项——以增加安卓层渲染分辨率为例

3 分钟阅读

概要:本文介绍了如何在 Android 系统中,通过添加系统属性和设置 UI,实现主帧缓冲分辨率的动态调节功能,包括系统属性的配置、多语言支持、UI 接口接入、自定义 Preference 控件的实现与解析等,适用于性能调试、节能优化和兼容性测试等场景。

Android 屏幕最小宽度与 DPI 设定

少于 1 分钟阅读

概要:本文介绍了 Android 系统中通过设置 DPI(每英寸点数)和最小宽度来优化屏幕显示效果的方法,并附带了相关命令和源码修改示例,适用于开发者进行系统定制和适配优化。

3588 记忆热点开关状态功能

14 分钟阅读

需求:原系统在开启热点后重启,热点不会保持开启状态,需要增加热点开关状态的记忆功能。

谷歌TTS

少于 1 分钟阅读

谷歌TTS指的应该是安卓设置下,无障碍,文字转语音TTS

Android 中修改文本文件

少于 1 分钟阅读

概要:本文介绍了在Android系统中如何修改文本文件,特别是在终端中无法使用vim或nano时的替代方法。

开机后系统属性设置

少于 1 分钟阅读

概要:本文介绍了如何在 Android 系统开机后设置持久化属性,列举了常用命令及属性文件的保存位置,帮助开发者理解系统属性配置的具体实现方式。

主副屏显示调整

少于 1 分钟阅读

概要:本文介绍了在不同 Rockchip 平台(rk3568 和 rk3588)上,通过修改 Android 构建配置文件来调整主副屏的显示顺序和输出设备。

HDMI+LVDS 双显显示比例问题

少于 1 分钟阅读

概要:本文介绍在 Android 系统中同时启用 HDMI 和 LVDS 输出时,由于屏幕比例不同可能导致画面拉伸的问题,并尝试通过设置系统属性来指定 UI 的绘制比例以解决此问题,但该方法在双屏显示时仍存在比例异常的情况。

3588 Android13 隐藏导航栏

少于 1 分钟阅读

概要:本文介绍了在 Android 13 上如何通过修改 config.xml 配置文件,启用手势导航模式,从而隐藏导航栏。并分析了相关代码的解析和生效原理。

HDMI 增加特殊分辨率

1 分钟阅读

一般的 HDMI 分辨率都有适配,但是在某些横屏转竖屏 HDMI 输出下,就需要增加特殊的 HDMI 分辨率了 本文用于指导如何添加特殊分辨率的 HDMI 显示。 参考文档 RK官方文档\02、Android\common\display\Rockchip_Developer_Gui...

RK WiFi BT 模组移植调试方法

少于 1 分钟阅读

概要:本文介绍了 RK WiFi BT 模组的移植调试方法,包括硬件检查、设备树配置、驱动加载以及日志分析等关键步骤,以帮助开发者快速定位和解决问题。

RK OTG 模式切换源码解析

1 分钟阅读

概要:本文解析了 RK Android 系统中 OTG 模式切换的实现方式,介绍了相关的系统属性 persist.usb3.otg.mode 及其在源码中的应用,并详细分析了 OTG 模式切换的底层逻辑。

RK Android11 WiFi模组 AIC8800 驱动移植流程

4 分钟阅读

概要:本文介绍了基于 AIC8800D40 芯片的 WiFi6 模组 BL-M8800DS2-40 在 RK3568 平台上的驱动移植流程。主要涉及环境搭建、驱动代码分析、设备树修改、驱动编译配置、蓝牙库集成、wpa_supplicant 配置及 WiFi HAL 适配等内容,并提供详细的移植步骤和注意事项。

RK Android OTG切换

少于 1 分钟阅读

概要:本指南介绍了 RK 平台上 USB OTG(On-The-Go)功能的切换方法,包括主机与从机的角色转换、命令行操作以及图形界面设置,以便用户能够正确配置设备的 USB 模式。

RK ADB 调试方式

少于 1 分钟阅读

概要:本文介绍了在 RK 设备上使用 ADB 进行调试的方法,包括软件使用、命令操作以及设备 USB 模式的配置。

ttySx 与 serial 别名的对应关系

1 分钟阅读

1. 设备树(Device Tree)中的 serialX 别名 在 Linux 设备树(DTS/DTSI)文件中,通常会有 aliases 节点,其中定义了 serialX 别名。例如: aliases { serial0 = &uart0; serial1 = &uart1; ...

屏幕时序参数详解

1 分钟阅读

本文详细介绍了屏幕显示时序的基本参数,包括水平和垂直方向的有效像素、同步信号、前肩、后肩及其总周期的定义与计算公式。同时,通过公式和图示,阐明了各参数之间的关系,并提供了完整的参数缩写说明,帮助读者快速理解屏幕时序的核心概念和计算方法,是学习显示时序原理的实用参考。

设置应用开机前台自启

3 分钟阅读

本文将通过修改 Android 系统源代码和配置文件,实现应用在设备开机后以前台形式自启的功能(即用户可直接看到应用界面)。具体实现涉及多个文件的修改和联动,以下内容包括详细代码块、代码解释,以及最终实现该功能的总结。

查看应用包名和 Activity 名称

少于 1 分钟阅读

1 查询应用的包名 方式1 运行以下命令,替换关键字 Your_APP_Name 为具体的模块名称,也就是应用对应路径下的vendor/rockchip/common/apps/Your_APP_Name/Android.mk中的LOCAL_MODULE属性。

获得TX_RX_delay推荐值指南

少于 1 分钟阅读

背景说明 在 Rockchip 平台中,TX 和 RX delay 指的是 MAC 芯片和 PHY 芯片之间,时钟和数据相位的延迟调整。由于千兆网卡的高频信号更容易受到 PCB layout 走线和电磁干扰的影响,RGMII 接口需要进行精确的时序配置。如果测试中出现吞吐率不足、不稳定或 TX、RX 不通的...

使用 mkmultidtb.py 打包多个设备树

少于 1 分钟阅读

当我们开发嵌入式系统(特别是基于 Rockchip 平台的设备)时,经常需要将多个设备树(DTB)文件与其他资源文件一起打包为一个 resource.img 文件,以供设备启动时加载。本文将详细解析 mkmultidtb.py 脚本的工作原理,并说明如何正确使用它完成设备树的打包。

返回顶部 ↑

RK (Android&Ubuntu) 通用开发指南

GPIO 相关命令

少于 1 分钟阅读

概要:本文介绍了在Linux bash环境和Android init.rc脚本中操作GPIO的常用命令,包括查看GPIO状态、导出引脚、配置方向以及设置电平等操作。

RK SD 卡启动

少于 1 分钟阅读

参考 https://redmine.rock-chips.com/issues/613225 《RK3568改为SD卡启动》 —— by李浩

RK3588 图层plane 介绍

1 分钟阅读

参考 《Rockchip_Developer_Guide_DRM_Display_Driver_CN》3.2.4.2 指定图层分配策略 https://github.com/ChisBread/linux-orangepi/commit/63eb2dd31f886dcdb3f8d4d595c41f2a1...

V4L2是什么

少于 1 分钟阅读

V4L2 (Video for Linux 2) 是 Linux 内核中关于视频设备的标准驱动框架。它向下为各种复杂的视频硬件(如摄像头、ISP、视频解码器等)提供灵活的扩展机制,向上为用户空间的应用程序(如 FFmpeg、GStreamer 或你自定义的 C# / Python 测试软件)提供统一的 API 接...

CS5211 屏参设置注意事项

少于 1 分钟阅读

配置前,一定要先确认,要配置的芯片是CH7511还是CS5211,这两者的bin文件不是通用的

RK 看门狗watchdog部署方式

少于 1 分钟阅读

概要:本文介绍 RK 平台 watchdog 的部署方式,包括后台喂狗脚本的创建、脚本内容配置、执行权限赋予,以及将喂狗程序加入开机启动(/etc/rc.local)的方法。

RK 看门狗 watchdog 相关命令

少于 1 分钟阅读

概要:本文整理了 Rockchip 平台上 Watchdog(看门狗)功能的核心用法,包括内核自动喂狗与手动喂狗的操作方法,以及关于 356X 系列暂停与恢复看门狗计数的寄存器写法,适用于系统稳定性保障与故障恢复处理场景。

Linux kernel RTC 相关模块解析

少于 1 分钟阅读

概要:本文介绍了 Linux 内核中 RTC(实时时钟)模块的代码路径和调用流程,分析了 ioctl 接口的实现逻辑,并提供了使用 C/C++ 语言调用 RTC 接口读取时间的示例。适合希望深入了解 RTC 驱动机制的开发者阅读。

RKMPP 视频编解码相关

3 分钟阅读

MPP简介 MPP(Media Process Platform)全称为媒体处理平台,它是 RK 提供的一个用于进行视频硬编解码的库。通过 MPP,我们就可以使用 RK 芯片的 VPU(Video Process Unit,视频处理单元)对我们的视频进行硬件编解码,从而减少 CPU 的负担,加快编解码速度。

DP的DCLK分不出来导致不显示

少于 1 分钟阅读

概要:本文记录了在使用 Rockchip VOP2 输出到 DP 接口时,发现 DCLK 无法正确配置导致显示异常的问题排查过程,并给出了通过补丁和手动配置 PLL 参数解决的办法。

O_DIRECT 功能验证使用

4 分钟阅读

参考链接 https://www.kernel.org/doc/html/next/filesystems/fscrypt.html https://blog.csdn.net/qq_39952971/article/details/116228285 https://redmine.rock-chips.com...

梳理 nm372 和 cm256 WiFi,谈谈芯片公司的互相收购

少于 1 分钟阅读

nm372 和 cm256 是 海华科技(AzureWave) 推出的 WiFi 模组,分别采用了 CYW43438(或 CYW43430) 和 CYW43455 这两款无线芯片。那么,这些芯片究竟出自哪家公司?这背后涉及一连串复杂的历史收购与品牌变迁。

设备树查看

少于 1 分钟阅读

原设备树文件 rockchip_suspend: rockchip-suspend { compatible = “rockchip,pm-rk3568”; status = “disabled”; rockchip,sleep-debug-en = <1>; rock...

开发记录

1 分钟阅读

kernel/include/dt-bindings/suspend/rockchip-rk3568.h 记录了设备树中支持的各种模式

新增pwm节点并在用户空间操作使用

1 分钟阅读

1 设备树修改示例 ```diff diff –git a/kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi b/kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi index c2774fff9..4c3a5551...

USB读卡器设备插入会导致XHCI挂死,无法使用

1 分钟阅读

概要:本文记录了在 rk3568 平台的 Android 11 系统中,插入特定 USB 读卡器后导致 XHCI 控制器挂死的问题。通过日志分析与 Rockchip 官方技术支持配合,最终通过 HID 驱动补丁规避了问题,确保系统稳定运行。

RK3588 从eeprom中读取mac地址——8211F+AT24

4 分钟阅读

1 MAC存储方案介绍 目前MAC有三种存储方案。 写在固件中 —— 相同固件会产生相同的MAC,批量时会造成MAC冲突 使用随机地址 —— rk官方的机制为:检测不到正确的MAC时,驱动会生成随机的MAC地址 固化到EEPROM —— 更换固件后,只要从EEPROM读取MAC的代码逻辑相同,MAC...

驱动调试打印日志技巧

少于 1 分钟阅读

概要:本文介绍了在驱动开发过程中,通过使用打印日志的技巧进行调试的方法,包括在关键函数中添加日志、使用宏和特殊标记进行定位与检索,并补充了与 __FUNCTION__ 类似的常用宏,提升日志定位能力。

Linux 驱动开发示例

2 分钟阅读

本文通过流程图和代码示例,详细介绍了Linux驱动开发的加载流程和基本驱动骨架,包括驱动注册、设备匹配、probe函数调用等关键步骤,以及驱动结构体的各个组成部分和作用。

主板网口直连主机进行调试

1 分钟阅读

概要:本文介绍了在主机通过两个网口连接外网与调试主板的场景中,如何进行网络配置以实现调试主板共享主机外网,解决因 MAC 冲突导致的 SSH 和 FTP 连接不稳定问题。

查看 USB 的拓扑结构和速度

1 分钟阅读

概要:本文介绍了如何通过 Linux 系统的 /sys/bus/usb/devices/ 目录查看 USB 设备的拓扑结构与连接速度。详细解释了 USB 设备在该目录下的命名规则,并通过实例分析了多个 USB 总线的拓扑关系,最后介绍如何查看设备的连接速率及其含义。

RJ45网口灯配置

3 分钟阅读

1 原理 1.1 实际效果 RJ45接口一般有左右两个Led灯,用于指示网络连接状态,实际上,一侧的灯珠位置上封装了两颗不同颜色的led灯(比如黄色和绿色),这样这个位置就可以按需显示不同颜色的灯光。

自定义设备树属性并解析——以eDP背光属性为例rk3588

少于 1 分钟阅读

1 问题背景 原生的设备树中已经预设好了许多参数,但总会遇到某些参数不符合要求,或者需要增加某些原来没有的参数的情况。 比如rk3588原生的SDK并没有对设备树屏幕背光使能引脚的解析,而硬件电路设计上有该引脚,这时候就需要我们在设备树中添加对该引脚的引用,然后在原来屏幕初始化的位置进行解析。

Linux 基本错误码返回

1 分钟阅读

1 错误码定义 include/linux/errno.h https://kernel.googlesource.com/pub/scm/linux/kernel/git/nico/archive/+/v0.97/include/linux/errno.h

刷入系统后屏参查看方式

少于 1 分钟阅读

接入 debug口,开机上电查看日志 可以看到对应的日志 Using display timing dts edp@fded0000: detailed mode clock 58460 kHz, flags[a] H: 1024 1072 1104 1224 V: 0768 0771 0775...

有线网络无法上网 —— MAC冲突

少于 1 分钟阅读

概要:本文介绍了在某些设备中由于 MAC 地址冲突导致有线网络无法上网的问题,并通过修改 MAC 地址解决该问题,提供了具体在 3568 平台上的操作命令示例。

刷入系统后查看设备树节点配置

少于 1 分钟阅读

概要:本文介绍如何在系统刷入后,通过查看设备树中的相关节点,判断 PCIE 卡槽配置的是 PCIE 资源还是 SATA 资源。通过命令行方式查看设备节点的 status 值,并结合源码设备树进一步确认资源配置情况。

CAN 相关命令

少于 1 分钟阅读

概要:本文总结了 Linux 环境下 CAN 和 CANFD 接口的常用操作命令,包括配置波特率、启动接口、查看状态以及数据收发等操作。

CAN 与 CANFD 切换

2 分钟阅读

概要:本文介绍了在硬件支持的情况下,如何在普通CAN和CANFD之间进行切换,包括驱动层面的配置和运行时的参数设置。

HW-T3568I Android 开机脚本位置

少于 1 分钟阅读

概要:本文详细介绍了 HW-T3568I Android 设备开机脚本的位置及其调用链,帮助开发者理解系统启动过程中脚本的执行顺序和逻辑。

update 分区计算

少于 1 分钟阅读

概要:本文介绍了 RK356x 平台中 update 分区的配置与计算方法,解析 mtdparts 的语法结构、分区大小计算方式,并说明固件打包及系统识别方式。

mSATA 支持——设备树配置

少于 1 分钟阅读

概要:本文介绍了 mSATA 接口在设备树中的配置方法,指出其与 PCIe 接口资源复用的特性,以及如何在 Rockchip 平台的设备树文件中启用或禁用相应功能。

GPIO 默认电平

少于 1 分钟阅读

GPI 默认电平可以通过设备树配置上下拉配置 GPO 不管配置上拉还是下拉,只要一旦配置为GPO,默认都是低电平输出

RK 3568 屏幕 VOP 介绍

1 分钟阅读

概要:本文介绍了 RK3568 的 VOP2.0 显示框架,包括其工作原理、VP 输出接口以及屏幕设备树的配置方法,重点讲解了 eDP 和 HDMI 双显的设备树配置。

返回顶部 ↑

硬件接口电路笔记

XSGMII

少于 1 分钟阅读

每一对 XSGMII 接口可负责承载 8 个千兆端口的数据流量,只有4根线(一对收发的差分线)。

M.2 Bkey PCIe 与 USB 复用设计

少于 1 分钟阅读

概述 M.2 Bkey 可以接入PCIe信号、SATA信号、以及USB信号 接入PCIe信号和USB信号时,该槽可识别插入的模块类型,切换不同的信号 比如插入USB的4G模块(WWAN设备),那么就走USB信号 如果插入PCIe的设备,那么就出PCIe信号

PCIe 速度计算

少于 1 分钟阅读

概要:本文介绍 PCIe Link 与 Lane 的基本概念,说明 PCIe 全双工传输特性,并给出不同 PCIe 代际在不同编码方案下的单 Lane 单向带宽近似值与计算方法示例(以 PCIe 2.0 为例)。

PCIe 概述

1 分钟阅读

PCIe(Peripheral Component Interconnect Express),即外围组件互联高速标准,是一种高速串行计算机扩展总线标准。它旨在取代旧的 PCI、PCI-X 和 AGP 总线标准,成为现代计算机系统中连接高速外设的主要内部接口。

PCIe 同步时钟和参考时钟

1 分钟阅读

很多人都会问: PCIe 到底有没有时钟?100MHz 是同步时钟吗?既然有 CDR,为什么还要参考时钟?

9.1 GPIO类型

少于 1 分钟阅读

概要:本文介绍了 RK3588 SoC 中 GPIO 的三种类型、电源配置要求、支持的功能特性(如 Retention 和中断)、基本电气特性以及复位默认状态等内容,是理解 RK3588 IO 设计的重要参考。

  1. eMMC电路

少于 1 分钟阅读

概要:本文介绍了eMMC控制器的技术规范与功能特性,并提供了eMMC连接的示意图,便于理解其电路结构和使用方式。

  1. DDR电路

少于 1 分钟阅读

概要:本文介绍了DDR控制器的基本配置与兼容标准,详细阐述了电路设计中的关键要点,包括电源管理、时钟信号,以及LPDDR4/LPDDR5颗粒的连接要求,并通过拓扑结构图展示了典型的布局方式。

  1. Debug电路

少于 1 分钟阅读

概要:本文介绍了 RK3588 芯片的 ARM JTAG 接口及其调试方式,包括 SWD 模式连接、管脚配置、电源要求以及 UART Debug 接口的接线规范。提供了连接示意图及相关注意事项,便于硬件调试和开发过程中的问题排查。

  1. 系统初始化配置信号

少于 1 分钟阅读

概要:本文介绍了 RK3588 芯片中关键的系统初始化配置信号 —— SDMMC_DET 管脚的作用及配置要求。该信号影响 ARM JTAG 与 SDMMC 功能的选择,对系统启动调试及 SD 卡启动至关重要。

  1. 系统启动引导顺序

少于 1 分钟阅读

根据SARADC_IN0_BOOT的上下拉电阻值,配置引导顺序 短路 EMMC_CLK/DATA 也可进入 Maskrom

  1. 复位 看门狗 TSADC电路

少于 1 分钟阅读

概要:本文介绍了 RK3588 芯片的复位机制,包括硬件复位引脚的配置要求、复位信号来源(如 RK806、TSADC)、内部集成的看门狗与温度传感器模块(TSADC)如何触发复位,以及双 PMIC 和单 PMIC 系统中复位信号的路径。

9.2 GPIO 驱动强度

少于 1 分钟阅读

概要:本文介绍了 RK3588 中 GPIO 的多档驱动强度调节能力,包括不同类型 GPIO 的可调档位、默认驱动强度以及相关技术参数表格。适用于开发者根据硬件需求选择合适的 GPIO 驱动强度配置。

LPDDR的功能框图与CS数量的思考

少于 1 分钟阅读

功能框图 内部是有两个通道的,每个通道位宽都是16 可以看到有8个bank,每个bank是8Gb,总共是64Gb,那么这个颗粒就是64/8=8GB大小

  1. 时钟电路

少于 1 分钟阅读

概要:本文介绍了 RK3588 芯片的时钟电路设计,包括内部振荡器与外部晶体的连接方式、器件选择建议以及芯片提供的各类时钟输出接口,适用于系统设计与外设时钟配置参考。

功放芯片概述

少于 1 分钟阅读

功放芯片,全称为功率放大器芯片,是一种专门用于放大电信号功率的集成电路。

3.5mm 音频插孔 PJ-432 耳机插入屏蔽扬声器原理

少于 1 分钟阅读

概要:本文介绍了 PJ-432 型 3.5mm TRRS 音频插孔的工作原理,特别是耳机插入时如何通过物理结构屏蔽扬声器。通过图示和结构分析,展示了该插孔如何利用金属弹片断开扬声器信号线路,从而达到自动切换音频输出的效果。

编解码芯片介绍CODEC ES8336

1 分钟阅读

编解码芯片(Codec)是音频系统的核心,负责将模拟声音信号转换为数字信号(编码),以及将数字信号还原为模拟声音(解码)。

LAN layout

少于 1 分钟阅读

RK3588 官方设计要求

DP 概述

1 分钟阅读

DP 接口技术性概述

DP 原理图设计

少于 1 分钟阅读

1 接口标准 标准 DP 接口采用 20 针单槽连接器,引脚排列如下所示。

3.5mm 音频插孔

少于 1 分钟阅读

参考:https://zh.wikipedia.org/wiki/TRS%E7%AB%AF%E5%AD%90

LAN 原理图设计

2 分钟阅读

RK3588 的媒体访问控制器(MAC)集成在 CPU 内部,需外接物理层芯片(PHY)协同工作。

CAN 原理图设计

少于 1 分钟阅读

概要:本文介绍了基于 TCAN1044-Q1 的 CAN 收发器电路设计原理,包括信号滤波、共模噪声抑制、终端匹配、TVS 保护器件的选型,以及 CAN 接口接地方式等关键设计要点。

分割端接 split termination

少于 1 分钟阅读

概要:本文介绍了差模信号终端匹配中常见的两种方式,重点对比了标准终端电阻与分割端接(Split Termination)在共模噪声处理方面的区别,并通过CAN总线电路示例分析RC滤波的截止频率计算。

CAN 概述

少于 1 分钟阅读

1 什么是控制器局域网(CAN)?

eDP layout 注意事项

少于 1 分钟阅读

参数 要求 走线阻抗 差分 90Ω ± 10% (确保 EDP 线缆的阻抗和 PCB 一致) 差分对内最大时延差 < 6 mil 走线...

LVDS 转换芯片

少于 1 分钟阅读

概要:本文简要介绍了LVDS接口是否需要ESD防护,以及LVDS信号是如何通过转换芯片(如CS5518、CH7511、CS5211)实现的。重点说明了RK3568和RK3588芯片平台如何通过特定转换芯片支持LVDS输出,以及各芯片的输入输出通道配置和特性差异。

HDMI layout 注意事项

少于 1 分钟阅读

参数 HDMI 2.1 HDMI 2.0 差分阻抗 差分 100Ω ±10% 100Ω ±10% 差分对内等长 < 6 mil &...

eDP 协议 链路训练中的 EQ 和 CR

少于 1 分钟阅读

​​CR(Clock Recovery,时钟恢复) 解决的是 “何时采样” 的问题,确保接收端能在正确的时间点读取数据。 ​EQ(Channel Equalization,通道均衡) 解决的是 “信号质量” 的问题,补偿传输过程中受损的信号,使其变得清晰可辨。

返回顶部 ↑

对外文档

拨码开关选择屏参说明

少于 1 分钟阅读

注意:初次烧录后可能不能正常显示,首次烧录完成后,应当断电,将拨码开关拨到正确的屏参处,然后再次上电。 拨码开关在板子的背面 拨码开关与不同的屏幕参数对应如下

HW-T3568I DEBUG接口使用方式

少于 1 分钟阅读

概要:本文介绍了HW-T3568I开发板的DEBUG接口使用方法,包括硬件连接方式、串口调试软件的下载安装、以及串口参数配置。推荐使用MobaXterm工具进行调试。

rk 编译,打包相关 Linux

少于 1 分钟阅读

概要:本文介绍了基于 Rockchip 平台的 Linux 固件结构,并详细说明了如何编译 u-boot、内核以及打包完整的 update.img 固件的流程。适用于需要定制和部署 RK 平台系统镜像的开发者。

QY3588 DEBUG接口使用方式

少于 1 分钟阅读

概要:本文介绍了QY3588开发板的DEBUG接口使用方法,包括硬件连接方式、串口调试软件的下载安装、以及串口参数配置。推荐使用MobaXterm工具进行调试。

rk 工厂批量烧录工具使用教程

少于 1 分钟阅读

点击①,选择要烧录的固件 点击②,启动连续烧录模式,此模式下,一旦检测到进入了烧录状态的板子,便会自动启动烧录 ③处会显示烧录的进度

rk rootfs.img 刷写教程

少于 1 分钟阅读

设备按住烧录键复位,上电,等待烧录工具上显示“发现一个LOADER设备” 点击“设备分区表”,确定设备分区(会报一些分区找不到的错误,没有关系) 右侧会显示找到的各个分区的开始地址,找到rootfs分区的地址,在左侧找一个不使用的分区,填入地址和名字 选择要烧录的rootfs.img,勾选复选框...

蓝牙调试软件使用文档 - e调试

少于 1 分钟阅读

软件介绍 支持ble、经典蓝牙调试。 作者b站:https://space.bilibili.com/3493144448469573?spm_id_from=333.788.upinfo.head.click

rk boot.img (该img含内核kernel)刷写教程

少于 1 分钟阅读

进入烧录模式,显示”发现一个LOADER设备” 点击设备分区表,确定设备分区(会报一些分区找不到的错误,没有关系) 点击选择要刷入的boot.img 复选框进行勾选 点击执行,开始烧写

系统下PWM控制指南

少于 1 分钟阅读

现代 Linux 内核都集成了 PWM 子系统,它通过 ​​Sysfs​​(虚拟文件系统)向用户空间提供统一的控制接口。 查看系统下导出的pwm控制目录 ```bash ls /sys/class/pwm/ -l

ADB 无线调试方法——安卓原生

少于 1 分钟阅读

概要:本文介绍了如何在 Android 11 及以上版本设备上,通过无线网络方式使用 ADB 工具进行调试。涵盖所需条件、设备与电脑的配对方法、命令行操作步骤等,适用于希望摆脱数据线连接的开发者。

3568 TTS使用

少于 1 分钟阅读

引擎选择 设置-无障碍-文字转语音(TTS)输出

todesk & 向日葵安装使用指南

少于 1 分钟阅读

概要:本文详细介绍了在Ubuntu系统中安装和使用todesk及向日葵远程控制软件的完整流程,包括安装步骤、启动方法和注意事项。

命令行自定义启动时 Logo

少于 1 分钟阅读

概要:本文介绍如何通过命令行方式自定义系统启动时显示的 Logo,包括准备 BMP 格式图片、挂载分区并替换 Logo 文件的具体步骤。适用于需要个性化设备开机画面的用户。

Qt 库管理与安装

少于 1 分钟阅读

概要:本文介绍了系统中 Qt 库的两个版本位置,以及如何使用 update-alternatives 管理默认 qmake 版本。同时,还提供了源码位置和安装参数信息。

VNC客户端的使用

少于 1 分钟阅读

系统已经预装VNC客户端:tigerVNC,并设置开机自启,客户端图标在桌面上也可以找到。

返回顶部 ↑

Git 与 Gitblit使用

使用cherry-pick但不提交

少于 1 分钟阅读

用 git cherry-pick -n 或 git cherry-pick --no-commit 就行。这是 Git 官方支持的参数,含义是:把目标提交引入的改动应用到工作区 + 暂存区(index),但不自动生成新提交。

Git 统一文件换行符确保本地拉取后哈希一致

少于 1 分钟阅读

Git 默认的 core.autocrlf 机制虽然初衷是为了缓解不同操作系统间的换行符差异,但在对文件哈希值(Hash)有严格一致性要求的场景下,这种“自动转换”反而会带来意想不到的干扰。为了维护一份github远程仓库的笔记,在不同本地拉取后文件的哈希严格一致,需要使用这样的方式:在本地彻底统一使用 LF,并...

单独克隆单个分支

少于 1 分钟阅读

要单独拉取(clone)这个特定的分支,你可以使用 git clone 命令并结合 -b 和 --single-branch 参数。

Gitblit 后台删除账户 添加权限

少于 1 分钟阅读

概要:本篇文章介绍了在 Gitblit 后台环境中如何通过命令行停止服务、编辑配置文件来删除用户或变更其权限,并展示了具体操作实例和服务启动方式。

.gitignore 不生效问题——删除错误追踪的文件

少于 1 分钟阅读

概要:当 .gitignore 规则不生效时,可能的原因之一是文件已被 Git 追踪。本文介绍如何移除 Git 追踪的文件,以使 .gitignore 规则生效,并提供相关命令与注意事项说明。

Android git commit 规范

少于 1 分钟阅读

原则 有具体的找具体的修改 比如设计DP显示的支持,虽然设计内核和设备树,但是可以归类为更具体的显示,所以用display

Git 连续提交生成 patch

少于 1 分钟阅读

要生成两个连续 commit(比如较早的 4c9fea 和较晚的 d439dd)的补丁,可以使用以下 Git 命令。

Git 批量 cherry-pick 的方法

少于 1 分钟阅读

方法 1:使用连续提交范围(适用于连续提交) git cherry-pick <最早提交哈希>^..<最晚提交哈希> 示例: 若需 cherry-pick 分支上的提交 a1b2c3d、e4f5g6h、i7j8k9l、m0n1o2p(按时间顺序排列),其中 a1b2c3d 最早,m0n1...

记git status不显示已追踪文件文件的更改

少于 1 分钟阅读

概要:本文记录了一个 Git 问题的排查过程:文件已被 Git 追踪且未被忽略,但修改后 git status 不显示变更。最终发现是由于 core.fsmonitor 设置导致的问题,并详细介绍了其原理和解决方法。

Git 压缩多次提交 commit

少于 1 分钟阅读

概要:本文介绍了在 Git 开发过程中如何将多个提交(commit)压缩为一个提交,以便在功能测试成熟后更方便地应用到其他分支。通过 git reset –soft 和 cherry-pick 等命令实现提交合并的操作。

git patch 应用指南

少于 1 分钟阅读

概要:本文介绍了在 Git 项目中如何正确应用补丁文件,包括使用 git apply 和 git am 两种方式的详细说明,以及处理路径问题、解决冲突和验证变更的操作指南,适合需要合并补丁或协作开发的用户参考。

vscode git graph 卡顿

少于 1 分钟阅读

问题: cli运行git status、git log都不会卡顿,但是git graph视图中,每次更新(手动刷新/自动更新)都要卡顿10分钟

git diff 使用

少于 1 分钟阅读

git diff 是 Git 中用于比较代码差异的核心命令,可以查看工作区、暂存区、不同提交或分支之间的差异。以下是其常见使用场景和参数详解:

git cherry-pick 出现 nothing to commit

少于 1 分钟阅读

概要:在使用 git cherry-pick 命令时,可能会遇到 nothing to commit, working tree clean 的提示。本文将分析该问题的原因,并提供两种解决方案。

Gitblit 迁移指南

少于 1 分钟阅读

概要:由于硬盘空间太小,需要将 Gitblit 迁移到其他位置。本文介绍了 Gitblit 迁移的详细步骤,包括停止服务、复制数据、修改配置、更新启动脚本、启动 Gitblit 以及验证迁移是否成功。

如何使用 Gitblit 内置的 GitLFS 存储大文件

1 分钟阅读

概要:本文介绍如何使用 Gitblit 内置的 Git LFS 进行大文件存储,以管理根文件系统镜像压缩包的版本。包括 Gitblit 配置、仓库初始化、Git LFS 设置及如何上传和下载特定 commit 的压缩包。

GitLFS 使用问题

少于 1 分钟阅读

概要:本文介绍了如何跳过 LFS 文件的下载,使其显示为指针文件,以及在本地 push 时确保大文件成功上传的方法。

Git 如何更改远程仓库的链接

少于 1 分钟阅读

概要:本文介绍了如何在 Git 中更改远程仓库的 URL,包括查看当前远程仓库、修改 URL、验证更改以及测试新的远程仓库。此外,还补充了如何重命名远程仓库的操作方法。

Git Clone 时指定行尾序列

少于 1 分钟阅读

概要:在 Windows 主机上进行 git clone 后,文件的行尾序列可能会从 LF 变为 CRLF,导致一些问题。本文介绍如何在 git clone 之前配置 core.autocrlf 以确保文件的行尾序列保持为 LF。

Git 某个分支恢复到某个特定的 commit 状态

1 分钟阅读

方法 1:使用 git reset(常用于本地分支,不推荐用于共享分支) 如果你想让你的分支回退到某个特定的 commit,并且 丢弃 之后的所有提交,可以使用 git reset 命令。

Git 如何从某个 commit 新建分支

少于 1 分钟阅读

步骤 1: 查看 commit 历史 首先,确保你知道要基于哪个 commit 创建分支。可以使用以下命令查看 commit 历史:

使用 git cherry-pick 指南

少于 1 分钟阅读

以下是一篇详细的操作指南,介绍如何使用 git cherry-pick 将一个分支上的部分提交应用到另一个分支。

返回顶部 ↑

Linux 基础知识

xserver-xephyr是什么

少于 1 分钟阅读

xserver-xephyr(通常简称 Xephyr)是一个嵌套的 X 服务器(Nested X Server)。它的核心作用是在你当前正在运行的主 X 桌面会话中,以一个普通窗口的形式启动一个全新的、逻辑上完全独立的 X11 显示服务器。

sshpass工具介绍

少于 1 分钟阅读

sshpass 是一个极为实用的命令行工具,它的核心功能是在非交互模式下为 SSH 提供密码。

glamor 是什么

少于 1 分钟阅读

Glamor 是 X Window System(X.Org Server)中的一个开源 2D 图形加速架构。

expect工具介绍

少于 1 分钟阅读

Expect 是一个比 sshpass 强大得多、也复杂得多的老牌自动化工具。如果说 sshpass 是一把专门用来开 SSH 密码锁的“特制钥匙”,那么 expect 就是一个可以帮你完成各种复杂对话的“机器人”。

strings 分析二进制文件基本用法

少于 1 分钟阅读

strings 是分析二进制文件(如可执行文件、库文件、固件、内存转储)时最常用、最快速的工具之一,用于提取其中的可打印字符串。以下是详细的使用指南和技巧。

tee介绍

少于 1 分钟阅读

tee 是 Linux/Unix 系统中一个非常实用且经典的命令行工具。它的名字生动地来源于水管工程中的“T型三通”接头(T-splitter)。

glibc是什么

少于 1 分钟阅读

glibc (GNU C Library) 是 Linux 系统中最底层的 API,也是整个用户态(User Space)的基石。对于任何在 Linux 环境下运行的 C/C++ 程序,或者依赖 C 运行时的其他语言程序来说,glibc 就是它们与操作系统内核(Kernel)沟通的唯一官方桥梁。

source 和 . 点命令

少于 1 分钟阅读

在 Unix/Linux shell 中,source 命令和 .(点)命令是等价的,它们执行完全相同的功能。

Linux 环境变量

少于 1 分钟阅读

https://help.ubuntu.com/community/EnvironmentVariables https://askubuntu.com/questions/275965/how-to-list-all-variables-names-and-their-current-values/356973...

GTK 是什么

少于 1 分钟阅读

GTK(GIMP Toolkit)是一个开源的、跨平台的图形用户界面(GUI)工具包,用于创建桌面应用程序的图形界面。它最初为GIMP(GNU Image Manipulation Program)图像编辑器而开发,因此得名。如今,它已成为Linux/Unix 系统上 GNOME 桌面环境的核心组件,同时也支持 ...

cut 基本使用

1 分钟阅读

cut 是 Linux/Unix 系统中的一个文本处理命令,用于从文件或标准输入中提取文本的特定部分(如列、字段、字符范围)。它类似于在表格中“剪切”出指定的列。

Bash —— read 命令

1 分钟阅读

read -r line 是 Bash 中读取用户输入或文件内容到变量的命令。

awk 基本使用

2 分钟阅读

awk 是一种强大的文本处理编程语言,特别适合处理结构化文本数据(如日志、CSV、表格数据等)。它以行为单位处理文本,并可以按字段进行操作。

Bash 快速使用

1 分钟阅读

定位与目标 重点覆盖:脚本结构、变量与引号、条件判断与流程、函数与返回值、数组与遍历、I/O 重定向、错误处理、权限与设备操作、Here-Doc、日志规范等。

X 协议中,反转的服务器和客户端

少于 1 分钟阅读

在计算机世界的常规认知里,”服务器”是远端的强大机器,”客户端”是用户手中的设备。然而,在 X 窗口系统(X Protocol)中,这一概念被彻底颠覆:应用程序变成了”客户端”,而用户手中的终端反而成为了”服务器”。这种看似违背直觉的设计,恰恰体现了 X 协议的超前智慧。

理解Shell中的输出重定向

少于 1 分钟阅读

概要:本文深入讲解了 Linux/Unix Shell 中的输出重定向,特别是 2>&1 的用法。通过文件描述符的变化过程和图示,帮助读者理解输出重定向的机制及其顺序的重要性。

Linux 中的软链接和硬链接

1 分钟阅读

在 Linux 和类 Unix 系统中,软链接(Symbolic Link) 和 硬链接(Hard Link) 是两种常用的文件链接方式。它们允许用户通过多个路径访问同一文件或目录,但底层机制和适用场景截然不同。本文将详细解析它们的核心区别、创建方法及使用场景。

返回顶部 ↑

FPGA

verilog $clog2函数

少于 1 分钟阅读

$clog2 是 Verilog-2005 标准引入的系统函数,全称 ceiling of log base 2,即「以 2 为底的对数向上取整」。

soft ip和 primitive ip的区别

少于 1 分钟阅读

Primitive IP(原语/硬核 IP) 和 Soft IP(软核 IP) 的核心区别在于它们在底层硬件中的物理实现方式不同。

Anlogic 差分信号代码的编写

少于 1 分钟阅读

在IO Constraint中,可以看到这些蓝色的线将两个Pin连起来,这种就是差分对 其中有一个Pin是P端,另一个是N端 只有P端的Pin可以设置IOStandard为差分类型,比如LVDS25、LVDS33 一旦设置了P端的Pin为差分类型,N端的Pin就会被锁定,无法编辑,此时生成的ad...

FPGA 状态机赋值 —— 三段式结构

少于 1 分钟阅读

FPGA状态机赋值核心原则是时序逻辑用非阻塞赋值 (<=),组合逻辑用阻塞赋值 (=)。通常采用三段式结构:第一段时序逻辑负责状态寄存器更新,第二段组合逻辑负责状态跳转条件判断,第三段逻辑负责输出(建议时序输出以消除毛刺)。

Anlogic EF3 架构 上电后配置流程

少于 1 分钟阅读

概要:本文详细介绍了 Anlogic EF3 系列 FPGA 上电后的配置流程,包括上电初始化、配置数据写入、启动阶段及进入用户模式的详细过程,同时提供了配置信号状态控制的说明及 MSPI 配置流程图示。

Anlogic UG003_AL-LINK 下载器使用说明

少于 1 分钟阅读

概要:本文介绍了 Anlogic UG003_AL-LINK 下载器的使用流程,包括驱动安装、TD IDE 操作步骤等,适用于使用 AL-LINK 下载器进行 FPGA Bit 流烧录的用户。

非阻塞赋值是否会导致竞争?

1 分钟阅读

概要:本文探讨了 Verilog 中非阻塞赋值是否会引发竞争条件的问题。通过实例代码与仿真波形说明,作者指出非阻塞赋值由于其特性,在同一个时钟边沿中不会引发竞争,并与阻塞赋值进行了对比分析。

什么是 可综合 和 不可综合

少于 1 分钟阅读

概要:本文介绍了 Verilog 语言中“可综合”和“不可综合”两个重要概念,解释了综合的定义、流程及其输入输出,并深入探讨了哪些 Verilog 代码结构可以被综合工具转换为实际硬件电路,以及哪些代码仅用于仿真不可综合。文章还列举了具体示例,帮助读者掌握可综合代码的编写规范。

HDLBits 概述

少于 1 分钟阅读

网址 https://hdlbits.01xz.net/wiki/Main_Page

0 OJ 说明

少于 1 分钟阅读

题目来源 题目来源于中科大verilog OJ平台 https://verilogoj.ustc.edu.cn/oj/

数据类型 reg 和 wire

少于 1 分钟阅读

在 FPGA 设计中(主要使用 Verilog/VHDL 等 HDL),reg和wire是两种最基础的数据类型,它们的核心区别在于语义、赋值方式和硬件实现:

从 verilog 到 FPGA

少于 1 分钟阅读

将 Verilog 代码烧录到 FPGA 中,需要经过一系列工具链处理,本文介绍了流程中的各个节点。

什么是FPGA

1 分钟阅读

FPGA(现场可编程门阵列)是一种高度灵活的半导体器件,其核心思想是通过可编程的硬件结构实现用户定义的电路功能。

Verilog 数据类型

少于 1 分钟阅读

概要:本文介绍了 Verilog 中常用的数据类型,包括 wire、reg、向量、整数、实数以及参数的使用方式与综合行为,结合代码示例说明不同类型在设计中的作用及区别。

阻塞赋值与非阻塞赋值

1 分钟阅读

概要:本文介绍了 Verilog 中阻塞赋值(=)与非阻塞赋值(<=)的区别,并通过实例代码演示它们在仿真中的行为差异,包括赋值顺序对逻辑和时间的影响,帮助读者理解过程赋值与连续赋值的不同,并掌握其在实际编码中的使用方式。

返回顶部 ↑

嵌入式硬件开发36讲 笔记

  1. eth 接口设计

少于 1 分钟阅读

概要:本文简要介绍了 eth 接口设计中的关键点,包括变压器中心抽头的阻抗匹配、电容选择要求、差分线组长度要求,以及 PCB 设计中关于变压器下方的挖空处理。

  1. PS2接口

少于 1 分钟阅读

概要:本文介绍了PS2接口的定义与原理图说明,重点讲解了电阻和磁珠在接口中的作用,包括阻抗匹配、限流和过压保护等知识点。

  1. 电平转换

少于 1 分钟阅读

概要:本文介绍了两种常见的电平转换芯片类型:双向自动转换芯片(带方向检测)和方向可控制芯片,并结合芯片示意图说明其工作原理与使用注意事项。

  1. RS232接口设计

少于 1 分钟阅读

概要:本文介绍了RS232串口接口的设计要点,包括UART RX引脚上拉电阻的设计原因及DB9接口针脚的定义和功能说明,配有示意图辅助理解。

  1. FPGA 电路设计实例

少于 1 分钟阅读

概要:本文介绍了 FPGA 电路设计中的关键技术,包括 I/O 电压标准、数字可控阻抗(DCI)、高速串行收发模块(GTX/GTH)、配置引脚与加载流程、电压选择、上电复位电路及各模块时钟注意事项,适合有一定基础的 FPGA 开发者阅读参考。

  1. FPGA器件介绍

少于 1 分钟阅读

概要:本文介绍了可编程逻辑器件的发展历程,从最早的PROM到现代高性能的FPGA/CPLD,并详细说明了FPGA的结构组成及其主要特点,展示了其在数字逻辑设计中的重要角色和发展趋势。

  1. 晶振电路设计

少于 1 分钟阅读

概要:本文介绍了有源晶振的基本结构及其在电路设计中的注意事项,包括输出端串联电阻的作用、电源引脚的处理、去耦电容的配置、外壳接地要求以及PCB布线建议,旨在帮助设计者提高时钟电路的稳定性和抗干扰能力。

  1. 晶体电路设计

少于 1 分钟阅读

概要:本文介绍了晶体电路的常见设计方式,包括晶体负载电容的计算方法、电阻选择范围,以及布线时的注意事项。通过图示与公式,帮助读者更好地理解晶体电路的设计要点。

  1. 时序参数

少于 1 分钟阅读

概要:本文介绍了数字电路中触发器的关键时序参数——建立时间(Tsetup)和保持时间(Thold),并配合图示分析了这两个参数在时钟系统中的作用及其约束条件。

  1. 复位电路设计

少于 1 分钟阅读

概要:本文介绍了复位电路的基本功能与设计要点,分析了常见的复位设计问题,讨论了RC复位电路的不足,并推荐使用专用复位芯片来提高系统的稳定性与可靠性。

  1. BUCK降压电路

少于 1 分钟阅读

概要:本文介绍了BUCK降压变换器的基本原理、内部结构及关键设计参数,包括工作频率、纹波控制、软启动设置、相位匹配、输入输出电容选择、温度影响、并联均流问题及PCB设计注意事项。

  1. LDO 与 DC-DC

少于 1 分钟阅读

概要:本文简要介绍了 LDO(低压差线性稳压器)和 DC-DC(开关电源)转换器的主要特点,包括各自的优缺点,便于在电源设计中进行合理选择。

  1. LDO

1 分钟阅读

概要:本文介绍了低压差线性稳压器(LDO)的定义、构成模块、工作原理、常用参数、效率分析及其应用注意事项,包括外围器件选择、布线设计、外部电路影响及热功耗计算等内容。

  1. 电源架构介绍

少于 1 分钟阅读

概要:本文介绍了单板的电源架构设计,包括集中式与分布式两种架构的特点和对比,并阐述了上电时序控制的两种方式:软启动与硬启动。

  1. 逻辑器件参数介绍

1 分钟阅读

概要:本文介绍了逻辑器件常见的关键电气参数,包括电源电压、输入输出电压范围、逻辑阈值、电流能力、输入电容、电源管理等,并通过图示和推荐参数表详细说明了各项参数的含义及选型注意事项,有助于在实际应用中正确选择与使用逻辑器件。

  1. 逻辑器件概要

1 分钟阅读

概要:本文概述了常见逻辑电平类型(如 TTL、CMOS、LVTTL、LVCOMS、CML、ECL 等)及其逻辑器件对应关系,详细解释了各种电平参数(VOH、VIH、VIL、VOL、Vt 等)的含义与判断标准,并介绍了电平互联、电平转换及开路门的应用。文中配有多幅图示,便于理解逻辑门特性的电气参数与使用方法。

  1. ESD 器件

1 分钟阅读

概要:本文介绍了静电放电(ESD)及其对电子设备的影响,并详细阐述了几种常见的 ESD 保护器件(如 TVS、MOV、气体放电管)的原理、特点及选型建议。文中还提供了 USB 和网口等接口的实际 ESD 防护设计示例,帮助读者理解如何在实际电路设计中进行有效的 ESD 防护。

  1. DDR

2 分钟阅读

1 核心概念快速区分

  1. SRAM和DRAM

少于 1 分钟阅读

概要:本文详细介绍了静态随机存取存储器(SRAM)与动态随机存取存储器(DRAM)在结构、原理、速度、功耗、成本、应用等方面的差异,并深入解析SRAM的6T结构工作机制及其设计背后的逻辑。

  1. FLASH

少于 1 分钟阅读

概要:本文介绍了 Flash 存储器的基本概念、与 EEPROM 的区别,以及 NOR Flash 与 NAND Flash 的结构和性能对比。通过图示和表格,清晰展示了两种 Flash 的特点、用途及适用场景。

  1. 存储器件选型——EEPROM

1 分钟阅读

概要:本文详细介绍了 EEPROM(电可擦除可编程只读存储器)的结构、原理、工作机制、关键特性及其应用场景。通过图文结合的方式,讲解了 EEPROM 的写入、读取、擦除过程,并对其与 Flash 存储器的区别进行了对比说明。

  1. 时钟器件选型

少于 1 分钟阅读

概要:本文详细介绍了时钟器件选型中的关键知识点,包括晶振的原理、分类、参数解析、常见问题如抖动与偏移、及电路设计与布局建议。适用于电子工程师在选择和应用晶体振荡器时的参考。

8.9.10 常见处理器选型

少于 1 分钟阅读

概要:本文系统介绍了常见的嵌入式处理器类型,包括微处理器、微控制器(MCU)、数字信号处理器(DSP)、FPGA 及 SoC 的应用特性、架构分类和选型要点。并对 STM32 系列、双核 MCU 及 FPGA 的选型策略进行了详细解析,为嵌入式系统设计提供了重要参考。(这几节课太水了,当概念看看就好)

  1. MOS管选型与应用

少于 1 分钟阅读

概要:本文介绍了NMOS与PMOS管的特性、导通条件及应用场景,重点分析了其在开关、隔离以及电平转换等电路中的实际应用方式,并通过图示说明其导通方向及等效电路。

  1. 三极管选型与应用

少于 1 分钟阅读

概要:本文介绍了三极管的基本类型、结构、选型要点及其在电路中的应用,特别是在逻辑开关和电压钳位等场合的使用方式与设计注意事项。

磁珠的选型

少于 1 分钟阅读

概要:本文详细介绍了磁珠在电子线路中抑制噪声的作用原理、结构特性、选型要点,以及磁珠与电感的异同和各自典型应用场景。通过图示和实际案例,帮助读者理解磁珠在信号完整性和EMI抑制中的重要性。

  1. 电感选型与应用

少于 1 分钟阅读

概要:本文介绍了电感的基本作用、结构组成、参数定义(如品质因数Q)、误差等级、频率特性等内容,并结合图示详解了不同类型电感的应用场景及选型建议,适用于电子工程师在设计电路时参考使用。

  1. 电容选型与应用

1 分钟阅读

概要:本文系统介绍了电容器在电路中的作用、电容选型的关键要点、各类电容(陶瓷电容、电解电容、钽电容等)的特性与差异,并配以详细的频率曲线图与选型参考表,帮助读者理解不同电容的应用场景与选型策略。

  1. 电阻选型

1 分钟阅读

概要:本文介绍了四种常见电阻类型的工作原理与特点,并详细分析了电阻选型时应关注的参数,包括阻值、封装、功率、耐压、精度等。同时对阻值编码方式进行了说明,适用于不同精度等级的应用场景。

返回顶部 ↑

基础知识

DP 与 DP++的区别

少于 1 分钟阅读

在现代显示接口规范中,DisplayPort(DP)凭借其高带宽和微包数据流架构占据了重要地位。然而,为了兼容市面上庞大的 HDMI 和 DVI 显示设备,DP 标准引入了 DP++(Dual-Mode DisplayPort,双模 DisplayPort)。

什么是ICMP

1 分钟阅读

IP 层的”先天缺陷”,催生了 ICMP

什么是 mDNS

少于 1 分钟阅读

mDNS 全称 Multicast DNS(多播 DNS),是一种在没有传统 DNS 服务器的局域网里,让设备通过”主机名”互相找到对方的小协议。

正则表达式语法简介

少于 1 分钟阅读

正则表达式(Regular Expression)与有限状态机(Finite State Machine, FSM)在数学上是等价的。

什么是 Ninja

1 分钟阅读

Ninja 是一个极其轻量、专注于追求极致速度的底层构建系统(Build System)。

meson 是什么

少于 1 分钟阅读

Meson 是一个现代化的、开源的构建系统(Build System),主要用于自动化编译和构建软件项目。它的核心设计目标是:极快的构建速度和极其友好的开发者体验。

什么是EMMC的RPMB保护

少于 1 分钟阅读

RPMB (Replay Protected Memory Block,重放保护内存块) 是 eMMC、UFS 和 NVMe 等存储设备中的一个具有安全访问控制的隐藏硬件分区。

A电与S电

少于 1 分钟阅读

1. A电 (Always/Standby Power)

QEMU 是什么

少于 1 分钟阅读

QEMU 是一款开源的硬件虚拟化模拟器,它允许你在一个操作系统上运行另一个操作系统的程序,甚至模拟完整的计算机系统(包括 CPU、内存、存储设备、外设等)。 简单来说,QEMU 就像一个“计算机的乐高”,可以用软件“拼”出一台虚拟的电脑。

Avalonia UI 框架 介绍

少于 1 分钟阅读

Avalonia 是一个基于 .NET 的、通过自绘渲染引擎在全部主流平台上实现像素级一致 UI 的跨平台框架。

UTC时间

少于 1 分钟阅读

UTC(协调世界时) 是全球通用的标准时间基准,用于规范世界各地的时区和时间。

BCD 码

少于 1 分钟阅读

什么是 BCD 码?

DPI 是什么

1 分钟阅读

DPI(Dots Per Inch,每英寸点数) 是一个分辨率度量单位,主要用于解决数字内容与物理世界之间的转换关系问题。

蓝牙 SPP

少于 1 分钟阅读

一、什么是蓝牙 SPP?

经典蓝牙和低功耗蓝牙概述

1 分钟阅读

蓝牙技术作为短距离无线通信的基石,已演进为一个包含多种技术标准的家族。其核心成员——经典蓝牙 与 低功耗蓝牙,凭借不同的技术特性,服务于截然不同的应用场景。本文将深入探讨两者的技术细节、协议架构与设计哲学。

PMOS 和 NMOS

少于 1 分钟阅读

概要:本文简要介绍了 PMOS 和 NMOS 的结构特点及其导通与截止的电平要求,同时通过图示说明了体二极管的方向以及源极与衬底的连接方式。

USB 接口 代数与速度

少于 1 分钟阅读

模式 速率 USB 版本 Low Speed (LS) 1.5 Mbps USB 1.0/1.1 Full Speed (FS) 12 Mbps ...

DHCP 过程

1 分钟阅读

分析命令 在终端中对包进行监听分析 tcpdump -i eth0 port 67 or port 68 -vvv

指定目录搜索特定字段

少于 1 分钟阅读

grep 搜索文本内容 打开终端,进入包含./device目录的上级目录。 执行以下命令: grep -rnw './device' -e 'DEVICE_MANIFEST_FILE' -r 或 --recursive:递归搜索子目录。 -n 或 --...

基本知识

少于 1 分钟阅读

LVDS = Low-Voltage Differential Signaling 低电压差分信号

字符编码标准

1 分钟阅读

概要:本文介绍了常见的字符编码标准,包括 GB2312、GBK、ANSI 和 UTF-8。重点分析了它们的特点、适用场景及关键区别,并详细探讨了 UTF-8 BOM 的作用、问题及最佳实践。

返回顶部 ↑

Linux内核设计与实现 —— 笔记

内核中的时间概念

少于 1 分钟阅读

时间管理是操作系统内核的核心功能之一。内核中大量函数依赖时间驱动,而非单纯的事件驱动。这些时间驱动的任务主要分为两类:周期性执行(如调度器负载均衡、屏幕刷新)和延迟执行(如磁盘I/O操作的推迟处理)。为支持这些机制,内核必须同时处理相对时间(例如“5秒后执行”)与绝对时间(如当前日期与时间),二者在内核时间管理中...

页缓存概述

少于 1 分钟阅读

一、设计目的:为什么需要页缓存?

Linux 页高速缓存 —— address_space

少于 1 分钟阅读

address_space 是一个文件在内存中的缓存视图,用于管理文件内容如何映射到内存页,每个打开的文件在内核中都有一个关联的 address_space。

Linux 页和区

少于 1 分钟阅读

理解 Linux 内核如何管理物理内存是深入系统编程和性能调优的重要基础。其核心思想是将物理内存划分为更小的逻辑单元,并通过层次化的管理机制应对硬件和使用的多样性。

Linux IO 调度程序

少于 1 分钟阅读

在计算机系统中,硬盘(尤其是传统机械硬盘)的寻道操作是其中最慢的物理操作之一。想象一下,磁头在盘片上快速移动寻找数据的位置,这比 CPU 和内存的速度慢了数个数量级。如果操作系统内核只是简单地将应用程序发出的 I/O 请求,按照接收的顺序直接发送给硬盘,那么系统的整体性能将会惨不忍睹。I/O 调度程序 正是为了解...

Linux flusher 线程

少于 1 分钟阅读

在 Linux 操作系统中,磁盘 I/O 速度远慢于内存访问。为了提升系统性能,内核引入了页高速缓存(page cache)机制,将频繁读写的数据暂存于内存。然而,这种“延迟写入”策略也带来了数据一致性的挑战——flusher 线程正是为解决这一矛盾而生的幕后守护者。

Linux 文件系统抽象层

少于 1 分钟阅读

在 Linux 系统中,你可以在 U 盘、硬盘甚至网络存储之间复制文件,而无需关心它们各自使用什么文件系统(如 ext4、NTFS、FAT32),这背后的关键机制就是 Linux 文件系统抽象层,它如同一个“通用翻译官”,让内核和应用程序能够用同一套方法访问和管理不同类型的存储设备。

Linux slab 层

少于 1 分钟阅读

在 Linux 内核中,内存管理是操作系统最基础也最关键的组成部分之一。内核需要频繁地创建和销毁各种数据结构(如进程描述符、文件索引节点等),如果每次分配和释放都直接调用底层页分配器,不仅效率低下,还会产生严重的内存碎片。为了解决这些问题,Linux 引入了slab 分配器(slab allocator),它是一...

中断上下文代码为什么不能阻塞

少于 1 分钟阅读

1. 中断的随机性与紧迫性 中断可能在任何时间点发生,打断任何正在执行的代码(包括内核或用户进程)。 系统需要尽快响应硬件中断(如网卡收到数据包、磁盘I/O完成),否则可能导致数据丢失或设备故障。 如果中断处理程序阻塞,被中断的代码将无法恢复执行,系统响应会严重延迟。

Linux 进程状态

少于 1 分钟阅读

在 Linux 操作系统中,进程 是程序执行的基本单位,而操作系统通过进程状态来描述和调度进程在任意时刻的活动情况。理解进程状态对于系统管理、程序调试和性能优化至关重要。

Linux 进程描述符和任务结构

少于 1 分钟阅读

在 Linux 内核中,进程是操作系统进行资源分配和调度的基本单位,而进程描述符(task_struct结构体)则是内核中用于表示和管理一个进程的所有信息的核心数据结构。

Linux 软中断

少于 1 分钟阅读

软中断是 Linux 内核用于处理中断下半部的一种核心机制,它允许内核在合适的时机执行一些对时间敏感但无需立即完成的任务,是保证系统响应性能与吞吐量的重要设计。

4.5.4 CFS —— 睡眠与唤醒

2 分钟阅读

1 进程休眠机制 进程把自己放入等待队列中,设置为不可执行状态,与等待队列相关的事件发生时,唤醒队列上的进程

优先级反转

少于 1 分钟阅读

引言:什么是优先级反转? 在计算机多任务系统中,高优先级任务被低优先级任务间接阻塞的现象,被称为优先级反转(Priority Inversion)。这种现象违背了“高优先级任务应优先完成”的设计初衷,可能导致系统崩溃或严重延迟。它的本质是资源共享与任务抢占机制之间的冲突。

Linux 完全公平调度器简介(CFS)

少于 1 分钟阅读

一、发展历史:从“优先级时代”到“公平时代” 在计算机操作系统的发展历程中,进程调度始终是核心难题。早期的 Unix 系统(如 BSD)采用基于优先级和时间片轮转的调度策略:系统为每个进程分配固定优先级和时间片,高优先级进程能抢占低优先级进程。这种设计的优势是直观可控,但缺点明显: 交互式应用响应延迟:若未...

CFS 目标延迟与最小粒度

少于 1 分钟阅读

目标延迟的本质与设计动机 1. 理想模型的困境 理论目标: CFS的终极理想是模拟“完美多任务处理器”,让每个进程在任意时间段内获得1/n的处理器时间(n为可运行进程数)。例如: 若有2个进程,每个进程应占用50%的CPU时间; 若有20个进程,每个应占用5%的CPU时间。...

返回顶部 ↑

MIT 6.S081 操作系统笔记

用户态切换到内核态 —— 硬件的五个步骤

1 分钟阅读

概要:梳理用户态切换到内核态的三种触发场景(系统调用、硬件中断、程序异常),并详细拆解 CPU 硬件自动完成的五个步骤:查 IDT、特权级安检、切栈、压栈保存现场、跃迁切换。

定位“栈”的位置 —— %esp 和 %ss

少于 1 分钟阅读

概要:介绍定位“栈”的一对寄存器 %ss(堆栈段寄存器)与 %esp(栈指针寄存器):各自的字长与作用、x86 栈向下生长的反直觉设计,以及 SS:ESP 组合在函数调用、局部变量分配和中断切换中的隐式配合。

任务段(Task Segmentt)和内核栈

少于 1 分钟阅读

概要:介绍任务段(TSS)的作用:当发生特权级切换时,CPU 如何通过 TSS 找到内核栈,以及 xv6 用一个 TSS 配合动态修改 ESP0 实现多进程内核栈切换的巧妙设计,并梳理中断发生时硬件自动完成的完整流程。

CPU运行程序时“栈”的作用

少于 1 分钟阅读

概要:讲解 CPU 运行程序时栈(Stack)的三大作用:记录函数调用的返回地址、存储局部变量和参数、以及中断/异常时保存现场(trapframe),并说明栈“后进先出”特性与这些作用的联系。

x86特权级:Ring 0、Ring 3 和 CPL、DPL

少于 1 分钟阅读

概要:介绍 x86 的特权级体系:Ring 0(内核态)与 Ring 3(用户态)的概念,以及 CPL(存放在 %cs 中)与 DPL(存放在段描述符中)的硬件实现和“门禁核验”规则。

x86 中的 %cs 和 %eip 寄存器

少于 1 分钟阅读

概要:介绍 %cs(代码段寄存器)与 %eip(指令指针寄存器)的字长、作用与工作机制,并说明 CS:EIP 组合如何定位下一条指令,以及段内跳转与跨段跳转的区别。

IDT(中断描述符表)介绍

1 分钟阅读

概要:介绍中断描述符表(IDT)与 IDTR 寄存器:256 个门描述符的结构(中断门、陷阱门、任务门)、CS:EIP 定位与 DPL 权限检查,以及现代操作系统通过“跳板函数 + 软件中断表”的二次转发设计。

进程地址空间

少于 1 分钟阅读

概要:介绍 xv6 进程地址空间:内存映射的初始化流程、用户空间与内核空间的布局划分、直接映射机制,以及“内核借用用户页表”双重映射设计带来的无缝切换与安全隔离优势。

第一个系统调用:exec 的执行流程

少于 1 分钟阅读

概要:介绍 initcode.S 如何通过汇编压栈参数、设置系统调用号并触发中断来发起 exec 系统调用,以及 exec 成功/失败两个分支和 /init 接管后初始化用户环境的流程。

栈的增长方向

少于 1 分钟阅读

概要:解答“栈为什么向下增长”的疑问:以 xv6 为例介绍栈布局,说明栈方向由硬件提供机制、软件(ABI)决定策略,并解释栈与堆“双向奔赴”的内存分配效率优势。

启动第一个进程

少于 1 分钟阅读

概要:梳理 xv6 启动第一个进程的完整流程:调度器选定 initproc、内核线程切换(swtch)、通过 forkret 与 trapret 从内核态返回用户态,最终运行 initcode。

第一个进程的创建 —— 手动构造

1 分钟阅读

概要:讲解 xv6 通过 userinit、allocproc 手动构造第一个进程的完整流程:分配进程槽位与内核栈、映射用户内存、伪造 trapframe,最终由调度器调度运行 initcode。

页表的结构和查询

少于 1 分钟阅读

概要:对比单级页表与多级页表:单级页表的结构与内存浪费问题,多级页表按需分配节省空间的设计,以及两种页表下 MMU 查询物理地址的完整步骤与流程图。

每个进程都有一份自己的页表

少于 1 分钟阅读

概要:说明“每个进程一份页表”是进程隔离的核心手段:用户空间低地址映射各自独立,内核空间高地址映射共享,并通过修改 %cr3 寄存器实现页表切换。

分页硬件的开启

少于 1 分钟阅读

概要:介绍 xv6 进程地址空间的布局(用户低地址、内核高地址)、进程双栈机制(用户栈与内核栈),以及分页硬件开启后如何维护进程隔离与共享。

使用多级页表节省空间

少于 1 分钟阅读

概要:以 32 位操作系统为例,计算单级页表占用的巨大内存空间,引出多级页表(Multi-level Page Table)通过按需分配页表项来节省空间的原理。

文件系统中,文件、目录和路径

少于 1 分钟阅读

概要:介绍 xv6 文件系统的核心思想:一切皆文件(目录也是特殊文件)、目录树结构、相对路径与绝对路径的区别,以及 cd 只能由 shell 内置实现的原因。

inode 是什么

1 分钟阅读

概要:介绍 inode(索引节点)数据结构:它存储了文件除文件名与内容之外的元数据,并实现了文件名与文件数据的解耦,从而支持硬链接等机制。

管道的实现

1 分钟阅读

概要:介绍管道(pipe)作为进程间通信机制的内核实现:pipe 创建读写两端、fork 后父子进程共享同一内核缓冲区、子进程将读端接到 stdin 的关键操作,以及 read/write 的阻塞行为。

复制文件描述符后仍共享文件偏移

少于 1 分钟阅读

概要:通过 fork 写入文件的示例,说明复制文件描述符后父子进程共享同一 struct file 与文件偏移;并对比 fork/dup/open 在偏移共享上的区别及设计出发点。

内核文件对象 与 文件描述符

少于 1 分钟阅读

概要:介绍内核文件对象(Linux 中的 struct file):它的核心属性、生命周期与共享关系,以及它与文件描述符、inode 之间的关系。

xv6 IO重定向原理

1 分钟阅读

概要:以 shell 执行 cat < input.txt 为例,讲解 IO 重定向的实现原理:子进程先关闭标准输入,再打开目标文件使其占用最小文件描述符 0,从而让 cat 从文件读取。

什么是文件描述符(fd)与cat的实现

1 分钟阅读

概要:讲解文件描述符(fd)模型的核心思想:统一接口、进程隔离与可组合性,并结合 cat 的实现说明 fd 如何让文件、管道等对象统一通过 read/write 访问。

fork 进程创建与同步

少于 1 分钟阅读

概要:通过示例代码逐行解析 fork 系统调用:fork 创建子进程、父子进程分支执行,以及父进程通过 wait 等待子进程退出实现同步。

Shell 启动程序流程 —— fork + exec 模型

少于 1 分钟阅读

概要:以执行 ls 命令为例,讲解 shell 启动程序的整体流程:fork 创建子进程、子进程通过 exec 替换为 ls 程序,以及对应的系统调用细节。

关于 argv[0] 参数的作用

1 分钟阅读

概要:以 BusyBox 为例,讲解 argv[0] 除“程序名”之外的重要工程价值:程序如何根据 argv[0] 决定自身行为,实现一程序多用的设计。

exec 程序分析

少于 1 分钟阅读

概要:通过一个调用 exec 的示例程序,分析 exec 系统调用的使用方法与流程:exec 用新程序替换当前进程的内存与寄存器,失败时才会返回。

返回顶部 ↑

C#

C# 正则表达式匹配

1 分钟阅读

本文跳过正则表达式本身的语法规则(如 \d、+、* 等),完全专注于 C# 语言层面如何调用、处理和优化正则表达式。

C# .OfType方法 —— 过滤转换列表元素

少于 1 分钟阅读

在 C# 中,.OfType<T>() 是 LINQ(语言集成查询)提供的一个非常高频且实用的扩展方法。它的核心功能是:从一个集合中筛选出指定类型的元素,并返回一个强类型的泛型集合。

CSV 存储字段处理

少于 1 分钟阅读

参考链接 Common Format and MIME Type for Comma-Separated Values (CSV) Files

C# out 引用传递参数修饰符

少于 1 分钟阅读

out 不是指针,但它和指针一样,是一种让方法能够“修改传入的参数”的方式,是C#中处理引用传递的一种参数修饰符。

C# 空条件运算符 ?.

少于 1 分钟阅读

在C#编程中,NullReferenceException 可能是最常见的运行时异常之一。传统的空值检查需要大量冗余的 if 语句,使代码变得冗长且难以阅读。C# 6.0 引入的空条件运算符 ?. 彻底改变了这一局面,让空值检查变得简洁而优雅。

C# 空合并运算符 ?? —— 提供默认值

少于 1 分钟阅读

在处理可能为 null 的值时,我们经常需要提供回退值或默认值。C# 中的空合并运算符 ?? 专门为此设计,它提供了一种简洁、表达力强的方式来处理空值情况,避免了冗长的三元运算符或 if 语句。

C#属性访问控制详解:{ get; protected set; }

少于 1 分钟阅读

在C#面向对象编程中,属性的访问控制是封装思想的核心体现。其中 { get; protected set; } 这种语法虽然简洁,却蕴含了精妙的设计哲学。它既不是完全公开的{ get; set; },也不是完全私有的字段,而是在可访问性与安全性之间找到了绝佳的平衡点。

C# 实时计算属性 =>

少于 1 分钟阅读

在C#编程中,我们常常需要处理那些依赖于其他数据的派生值。传统做法是在构造函数中预先计算,或在方法中按需获取。但有一种更优雅的模式正逐渐成为现代C#开发的主流选择:这就是实时计算属性。

StringBuilder 和 string

少于 1 分钟阅读

using System.Text; public static class Identifier { public static string Clean(string identifier) { var sb = new StringBuilder(identifier); ...

Csharp 遍历 string 中字符 重新构造

少于 1 分钟阅读

概要:本文介绍了如何在 C# 中遍历字符串中的每个字符,并通过 StringBuilder 对其进行重构。示例代码展示了根据字符类型(控制字符或空格)进行替换的方式,实现了对字符串的清洗功能。

1 Hello World

少于 1 分钟阅读

public static class HelloWorld { public static string Hello() => "Hello, World!"; }

C#与C的对比——以串口测试软件为例

1 分钟阅读

本文将以一个实际的 C# WinForms 应用为例,深入浅出地讲解 C# 的关键语法和特性,帮助已经掌握 C 语言的开发者快速上手 C#。你将看到熟悉的结构,也将学习到 C# 独有的现代特性。

返回顶部 ↑

服务器

PMBUS Linear-11数据编码解析

2 分钟阅读

PMBus 协议中的 Linear-11 是一种数据编码格式,用 16 位(2 字节)数据表示浮点数(电压、电流、功率、温度等物理量)。

服务器DAC是什么

少于 1 分钟阅读

DAC 的全称是 Direct Attach Copper(直连铜缆),是一根两头自带光模块形状插头的“粗铜线”。它的接头看起来跟光纤模块一模一样(比如 SFP+ 或者 QSFP 接口),但中间连着的不是光纤,而是纯铜的电缆。

FRU是什么?

少于 1 分钟阅读

在企业级 IT 硬件与数据中心架构中,FRU 的全称为 Field Replaceable Unit(现场可替换单元)。

CPLD PinMap 引脚映射表制作技巧

少于 1 分钟阅读

Excel 的局限性: 虽然 Excel 对少量引脚直观且易操作,但它本质上是平铺式(Flat)的信息展示。 当引脚数量庞大时,跨类别修改(例如统一调整所有 BMC 相关引脚的电气属性)变得困难。 筛选和排序功能在处理具有“类”属性的复杂数据时效率低下。 ...

HBM 是什么

少于 1 分钟阅读

HBM(High Bandwidth Memory,高带宽内存)是一种为高性能计算场景设计的高带宽、低功耗三维堆叠内存技术,常用于GPU、AI加速卡、FPGA和高性能CPU中。

Intel CK440Q 规范

少于 1 分钟阅读

Intel CK440Q 是 Intel 针对现代服务器与高性能平台时钟发生器(Clock Generator)所定义的一套参考规范/时钟规格,用于统一服务器平台上 PCIe 和 CPU 时序信号的生成与分发。

CRPS 电源概述

少于 1 分钟阅读

参考链接 M-CRPS 标准:https://146a55aca6f00848c565-a7635525d40ac1c70300198708936b4e.ssl.cf1.rackcdn.com/images/7dcd4a42fafc61adf22802577208a2404dd1c175.pdf

NC-SI(Network Controller Sideband Interface)概述

少于 1 分钟阅读

概要:本文介绍了 NC-SI(网络控制器边带接口)的基本概念、工作原理以及其支持的电气接口和流量类型。NC-SI 作为 DMTF 定义的标准协议,使 BMC 能够利用主网卡的物理网络口进行带外管理通信,是服务器远程管理系统的关键技术之一。

DMI 总线概述

1 分钟阅读

DMI(Direct Media Interface)是 Intel 平台中,CPU 和 Chipset(PCH)之间的“内部高速互联总线”,本质上是一个“定制版 PCIe 链路”。

Datacenter-Secure Control Module (DC-SCM)概述

少于 1 分钟阅读

参考链接 官网 Server/MHS/DC-SCM-Specs-and-Designs:https://www.opencompute.org/w/index.php?title=Server/MHS/DC-SCM-Specs-and-Designs DC-SCM规范链接:https://www.ope...

返回顶部 ↑

Android SDK编译指南

编译sdk过程记录

少于 1 分钟阅读

2. lunch rk3568_r-userdebug 这个命令用于选择 Android 构建的目标设备和构建配置。

RK3588 Android15 .gitignore

1 分钟阅读

```.gitignore ############################################################################### common ########################################################...

Android RK SDK只编译和烧录kernel(boot.img)

少于 1 分钟阅读

在Android开发时,编译Android层耗时很长。而有时一些改动只涉及内核,能否只编译更新内核,而不编译Android部分?例如设备树的修改、内核的驱动适配。

自行打包 update.img 的方法

少于 1 分钟阅读

概要:本文介绍了如何在 Linux 环境下通过 Android SDK 的工具自行打包 update.img 文件。详细说明了工具目录、脚本选择方法、变量配置方式,以及打包流程和注意事项。

RB3588 设备树覆盖顺序

少于 1 分钟阅读

设备树包含结构 RB_RK3588.dts RB_RK3588.dtsi rk3588.dtsi rk3588s.dtsi rk3588-vccio3-pinctrl.dtsi rockchip-pinconf...

3588 安卓编译空间不足报错

少于 1 分钟阅读

编译失败信息如下: ```sh [ 97% 128312/131660] //packages/modules/Wifi/framework:framework-wifi.stubs.source metalava merged [common] WARN: Unable to load JNA library ...

3566 安卓编译无原因报错

1 分钟阅读

编译错误日志如下: ```sh [ 96% 101537/105371] //frameworks/base:module-lib-api-stubs-docs metalava merged [common] metalava detected access to files that are not expl...

rk3568 交叉编译链

少于 1 分钟阅读

寻找使用的交叉编译链 在kernel下makefile中,定义了 ifeq ($(ARCH),arm64) ifneq ($(wildcard $(srctree)/../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64...

HW-T3568 安卓固件编译指南

少于 1 分钟阅读

本文档旨在指导如何进行 HW-T3568 的安卓固件编译,最终生成 update.img 文件以供烧录。

返回顶部 ↑

HW-T3568安卓源码阅读笔记

示例-LVDS 屏幕适配指导文档

2 分钟阅读

简介 LVDS(Low-Voltage Differential Signaling)是一种常用的显示屏接口,适用于高分辨率和高刷新率的显示需求。在嵌入式系统中,适配 LVDS 屏幕的核心是通过设备树配置 LVDS 接口和屏幕参数,并确保驱动支持和系统正确初始化屏幕显示。

电源域配置

少于 1 分钟阅读

kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi

电源域配置

1 分钟阅读

&pmu_io_domains { status = "okay"; pmuio2-supply = <&vcc3v3_pmu>; vccio1-supply = <&vccio_acodec>; vccio3-supply = <&vccio...

新板子配置

少于 1 分钟阅读

为新板子添加各种配置文件 device/rockchip/rk356x/rk3568_HW/*

屏幕源码

少于 1 分钟阅读

nk应该代指nodka https://nodka.eu/

rockchip_panel.c

少于 1 分钟阅读

u-boot/drivers/video/drm/rockchip_panel.c 开发指南 struct rockchip_panel_priv 用于存储与 Rockchip 显示面板相关的各种配置和状态信息(比如添加控制gpio)

lcdparamservice.c

少于 1 分钟阅读

system/core/lcdparamservice/lcdparamservice.c https://blog.csdn.net/qq_32645109/article/details/121338840

串口UART

少于 1 分钟阅读

Rockchip RK3568 TRM Part1 V1.1-20210301.pdf

rk3568.dtsi解读

少于 1 分钟阅读

在aliases处修改串口别名 serial0 = &uart0; serial1 = &uart7; serial2 = &uart5;

I2C

少于 1 分钟阅读

Rockchip RK3568 TRM Part1 V1.1-20210301.pdf

返回顶部 ↑

Linux内核调试

Linux 内核崩溃日志收集机制 ramoops与pstore

1 分钟阅读

Linux 内核崩溃日志收集里的 pstore​ 与 ramoops,本质上就是内核的“黑匣子”。当系统发生 Panic/Oops 等致命错误时,传统磁盘日志往往来不及落盘,这套机制能把最后的现场(dmesg、console、栈回溯等)保存在一个重启不丢数据的区域里,等你重启后读出来复盘。注意,由于是保存在内存中...

FIQ 调试 —— 死机、死锁时串口调试

1 分钟阅读

系统遇到了底层问题,比如系统死机(Hang)、内核崩溃(Panic)或者发生死锁,导致正常的控制台无法响应,从而通过在串口上敲入”fiq”进入底层的 FIQ 中断模式。

sysrq命令大全

2 分钟阅读

sysrq 命令大全 https://www.kernel.org/doc/html/v4.11/admin-guide/sysrq.html#what-are-the-command-keys

Linux系统进程状态 R S D T Z X I

少于 1 分钟阅读

在Linux系统中,进程(Process)的生命周期是由不同的状态交替构成的。当我们在终端中使用 ps、top 或 htop 等命令查看系统进程时,经常会看到一个名为 STAT 或 S 的列,里面的字母就代表了进程当前的状态。

procfs 、 sysfs 与 debugfs 简介

少于 1 分钟阅读

在 Linux 系统中,procfs、sysfs 和 debugfs 都是虚拟文件系统(Virtual File System, VFS)。它们并不存在于硬盘等非易失性存储器上,而是驻留在内存中。

返回顶部 ↑

PCB layout

分立DC-DC layout 注意

少于 1 分钟阅读

输入电容Cin和输出电容Cout应分别布置在Vin引脚、Vout引脚与DC/DC的GND引脚之间,并尽可能减小Vin、Vout与DC/DC地之间的环路面积,以降低电源的EMI干扰,从而显著提升DC/C电路的稳定性。 此外,在输入电容Cin、输出电容Cout及DC/C的GND连接处,应尽量多地设置过孔,建...

ESD 防护

少于 1 分钟阅读

ESD(Electro-Static discharge, 静电放电) 防护是指通过一系列设计与措施,防止静电放电对电子设备造成损伤或干扰。

EMI 防护

少于 1 分钟阅读

EMI(Electromagnetic Interference, 电磁干扰)防护是指通过抑制干扰源、阻断耦合路径等措施,防止电磁干扰影响电子设备正常工作的设计方法。

玻纤编织效应与 Zig-Zag 布线

少于 1 分钟阅读

概要:本文介绍了 PCB 设计中由于玻纤编织结构引发的电气性能问题——玻纤编织效应(Fiber Weave Effect),并解释了 Zig-Zag 等布线技术的原理与应用。文章从材料特性出发,分析了问题产生的原因,并提出了从材料选择与布线设计两方面的对策,帮助工程师优化高速信号的完整性。

BGA layout

少于 1 分钟阅读

概要:本文详细介绍了BGA(Ball Grid Array)封装的布线设计方法,包括外层与中间层焊盘的扇出、盘中孔与狗骨结构的应用、PGD焊球识别与通道预留策略,以及电源供电路径的优化建议,辅以多张示意图辅助理解。

返回顶部 ↑

JAVA 与 Android apk 基本开发

Android 权限声明

少于 1 分钟阅读

Android权限声明是Android安全模型的核心组成部分,用于保护用户隐私和设备安全。

Toast 消息提示简介

少于 1 分钟阅读

Toast 是 Android 系统中的一个轻量级消息提示组件,用于在屏幕底部(默认位置)显示一个短暂的非模态弹窗,向用户提供操作反馈或简短信息,不会打断用户当前操作,几秒后会自动消失。

AppCompatActivity

少于 1 分钟阅读

AppCompatActivity是现代 Android 应用开发的基石,是几乎所有 Activity 都应该直接继承的类。

Android ActionBar是什么

少于 1 分钟阅读

Android ActionBar 是应用顶部的一个关键界面组件,用于显示应用标识、导航、操作项和菜单。它是 Android 3.0(Honeycomb,API 11)引入的重要设计元素,后来通过支持库向后兼容。

绑定界面元素 findViewById

少于 1 分钟阅读

概要:本文解读了一次 Android 应用中的代码变更,主要围绕通过 findViewById 方法绑定界面元素,包括新增按钮和输入框的绑定,以及相关事件处理器的实现。通过对比 Java 代码和 XML 布局文件的修改,详细分析了如何在 Activity 中实现界面控件的逻辑交互。

什么是.class文件

少于 1 分钟阅读

.class 文件是 Java 编译后的中间代码 它实现了 Java 的平台无关性 在运行时由 JVM 解释执行或 JIT 编译为机器码 是 Java 生态系统的基础,支撑了 Java 的跨平台特性

Android11 系统闹钟 AlarmManager

1 分钟阅读

概要:本文是关于 Android AlarmManager 的使用笔记,记录了精确与不精确闹钟的区别、权限配置、重复闹钟的处理方式,以及如何在系统重启后保持闹钟有效。适用于需要在应用外执行定时任务的场景。

返回顶部 ↑

Linux 通用编译指南

defconfig 配置项不生效问题

少于 1 分钟阅读

情况一:Kconfig中没有正确定义选项 1. 为什么 defconfig 中新增的选项不会自动进入 .config? 1.1 Kconfig 是配置的核心 .config 文件是 根据 Kconfig 解析生成的,并不是直接从 defconfig 复制过来的。 defconfig 只是提供默认值,但前...

defconfig 选项缺失

少于 1 分钟阅读

概要:本文解释了defconfig与.config文件的区别,说明了defconfig中可能缺失某些选项的原因,并提供了相关示例。

vermagic check 问题

少于 1 分钟阅读

问题现象 在尝试加载内核模块 dhd-cyw43430.ko 时,系统提示错误: insmod: ERROR: could not insert module /lib/modules/dhd-cyw43430.ko: Invalid module format

关于 uname 查看的内核版本号的后缀

少于 1 分钟阅读

概要:本文介绍了在 Linux 内核中,uname -r 命令显示的内核版本号后缀的来源,以及如何通过 CONFIG_LOCALVERSION_AUTO 选项控制哈希值、dirty 标记和 + 号的显示情况。

深入解析 Kconfig、defconfig 与 .config 之间的关系

1 分钟阅读

在 Linux 内核、U-Boot、Buildroot 等嵌入式系统开发中,Kconfig 是一个关键的配置管理系统。它用于定义、组织和管理大量的编译选项,使开发者能够灵活地启用或禁用不同的功能。与此同时,defconfig 和 .config 文件在整个配置流程中起着重要作用。本文将深入解析 Kconfig、d...

chown Operation not permitted 权限问题解决

少于 1 分钟阅读

概要:在编译 Linux 内核并打包 Debian 包时,可能会遇到 chown: Operation not permitted 的错误。本文介绍如何使用 fakeroot 解决该问题,并正确生成 .deb 包。

返回顶部 ↑

Ubuntu 调试

iwconfig 输出解析

1 分钟阅读

```bash wlan0 IEEE 802.11 ESSID:”Xiaomi_49DE_5G” Mode:Managed Frequency:5.785 GHz Access Point: 50:88:11:A2:49:E0 Bit Rate=433.3 Mb/s Tx-Power=31 dBm Retry s...

ifconfig TXRX dropped error解析

1 分钟阅读

enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.22 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe...

如何查找 Ubuntu 桌面上图形界面程序对应的进程

1 分钟阅读

在 Ubuntu 桌面环境中,有时我们需要查找某个图形界面程序对应的进程 ID(PID),以便进行进程监控、资源分析、强制结束进程等操作。本文将介绍几种常用的命令行工具和方法,帮助您快速定位窗口对应的进程。

printk Linux 内核日志调试级别

少于 1 分钟阅读

概要:本文介绍了 Linux 内核中 printk 函数的使用方式及其日志调试级别的含义,包括内核日志缓冲区的工作机制、日志级别的分类、以及如何通过 /proc/sys/kernel/printk 参数控制日志输出行为。

如何找到升级后使系统崩溃的软件包

少于 1 分钟阅读

概要:本文介绍了在使用 apt upgrade 进行软件包全量更新后,系统因某个软件包问题导致崩溃的排查方法。通过二分法逐步缩小问题范围,最终定位并禁止问题软件包的更新。

返回顶部 ↑

AndroidSDK 使用技巧

获取产品对应文件夹

少于 1 分钟阅读

执行 lunch 选择产品后,通过执行“get_build_var TARGET_DEVICE_DIR”命令找到对应的目标文件夹。

如何编译和使用 unpack_bootimg 工具

少于 1 分钟阅读

在 Rockchip 的 Android SDK 开发中,unpack_bootimg 是一个非常重要的工具,用于解包 boot.img 文件,以便查看或修改其中的内容。以下将详细介绍如何编译和使用该工具。

Lunch选择的版型与对应的U-Boot配置文件

少于 1 分钟阅读

在构建系统中,U-Boot配置文件是指在 u-boot/configs/ 目录下的 *_defconfig 文件。它的主要作用是定义U-Boot的配置选项,这些选项会在构建U-Boot时被解析并生成最终的配置文件(.config),进而决定U-Boot的功能、硬件支持、启动模式等具体内容。

内核配置文件

少于 1 分钟阅读

本文档旨在说明内核配置文件与版型的对应,以及如何生成自定义的内核配置文件。

lunch选择的版型与版型对应的配置文件

少于 1 分钟阅读

在Android构建系统中,lunch命令是用于选择目标产品(版型)的核心工具。它通过加载与版型相关的配置文件,设置环境变量,从而确保构建系统能够正确生成目标镜像。本文将结合rk3568_HW.mk文件的内容,详细说明lunch命令如何与版型对应。

返回顶部 ↑

其他工具使用技巧

markdown输出pdf技巧

少于 1 分钟阅读

用于生成pdf时强制分页: <div STYLE="page-break-after: always;"></div>

返回顶部 ↑

测试SOP

软件测试

少于 1 分钟阅读

wifi wlan0节点是否正确加载,反复测试 开关 系统下 ifconfig nmcli 信号强度 协商速率 2.4 5 GHz是否可以识别到 切换wifi 软 硬 重启 wifi开关状态保存

什么是ABA测试

少于 1 分钟阅读

在硬件测试和FAE(现场应用工程师)的排查语境中,ABA测试(通常也称为交叉验证测试或A-B-A复测)是一种非常经典且严谨的故障隔离方法。

RK官方 DDR定频拷机

少于 1 分钟阅读

概要:本文介绍在 RK 平台上进行 DDR 定频拷机测试的具体步骤,包括设置固定频率、确认频率、评估可用内存以及使用 stressapptest 进行长时间拷机测试的方法。

DDR 压力测试 —— stressapptest

2 分钟阅读

概要:本文介绍了 Google 开发的高性能内存压力测试工具 stressapptest 的原理及使用方法,并通过示例对其测试结果进行分析,帮助开发者识别并判断 DDR 内存硬件稳定性问题。

Ubuntu stress 压力测试指南

少于 1 分钟阅读

概要:本文介绍了在 Ubuntu 系统中进行压力测试的方法,包括安装 stress 工具、运行压力测试命令、合理配置内存占用,并提供了桌面监控建议和必要软件的安装方式。

HW-T3568I Ubuntu 接口测试

少于 1 分钟阅读

概要:本文介绍了 HW-T3568I 在 Ubuntu 系统下各接口的测试方法,包括终端操作、测试工具使用、各类接口(如 LVDS、USB、TF 卡、WLAN、以太网、4G、音频、GPIO、串口 COM)连接与验证流程,辅以操作截图和脚本命令,便于用户逐项进行功能验证。

返回顶部 ↑

BMC

什么是edgeBMC(eBMC)

少于 1 分钟阅读

edgeBMC(边缘主板管理控制器,Edge Baseboard Management Controller)是专为边缘计算设备(如工业电脑、物联网网关、边缘服务器)设计的一种轻量级带外(Out-of-Band, OOB)远程管理芯片及方案。

OpenBMC Yocto 编译环境配置

少于 1 分钟阅读

安装 Yocto 必备的系统依赖库 sudo apt update sudo apt install -y git build-essential python3 python3-pip python3-pexpect \ python3-git python3-jinja2 xz-utils debianuti...

什么是KVM over IP(BMC)

少于 1 分钟阅读

这里需要先澄清一个概念:OpenBMC 里的 KVM,不是 Linux 内核里的那个虚拟机管理程序(Kernel-based Virtual Machine)。

IPMI协议

少于 1 分钟阅读

IPMI(Intelligent Platform Management Interface,智能平台管理接口)是一项由 Intel、Dell、HP 和 NEC 联合提出的服务器硬件管理标准化协议。

什么是bmcweb

少于 1 分钟阅读

bmcweb 是 OpenBMC 开源项目中的核心 Web 服务器组件,它主要负责在 BMC 上提供 Redfish API、Web 用户界面以及基于 WebSockets 的远程控制功能。

返回顶部 ↑

STC8 开发

USB树分析工具(USB Devices Tree Viewer)与 USB抓包工具(BUS Hound)使用

少于 1 分钟阅读

USB树分析工具(USB Devices Tree Viewer) 该工具用于展示系统读取到的USB设备的详细信息,包括树状结构展示,原始描述符解析等等,对于理解USB设备的结构很有用。如果自行开发的USB设备出了问题,软件也能展示某些字段解析失败的结果,方便了USB的开发。这个工具基于微软的驱动开发工具包开发,...

PS/2 协议详解

5 分钟阅读

目前市面上的资料,大多数是对PS/2键盘的通信过程做了介绍,但是PS/2和Windows在开机阶段是怎么握手上的,却没有详细地介绍,本文弥补了这一点。

STC8 简单延时指南

少于 1 分钟阅读

在 STC8 单片机中,要实现阻塞 CPU 进程的简单延时,可以直接使用官方的烧录工具 stc-isp 生成延时代码。

STC8 简单 PWM 输出使用指南

2 分钟阅读

本指南以 STC8H1K16 为例,介绍 PWM(脉宽调制)功能的基本使用方法,适合新手快速上手 PWM 配置。

返回顶部 ↑

Ubuntu SDK 编译指南

编译记录

少于 1 分钟阅读

配置文件 device/rockchip/.BoardConfig.mk

Linux SDK 中 build.sh 打包 updateimg 流程分析

1 分钟阅读

概要:本文详细分析了 Linux SDK 中 build.sh 脚本打包 update.img 的流程,涵盖了脚本调用关系、关键函数解析以及所用工具与软链接指向,帮助开发者更清晰地理解固件打包过程。

make menuconfig 使用全流程

少于 1 分钟阅读

概要:本文详细介绍了使用 make menuconfig 配置 Linux 内核的完整流程,涵盖从 defconfig 生成 .config 文件、使用 menuconfig 编辑配置,到将配置保存回 defconfig 的全过程,并指出了使用中的关键注意事项与缺点。

RK 3588 Ubuntu SDK 编译流程

少于 1 分钟阅读

概要:本教程介绍了在 RK 3588 Ubuntu SDK 环境下编译 U-Boot、内核及固件的完整流程,并说明了生成的文件及最终 update.img 的打包过程。

返回顶部 ↑

服务器运维

代码服务器代码备份

少于 1 分钟阅读

主要需要备份两个目录的内容: 代码(/mnt/nvme/gitblit-1.9.1) git lfs存的根文件系统(/mnt/hdd/armrootfs_lfs/)

慎用 rm —— 使用 trash 代替

少于 1 分钟阅读

概要:rm 命令会永久删除文件,无法恢复,稍有不慎可能导致严重数据丢失。本文介绍了 trash-cli 作为 rm 的安全替代方案,提供安装和使用指南,并探讨如何避免误删文件的方法。

250308-Gitblit 迁移说明

少于 1 分钟阅读

概要:由于存储空间不足,Gitblit 从 /home/arm/work/gitblit-1.9.1/ 移至 /mnt/nvme/gitblit-1.9.1/,并进行了相应的配置修改和备份操作。

返回顶部 ↑

win 开发指南

如何查看端口被哪个进程占用

少于 1 分钟阅读

概要:本文介绍了在 Windows 系统中查看特定端口(如 53317)被哪个进程占用的方法,包括使用 netstat 命令、PowerShell、TCPView 工具以及资源监视器。

返回顶部 ↑

Post Formats

Post: Link Permalink

少于 1 分钟阅读

This theme supports link posts, made famous by John Gruber. To use, just add link: http://url-you-want-linked to the post’s YAML front matter and you’re done.

Post: Quote

少于 1 分钟阅读

Only one thing is impossible for God: To find any sense in any copyright law on the planet. Mark Twain

Post: Notice

1 分钟阅读

A notice displays information that explains nearby content. Often used to call attention to a particular detail.

Post: Chat

2 分钟阅读

Abbott: Strange as it may seem, they give ball players nowadays very peculiar names.

Post: Standard

4 分钟阅读

All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing...

Post: Modified Date

少于 1 分钟阅读

This post has been updated and should show a modified date if used in a layout.

返回顶部 ↑

VSCode使用

返回顶部 ↑

AI工具使用

DeepSeek Harness 快速部署指南

少于 1 分钟阅读

面向第一次使用 DeepSeek Harness(简称 dsh)的新手。跟着下面 5 步走,约 10~20 分钟即可跑起来。

大语言模型LLM基础工程知识介绍

1 分钟阅读

在将大语言模型(LLM)集成到实际的 Agent 架构或业务工作流时,理解其底层的运行机制与工程评测指标是进行系统调优的前提。本文对 LLM 相关的核心术语与技术概念进行了系统性整理。

AI API 协议介绍:Chat Completions、Messages、generateContent

少于 1 分钟阅读

AI API 的”协议碎片化”确实是最让开发者头疼的事儿之一。本质原因是 OpenAI 的 Chat Completions 虽已成为事实标准,但 Anthropic 和 Google 两家坚持了自己的一套原生协议,再加上 OpenAI 自己又在 2026 年推了新一代的 Responses API,所以现在市场...

返回顶部 ↑

其他bug解决记录

vscode ssh 卡住——正在下载ssh服务器

少于 1 分钟阅读

问题描述 之前vscode能通过ssh连上其他主机的,突然就不行了,点击连接后一直卡在“正在下载ssh服务器”。一般这种情况出现在vscode自动更新后。

记一次异常断电导致的 Ubuntu 主机SSH连接不上

少于 1 分钟阅读

背景 由于工作室跳闸,需要断电后再重新上电。在这个过程中,忘记正常关闭编译服务器,直接断电了。恢复电源后,服务器可以正常启动,但尝试进行 SSH 连接时出现如下错误:

使用-C选项解决编译错误问题

少于 1 分钟阅读

在使用Rockchip RK3568平台开发时,可能会遇到内核编译失败的情况。例如,使用./build.sh -K编译Linux内核时,可能会出现各种编译错误,而添加-C选项(即使用Clang编译器)后问题却能够解决。以下是对该问题的分析和解决过程的详细记录。

返回顶部 ↑

OSTree 使用

OSTree 常用命令

1 分钟阅读

OSTree 是一种强大的文件系统管理工具,广泛应用于操作系统版本控制和分发。本文总结了 OSTree 的常用命令,按功能进行分类,便于读者快速查阅。

返回顶部 ↑

新人发展

新人发展路线

少于 1 分钟阅读

烧录 update——RK 如何进行完整固件(update.img)烧录

搜索引擎的使用方法

少于 1 分钟阅读

我们每天接触搜索引擎,虽然 AI 的出现替代了一部分搜索引擎的功能,但是在遇到具体的工程问题时,AI 往往只能提供一个思路,使用搜索引擎搜索到的前人的解决经验往往更加宝贵。而事实上,很多人连搜索引擎都无法正确地使用。

提问的艺术

少于 1 分钟阅读

掌握提问的艺术,本质上是在修炼一种高效的思维与沟通方式。

嵌入式软件工程师修养

1 分钟阅读

嵌入式工程师的成长,并不取决于会多少 API,而取决于 面对未知问题时的处理方式、工具的熟练程度以及 工程化思维。

关于笔记

少于 1 分钟阅读

概要:本文分享了做笔记的意义、适合记录的内容类型(概念型/步骤经验型/理论思考型)、记笔记的最佳时机、容易忽视但重要的笔记要素,以及推荐的笔记工具链(博客平台与本地部署+GitHub 同步)。

返回顶部 ↑

blog

githubio 博客同步脚本使用指南

1 分钟阅读

概要:本文记录如何用 githubio_sync.js 脚本把本地笔记仓库 F:\notes 里的 markdown 笔记自动同步发布到个人博客 witheart.top(GitHub Pages + Jekyll minimal-mistakes),涵盖日常同步命令、增量上传原理、上传目录规则和注意事项,方便以...

Markdown文档局域网渲染发布展示方案 —— Docsify

1 分钟阅读

在系统适配与底层开发过程中,研发人员习惯使用 Markdown 结合 Git 来记录测试用例(如 WiFi 吞吐量、MPP 硬件解码、NPU 压测等)和开发指南。然而,当这些技术文档需要向测试团队或现场工程师交付时,直接提供原始的 .md 文件和错综复杂的目录结构显然不够友好。

jekyll minimal-mistakes github Page 建站

少于 1 分钟阅读

什么是Jekyll、Ruby、RubyGems、Bundle、Minimal Mistakes​​ 和 ​​GitHub Pages​? 什么是Jekyll、Ruby、RubyGems、Bundle、Minimal Mistakes​​ 和 ​​GitHub Pages

返回顶部 ↑

Linux Kernel 知识

hwmon 子系统简介

少于 1 分钟阅读

在 Linux 内核和嵌入式开发中,hwmon 是 Hardware Monitoring(硬件监控) 的缩写。

中断标志 IRQF_ONESHOT 含义

少于 1 分钟阅读

参考 https://linux-kernel-labs.github.io/refs/heads/master/labs/interrupts.html https://android.googlesource.com/kernel/msm/+/android-wear-5.1.1_r0.6/include/l...

返回顶部 ↑

Allegro

返回顶部 ↑

hailo 加速卡驱动安装及使用

RK 3588 Hailo AI 加速卡驱动安装指南

2 分钟阅读

概要:本指南详细介绍了在 RK3588 平台上安装 Hailo AI 加速卡驱动的步骤,包括 PCIe 支持检查、驱动编译、RT 库安装以及常见问题解决方案。

RK 3588 Hailo AI 加速卡 性能测试指南

1 分钟阅读

概要:本文介绍了在 RK 3588 平台上使用 Hailo AI 加速卡进行性能测试的方法,包括模型下载、性能测试命令及可能遇到的错误和解决方案。

返回顶部 ↑

基本硬件电路原理

  1. boost升压电路

少于 1 分钟阅读

概要:本文介绍了Boost升压电路的基本原理,分析了其在实际应用中的问题,并通过加入二极管和电容的方式提出了解决方案。最后展示了实际电路模型中MOS管的应用。

  1. 电感与电容——不能突变

少于 1 分钟阅读

概要:本文介绍了电感和电容在电路中电流与电压的变化特性,说明了电感的电流不能突变、电容的电压不能突变的物理与数学原因,并提供了工程应用中的直观理解。

返回顶部 ↑

硬件调试常识

示波器带宽

少于 1 分钟阅读

问题背景 测量高频率的信号时,如果不调整示波器的带宽,测出来的信号可能会失真。 如测一时钟信号,按理说应该是方波,但是测出来却是个三角波

晶振波形为三角波

少于 1 分钟阅读

问题分析 三种情况: 本来就是个三角波 示波器与探头的带宽限制,详见(https://www.genuway.com/4125.html) 晶振连接着电阻,与周围的寄生电容形成了个低通滤波器,详见(https://zhuanlan.zhihu.com/p/12864239825)

返回顶部 ↑

Android Studio

Android Studio 更改 gradle JDK版本

少于 1 分钟阅读

sync时,出现如下报错 ``` Your build is currently configured to use incompatible Java 21.0.3 and Gradle 7.4. Cannot sync the project.

返回顶部 ↑

vscode 扩展 Extensions 开发

zsh npm run watch error command not found

少于 1 分钟阅读

问题描述 vscode开发扩展时,F5调试,虽然弹出了Extension Development Host,但实际上没有成功编译,终端处报错 ```bash 正在执行任务: npm run watch

返回顶部 ↑

C

C语言 volatile 关键字

少于 1 分钟阅读

volatile 是一条写给编译器的指令,强制要求每次访问该变量时,必须直接从真实的物理内存(或硬件寄存器)地址中重新读取最新值,严禁将其缓存在 CPU 的通用寄存器中进行优化。因为这个变量的值随时可能被硬件改变。

返回顶部 ↑

硬件

高速信号AC耦合电容

少于 1 分钟阅读

PCIe、SATA、USB 3.0 等串行链路的差分线上,通常都需要串接交流耦合电容(AC Coupling Capacitor)。

返回顶部 ↑

readability

Post: Standard

4 分钟阅读

All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing...

Post: Modified Date

少于 1 分钟阅读

This post has been updated and should show a modified date if used in a layout.

返回顶部 ↑

standard

Post: Standard

4 分钟阅读

All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing...

Post: Modified Date

少于 1 分钟阅读

This post has been updated and should show a modified date if used in a layout.

返回顶部 ↑

模块使用

使用Intel的SMBus控制器与IIC器件通信

1 分钟阅读

本文介绍如何通过 Intel 的 SMBus 控制器与 IIC 器件(例如 LM75 温度传感器)进行通信,包括寄存器地址说明、读写操作过程及相关代码实现。

LM75 温度传感器使用

1 分钟阅读

芯片简介 LM75 是一款低功耗、易于使用的数字温度传感器,支持 I2C 接口通信。它能够测量芯片本身的温度,输出分辨率为 0.5°C,同时支持可编程温度阈值和报警功能。该芯片适用于环境温度监测、热保护系统等应用场景。

返回顶部 ↑

RK3568硬件接口笔记

RK3568 GPIO驱动强度

1 分钟阅读

概要:本文探讨了RK3568 GPIO驱动强度的设置方法,分析了相关代码实现及驱动强度的特性。文中指出驱动强度的设置与引脚类型有关,并提到官方文档中驱动能力与level的对应关系存在特殊情况。

返回顶部 ↑

Rockchip SDK repo、Redmine系统

Rockchip SDK repo 同步与内网开发仓库架构

少于 1 分钟阅读

概要:本文介绍了如何在编译服务器上同步 Rockchip SDK 官方仓库(Sync Repo),并将其处理为干净的开发仓库(Dev Repo),最终上传至内网 GitBlit 供研发人员拉取开发。文中包含同步处理的指令说明及完整的流程图示意。

返回顶部 ↑

Python

Python 安装报错(Missing xxx lib)

1 分钟阅读

问题描述 在安装新版本python时,比如python3.9.0,虽然成功安装了,但是报一些ModuleNotFoundError,如下 hw@hw-Default-string:/mnt/hdd/openbmc/build/romulus$ pyenv install 3.9.0 Downloading Pyt...

返回顶部 ↑

visual studio使用

返回顶部 ↑

Android 调试

返回顶部 ↑

Uboot 开发指南

返回顶部 ↑

UEFI

UEFI 与 ACPI 简介

少于 1 分钟阅读

UEFI 与 ACPI 是现代计算机系统中负责硬件初始化、系统引导和电源配置管理的核心标准。两者位于操作系统与底层硬件之间,共同构成了现代计算机固件与系统的沟通桥梁。

PK, KEK, DB安全密钥概念

少于 1 分钟阅读

这三个名词是 UEFI Secure Boot(安全启动)体系中的核心概念。它们共同组成了一条基于非对称加密(公钥/私钥)的严密信任链(Chain of Trust)。

返回顶部 ↑

chat

Post: Chat

2 分钟阅读

Abbott: Strange as it may seem, they give ball players nowadays very peculiar names.

返回顶部 ↑

notice

Post: Notice

1 分钟阅读

A notice displays information that explains nearby content. Often used to call attention to a particular detail.

返回顶部 ↑

quote

Post: Quote

少于 1 分钟阅读

Only one thing is impossible for God: To find any sense in any copyright law on the planet. Mark Twain

返回顶部 ↑

Jekyll

Welcome to Jekyll!

少于 1 分钟阅读

You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different wa...

返回顶部 ↑

update

Welcome to Jekyll!

少于 1 分钟阅读

You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different wa...

返回顶部 ↑

规则

RK Android 仓库 Git 分支命名规则

少于 1 分钟阅读

命名结构可视化 主分支:安卓版本:Android11 └── 版型分支:Androidx-具体版型 └── 客户版型定制分支1: Androidx-具体版型-客户简称1-...

返回顶部 ↑

Makefile 基础知识

makefile 中不同等号的区别

少于 1 分钟阅读

在 Makefile 中,不同的赋值操作符(=, :=, ?=, +=)具有不同的行为和用途。本文介绍它们的区别。

返回顶部 ↑

操作系统工程

返回顶部 ↑

Linux内核源代码情景分析

2.1 Linux 内存管理的基本框架

1 分钟阅读

概要:本文详细介绍了 i386 架构下的页式内存管理机制,包括从线性地址到物理地址的两级或三级映射过程、Linux 针对不同位宽 CPU 的分页结构适配方法,并进一步说明了用户空间与内核空间的划分原则及虚实地址之间的转换实现。

返回顶部 ↑

深入理解计算机系统 —— 笔记

返回顶部 ↑

内核源码随笔

MAC 地址有效性判断

2 分钟阅读

is_valid_ether_addr kernel-5.10/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c if (!is_valid_ether_addr(addr))

返回顶部 ↑

wsl

已安装Ubuntu的WSL1升级到WSL2

少于 1 分钟阅读

概要:本指南介绍了如何将已安装的 Ubuntu WSL1 升级为 WSL2,包括查看当前 WSL 版本、使用命令更新 WSL、处理权限问题、手动下载安装包等步骤,适用于遇到“请求的操作需要提升”的用户。

返回顶部 ↑

Kotlin

Kotlin 快速入门

3 分钟阅读

练习环境 可在网站进行练习 https://play.kotlinlang.org/

返回顶部 ↑

电源

DC-DC 带滞回功能的 EN 引脚上分压电阻的计算

少于 1 分钟阅读

概要:本文介绍了在 DC-DC 芯片中,为实现带滞回功能的使能控制(EN 引脚),如何通过外部电阻和内部恒流源的配合,实现开启和关闭阈值不同的电压控制机制,并给出相应电阻的计算公式。

返回顶部 ↑

常用英语单词

返回顶部 ↑

Yocto

返回顶部 ↑

x86 开发指南

返回顶部 ↑

ARMv8

ARM Trusted Firmware (TF-A,ATF) BL1, BL2, BL3

2 分钟阅读

在 ARMv8 架构(特别是引入了 TrustZone 安全扩展后)中,系统的启动不再是简单地把代码搬到内存里运行,而是有着严格的权限和安全等级划分。

返回顶部 ↑