Posts

llama.cpp 模型加载机制深度解析

概述 llama.cpp 的模型加载系统是一个高度优化的、支持多后端、多设备的模型权重加载框架。它通过精心设计的数据结构和加载流程,实现了: 零拷贝加载:通过内存映射(mmap)实现模型文件的零拷贝加载

◷ 2026-02-12 📁 推理框架 👤 laumy 🔥 1317 热度 💬 0 评论

ggml后端架构简要分析

后端系统概述 GGML后端系统主要提供如下功能: 统一接口: 不同硬件平台使用相关的API。 自动选择:根据硬件自动选择最优后端。 灵活切换:可以在运行时切换后端。 扩展性:易于添加的新后端。

◷ 2026-01-29 📁 推理框架 👤 laumy 🔥 599 热度 💬 0 评论

jetson orin nano使用TensorRT-LLM跑大模型

准备 硬件信息 硬件信息如下: sudo cat /proc/device-tree/model NVIDIA Jetson Orin NX Enginejetson_releasee Developer Kit(base) nano@nano-desktop:~$ jetson_release Software part of jetson-stats …

◷ 2026-01-24 📁 Ai应用 👤 laumy 🔥 1468 热度 💬 0 评论

jetson orin nano使用llamap.cpp跑大模型

安装 确认一下是否有/usr/local/cuda/bin/nvcc,有就配置一下环境。 # 临时在当前终端生效 export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH # 验证 nvcc 是否能找到 nvcc …

◷ 2026-01-22 📁 Ai应用 👤 laumy 🔥 653 热度 💬 0 评论

linux 实时性能测试

使能方法 在linux 6.12版本之后原生SDK就支持了PREEMPT_RT,使能方式如下: make kernel_menuconfig General setup ---> <*> Fully Preemptible Kernel (Real-Time) 或者直接搜索CONFIG_PREEMPT_RT=y 确认是否已经打开 zcat …

◷ 2026-01-20 📁 性能工具 👤 laumy 🔥 423 热度 💬 0 评论

GGML计算基础:矩阵的基本运算

矩阵相乘 是神经网络中算力消耗最大的部分,通常占据 LLM 推理计算量的 95% 以上。 矩阵乘法 (Matrix Multiplication / GEMM) 这是最通用的矩阵运算形式,也是 AI 芯片中 Tensor Core 或 MAC 阵列的主要工作内容。 定义: 设矩阵 $A$ 的形状为 $(M \times K

◷ 2026-01-20 📁 推理框架 👤 laumy 🔥 484 热度 💬 0 评论

GGML多线程计算:OpenMP简介

OpenMP是什么 OpenMP是一套用于共享内存并行系统的多线程程序设计标准。通俗的将,它允许通过简单的编译器指令(#pragma)将原本串行执行的C/C++ for循环瞬间变成多线

◷ 2026-01-19 📁 推理框架 👤 laumy 🔥 448 热度 💬 0 评论

ISP(Image Signal Processor)关键技术指标

什么是ISP 一句话定义ISP:ISP就是把传感器吐出来的RAW电信号处理成可用于人眼、算法的图像数据的一整套“信号处理流水线”。 上面这张图是传统ISP流水线到AI ISP的演变。 (1

◷ 2025-12-16 📁 外设 👤 laumy 🔥 582 热度 💬 0 评论

基于ubuntu系统安装使用Fast DDS

什么是Fast DDS Fast DDS是一个高性能的"分布式通信中间库",用来在不同进程、不同设备之间传输数据的。Fast DDS是用C++写的一个DDS实现,在同一台机器的多

◷ 2025-12-06 📁 ROS系统 👤 laumy 🔥 691 热度 💬 0 评论

JSON-RPC 2.0 规范解读

概述 JSON-RPC是一种无状态、轻量的远程调用(RPC)协议,其有一套规范,定义了若干数据结构及其处理规则。它对传输层是无关的,可以在同一进程中传递使用,也可以跨进程、跨环境如s

◷ 2025-11-15 📁 前后端 👤 laumy 🔥 921 热度 💬 0 评论

lekiwi录制训练推理流程实践

录制 设备端 先确定一下相机编号 cd ~/lerobot/ lerobot-find-cameras 生成路径:outputs/captured_images 然后修改uart的权限 sudo chmod 666 /dev/ttyACM0 启动等待连接 python -m lerobot.robots.lekiwi.lekiwi_host \ …

◷ 2025-11-04 📁 lerobot 👤 laumy 🔥 522 热度 💬 0 评论

ubuntu系统xiaozhi server本地部署

简介 本文主要是记录在ubuntu系统从零源码的方式本地部署小智Ai服务端的过程,项目的地址为:xiaozhi-server。在部署之前简单了解一下其项目框架,这里总结可以分为3部分

◷ 2025-10-30 📁 Ai应用 👤 laumy 🔥 2552 热度 💬 0 评论

Lekiwi驱动链路分析

系统架构 硬件组成 Lekiwi是一个底盘+机械臂的结构。 机械臂: 6个自由度(shoulder_pan, shoulder_lift, elbow_flex, wrist_flex, wrist_roll, gripper) 移动底盘:3个全向轮,三轮全向移动(left_wheel

◷ 2025-10-28 📁 lerobot 👤 laumy 🔥 659 热度 💬 0 评论

lekiwi+Orin Nano环境搭建

环境准备 简要记录在Orin nano平台搭建lekiwi环境,可以远程遥控底盘移动和机械臂示教的过程,需要的硬件如下: - NVIDIA Jetson Orin Nano开发板 - Lekiwi套件(底盘、主从机械臂) - P

◷ 2025-10-25 📁 Ai应用 👤 laumy 🔥 535 热度 💬 0 评论

Jetson Orin Nano环境搭建

安装浏览器 sudo apt update sudo apt install chromium-browser -y 安装后发现点击浏览器会没反应。按照下面方法配置。 snap download snapd --revision=24724 sudo snap ack snapd_24724.assert sudo snap install …

◷ 2025-10-22 📁 Ai应用 👤 laumy 🔥 409 热度 💬 0 评论

为什么AlphaGo能自学围棋?强化学习基本概念

强化学习简介 什么是强化学习 以直升机控制飞行的程序来举例。 自动驾驶的直升机配备了机载计算机、GPS、加速度计、陀螺仪和磁罗盘,我们可以实时确定的知道直升机的位置。如何使用强化学习来让

◷ 2025-10-18 📁 算法模型 👤 laumy 🔥 372 热度 💬 0 评论

机器人全身控制浅谈:理解 WBC 的原理

概念 WBC(Whole-Body Control,全身控制)是什么?机器人是由“各关节”组成的,其不是“各关节各玩各的”而是一个耦合的整体。在某个时刻可能要做很多事情,比如保持平衡(

◷ 2025-09-29 📁 算法模型 👤 laumy 🔥 1506 热度 💬 0 评论

机器人控制利器:MPC入门与实践解析

背景 MPC(Model Predictive Control)模型预测控制,是一种控制方法,广泛应用在机器人、无人驾驶、过程控制、能源系统等领域。它的核心思想用一句话来总结:利用系统模型预测未来,并通过

◷ 2025-09-28 📁 算法模型 👤 laumy 🔥 1066 热度 💬 0 评论

语音生成模型:CosyVoice入门实践

是什么 CosyVoice是阿里开源的一款文字转语音的开源模型,可以支持音色复刻。 怎么用 环境安装 (1)代码下载 git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git cd CosyVoice git submodule update --init --recursive 因 …

◷ 2025-09-26 📁 Ai应用 👤 laumy 🔥 318 热度 💬 0 评论

语音识别模型:SenseVoice入门实践

是什么 SenseVoice是多语言识别的模型,支持语音转文字(ASR, Automatic Speech Recognition,自动语音识别),语种识别(LID, Language Identification),语音情感识别(

◷ 2025-09-26 📁 Ai应用 👤 laumy 🔥 1146 热度 💬 0 评论

windows访问Linux搭建的samba服务

Linux 服务 安装 Samba 是Linux上实现SMB/CIFS 协议的服务,可以让 Windows、Linux、macOS 之间互相访问文件夹。 安装samba sudo apt update sudo apt install samba -y 配置 (1)配置文件 sudo vim /etc/samba/smb.conf [share] path

◷ 2025-09-23 📁 其他 👤 laumy 🔥 302 热度 💬 0 评论

ROS2 建图与导航:Slam_toolbox、Nav2实践

地图构建 在 ROS2 中,地图构建常用 SLAM(Simultaneous Localization and Mapping) 技术。其大概流程是: 传感器采集数据:可使用激光雷达(2D/3D LiDAR)或相机(VSLAM) 里程

◷ 2025-09-19 📁 ROS系统 👤 laumy 🔥 3459 热度 💬 0 评论

ROS2机器感知:相机、雷达、IMU

相机 相机安装 sudo apt install ros-jazzy-usb-cam 可视化 run usb_cam usb_cam_node_exe --ros-args -p video_device:=/dev/video2 ros2 run rqt_image_vew rqt_image_view 上面的-p指定具体的摄像头,可以用v4l2-ctl …

◷ 2025-09-18 📁 ROS系统 👤 laumy 🔥 574 热度 💬 0 评论

ROS2机器人仿真:urdf模型、gaezbo仿真

机器URDF模型 URDF 的全称是 Unified Robot Description Format(统一机器人描述格式)。它是 ROS / ROS2 系统里专门用来描述机器人结构和属性的一种 XML 格式文件。简单来说,URDF 就是“机器人说明书”,告诉 ROS

◷ 2025-09-18 📁 ROS系统 👤 laumy 🔥 561 热度 💬 0 评论

ROS2节点通信:话题、服务、动作三剑客+参数

简介 在ROS系统每个节点可以理解为一个进程,更准确的说法它是一个包含了特定功能的独立执行单元。节点在ROS2中通常是一个可执行文件,负责执行特定的任务,如控制机器人、传感器数据处理

◷ 2025-09-16 📁 ROS系统 👤 laumy 🔥 755 热度 💬 0 评论

ubuntu系统异常:无法进入登录桌面

概述 最近发现ubuntu系统24.04.2的版本用着用着休眠熄屏后,突然登录不了,然后重启也进入不了桌面,显示如下: 按Ctrl + Alt + F3也进入不了tty控制台。 解决办法 重启系统进入

◷ 2025-09-16 📁 其他 👤 laumy 🔥 429 热度 💬 0 评论

ROS2实践:创建一个包和节点

准备 在ROS2中什么是包,什么是节点? 包(Package) 是 ROS 2 的基本构建单元,包含了代码、资源、配置和依赖,组织着机器人的各个功能模块。这个packge可以理解为openwrt的

◷ 2025-09-15 📁 ROS系统 👤 laumy 🔥 421 热度 💬 0 评论

ROS2安装:ubuntu 24.04.2上实践

前言 本文在unbuntu 24.04.2系统上搭建ROS2系统。 No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04.2 LTS Release: 24.04 Codename: noble 设置编码格式 locale # check for …

◷ 2025-09-15 📁 ROS系统 👤 laumy 🔥 696 热度 💬 0 评论

ubuntu apt 命令

介绍 apt是ubuntu/debian的包管理工具,主要用于安装、更新、卸载和管理系统软件,他是对apt-get和apt-cache的简化整合,输出更直观。 常用的apt命令 sudo apt up

◷ 2025-09-12 📁 其他 👤 laumy 🔥 541 热度 💬 0 评论

Isaac Sim 快速入门:三种工作流程示例

简介 如果是NVIDIA Isaac Sim的新用户,可以按照本文的两个示例来体验Isaac Sim。本文主要提供Isaac Sim基础使用教程、机器人基础教程。 在快速入门教程中,所有可通过 GUI 执行的

◷ 2025-09-11 📁 Ai应用 👤 laumy 🔥 1880 热度 💬 0 评论

Isaac Sim v5.0.0:探索AI 机器人仿真平台

什么是isaac sim NVIDIA Issac Sim是一款基于NVIDIA omniverse构建的参考应用应用程序,使开发人员能够在基于物理的虚拟环境开发、模拟和测试AI机器人。 设计 Isaac Sim提供了一系列工

◷ 2025-09-10 📁 Ai应用 👤 laumy 🔥 2020 热度 💬 0 评论

解决ubuntu安装搜狗输入闪烁

切换使用Xorg显示 之所以要切换Xorg显示是因为搜狗输入如果使用wayland显示,切到中文会一直闪烁,因此需要使用Xorg显示。 echo $XDG_SESSION_TYPE 先检查当前是那种图像绘画,如果打印是x11则

◷ 2025-09-10 📁 其他 👤 laumy 🔥 320 热度 💬 0 评论

什么是ROS:机器人操作系统快览随记

ROS的秘诀 梳理出有什么节点,每个节点的输入和输出是什么? 环境搭建 catkin vscode ROS插件、bracket pair colorizer 2 terminator sudo apt install terminator CRTL+ALT+T启动 CRTL+SHIFT+E左右分屏 CRTL+S

◷ 2025-09-08 📁 ROS系统 👤 laumy 🔥 602 热度 💬 0 评论

ubuntu英伟达显卡驱动安装

环境准备 sudo apt update sudo apt install build-essential dkms linux-headers-$(uname -r) sudo apt autoremove 卸载原驱动 sudo apt-get remove --purge '^nvidia-.*' sudo apt-get autoremove #重新生 …

◷ 2025-09-07 📁 其他 👤 laumy 🔥 204 热度 💬 0 评论

NVIDIA Jetson平台简介:机器人和边缘AI

简介 NVIDIA Jetson平台提供用于开发和部署AI赋能机器人、无人机、IVA(Intelligent Video Analytics,智能视频)应用和自主机器的工具。在边缘生成式AI、NVIDIA M

◷ 2025-09-04 📁 Ai应用 👤 laumy 🔥 918 热度 💬 0 评论

Jetson nano平台随记

环境准备 烧录镜像 下载NVIDIA jetson nano镜像,其镜像是基于ubuntu18.04修改。使用开源的balenaEtcher烧录器写到SD卡上,然后插卡启动 网络准备 买一个无线网卡然后

◷ 2025-09-04 📁 Ai应用 👤 laumy 🔥 179 热度 💬 0 评论

网站github page同步

准备 下载同步的仓库 mkdir blog git clone git@github.com:laumy0929/wordpress-export-to-markdown.git git clone git@github.com:laumy0929/notes.git git clone …

◷ 2025-08-26 📁 前后端 👤 laumy 🔥 198 热度 💬 0 评论

LeRobot SmolVLA:从训练到推理链路剖析

框架 本文主要对lerobot SmolVLA策略代码进行分析,下面是策略实现关键部分框图。 SmolVLAPolicay类封装向上提供策略的调用。SmolVLAConfig是对Smol

◷ 2025-08-25 📁 lerobot 👤 laumy 🔥 1745 热度 💬 0 评论

从数学角度理解flow matching中的线性插值

什么是插值 插值的核心问题是:在已知两个点的情况下,如何找到它们之间的中间点。 举个人走路的例子,起点在家门口(A点),终点在公司(B点),总的路程为1000米,假设人是匀速移动,如果

◷ 2025-08-24 📁 算法模型 👤 laumy 🔥 361 热度 💬 0 评论

浅析Pi0 :VLM 与 Flow Matching 的结合之道

概述 传统机器人策略模型往往局限在单一任务或平台,难以跨场景泛化。与此同时,大规模 视觉-语言模型(VLM) 已展现出卓越的语义理解与任务指令解析能力。如果能将 VLM 的语义理解能力 与 Flow Matching 的连

◷ 2025-08-22 📁 算法模型 👤 laumy 🔥 1268 热度 💬 0 评论

Flow Matching:让生成模型“流动”起来

背景 上一篇文章分析了diffusion扩散模型。diffusion扩散模型做法是加噪声、再一步步去噪,训练过程复杂,还需要 carefully 设计噪声调度。 Flow Matching提出了更直接的方式:与其

◷ 2025-08-22 📁 算法模型 👤 laumy 🔥 2039 热度 💬 0 评论

视觉 Token 如何注入语言模型?VLM拆解

VLM与LLM 如果说我们有一张图片、一个图表想让大模型来帮忙理解那应该要怎么实现了? 标准的LLM语言大模型只能处理文本序列,是不能够读取图像的,如果没有办法将视觉的数据转换为LLM

◷ 2025-08-20 📁 算法模型 👤 laumy 🔥 1326 热度 💬 0 评论

解读ViT:Transformer 在视觉领域如何落地

背景 计算机视觉领域,一直都是卷积天下。传统的卷积神经网络(CNN)依赖于卷积核提取局部特征,效果很好,但是也有一些不足,如需要人工设计卷积结构包括卷积核大小和层数,另外就是难以捕捉

◷ 2025-08-19 📁 算法模型 👤 laumy 🔥 425 热度 💬 0 评论

lerobot之smolvla体验

环境安装 pip install -e ".[smolvla]" 在原来lerobot的环境基础上。 启动训练 本文主要是记录复现lerobot smolvla策略的效果,为了快速看到效果,这里不进行采集数据了,直接用此前ACT采集的数

◷ 2025-08-18 📁 lerobot 👤 laumy 🔥 797 热度 💬 0 评论

dataset和DataLoader

简介 Dataset和DataLoader在pytorch中主要用于数据的组织。这两个类通常一起搭配处理深度学习中的数据流。 Dataset 用于产出“单个样本”:定义怎么按索引取到一个样本,以及总

◷ 2025-08-08 📁 Ai应用 👤 laumy 🔥 510 热度 💬 0 评论

数据维度

维度是什么 维度=数据需要“几个”索引才能定位到一个元素,也叫做轴数(axis)或阶(rank)。 可以看成"套盒子"的层数,盒子里面装盒子,再装数字。每多一层外括

◷ 2025-08-08 📁 Ai应用 👤 laumy 🔥 1096 热度 💬 0 评论

建图导航ROS2包输入和输出节点

SLAM 2D 激光:slam_toolbox (1)安装启动 sudo apt update sudo apt install ros-jazzy-slam-toolbox ros2 launch slam_toolbox online_async_launch.py (2)输入输出 ros2 node info /slam_toolbox …

◷ 2025-08-05 📁 ROS系统 👤 laumy 🔥 197 热度 💬 0 评论

lerobot ACT实现分析

配置类ACTConfig @PreTrainedConfig.register_subclass("act") @dataclass class ACTConfig(PreTrainedConfig): # 输入/输出结构 chunk_size: int = 100 # 动作块长度(每次预测的动作序列长度) n_action_steps: int = 100 …

◷ 2025-08-04 📁 lerobot 👤 laumy 🔥 818 热度 💬 0 评论

具身智能ACT算法

基本原理 简单总结一下什么是ACT算法。传统的机器算法过程是观测关节位置J1经过模型预测动作A2然后执行,观测到J2预测数A3,观测到J3遇到A4依次类推,这样就有一个问题,假设预测

◷ 2025-08-03 📁 算法模型 👤 laumy 🔥 1042 热度 💬 0 评论

lerobot学习率调度器

学习率调度器简介 是什么 学习率调度器(Learning Rate Scheduler)是深度学习训练中动态调整优化器学习率的工具(注意是在优化器的基础上动态调整学习率),通过优化收敛过程提升模

◷ 2025-08-02 📁 lerobot 👤 laumy 🔥 298 热度 💬 0 评论

lerobot策略优化器

torch.optim简介 在学校lerobot的策略优化器前,我们先再复习一下什么是优化器。 什么优化器 优化器官方解释就是在深度学习中让损失函数通过梯度下降思想逐步调整参数以达到最小

◷ 2025-08-02 📁 lerobot 👤 laumy 🔥 432 热度 💬 0 评论

lerobot训练

初始化 @parser.wrap() def train(cfg: TrainPipelineConfig): cfg.validate() # 验证配置合法性(如路径、超参数范围) init_logging() # 初始化日志系统(本地文件+控制台输出) if cfg.seed is not None: set_seed(cfg.seed) # 固定随机种 …

◷ 2025-07-30 📁 lerobot 👤 laumy 🔥 863 热度 💬 0 评论

lerobot录制

简介 lerobot record是关键核心流程,其包括了数据的采集和模型推理两部分。 如果是数据采集模式,命令启动如下 python -m lerobot.record \ --robot.disable_torque_on_disconnect=true \ --robot.type=so101_follower \ …

◷ 2025-07-29 📁 lerobot 👤 laumy 🔥 2133 热度 💬 0 评论

python补习

装饰器 函数装饰器 什么是装饰器 装饰器是python的一种高级语法,本质上是函数包装器,可以在不修改函数代码的前提下为函数添加额外功能如日志记录、性能计时、权限校验,也可以修改函数的输

◷ 2025-07-29 📁 语言 👤 laumy 🔥 1015 热度 💬 0 评论

lerobot示教

启动 示教的功能主要是主臂控制,从臂跟随,在数据采集是非常的一环。下面是模块启动的执行命令: python -m lerobot.teleoperate \ --robot.type=so101_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=R12252801 \ …

◷ 2025-07-28 📁 lerobot 👤 laumy 🔥 597 热度 💬 0 评论

配置代理

手机给电脑配置 手机设置 打开设置 设置IP地址,启用共享,注意这个ip地址设置跟电脑同一个局域网。 通过上面的步骤,手机的就启动的代理设置了代理服务为:192.168.0.29:1082

◷ 2025-07-25 📁 其他 👤 laumy 🔥 287 热度 💬 0 评论

lerobot设备标定

why calibrate 先来看看标定后的数据 { "shoulder_pan": { #肩部旋转关节 "id": 1, "drive_mode": 0, "homing_offset": -1620, "range_min": 1142, "range_max": 2931 }, "shoulder_lift": { #肩部升降关节 "id": 2, …

◷ 2025-07-25 📁 lerobot 👤 laumy 🔥 472 热度 💬 0 评论

模型训练GPU跑飞

问题 当前使用的是魔改版的NVIDIA 2080 Ti 22G显卡,发现在模型训练过程中,跑着跑着就报错了,具体如下: raceback (most recent call last): File "/home/laumy/lerobot/./src/lerobot/scripts/train.py", line 291, in <module> …

◷ 2025-07-25 📁 lerobot 👤 laumy 🔥 307 热度 💬 0 评论

安装unbuntu双系统

准备 本文只作为个人安装简单记录,不做详细过程,如果是新手,可不必花时间再往下阅读。 准备一个16G以上的U盘,安装过程中跟实际的笔记本硬件会差异比较大。 下载ubuntu镜像 先下载ub

◷ 2025-07-24 📁 其他 👤 laumy 🔥 341 热度 💬 0 评论

lerobot搭建

设备查询 本文是记录ubuntu系统lerobot试验的快捷命令,方便开始负责执行设备,不会介绍为什么? python -m lerobot.find_port sudo chmod +666 /dev/ttyACM0 /dev/ttyACM1 python -m lerobot.find_cameras 机器标定 从臂标定 python -m …

◷ 2025-07-23 📁 lerobot 👤 laumy 🔥 804 热度 💬 0 评论

ONNX Runtime C++端侧模型部署YOLOv5

加载准备 初始化ONNXRuntime环境 Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "YOLOv5Inference"); Ort::Env 是 ONNX Runtime C++ API 中用于初始化运行环境的类,有多个重载的构造函数,下面是一个构造函数原型及参数作用如下。 Ort::Env( …

◷ 2025-07-22 📁 Ai应用 👤 laumy 🔥 1350 热度 💬 0 评论

pip install

是什么 pip install 是python包管理器,用于python软件包的下载、安装、卸载等功能。 怎么用 在线安装 pip install 软件包名 pip install 软件包名==版本号 例如pip install requests,或pip install reque

◷ 2025-07-22 📁 Ai应用 👤 laumy 🔥 306 热度 💬 0 评论

ONNX Runtime Python端侧模型部署YOLOv5

ONNX Runtime介绍 ONNX Runtime不依赖于Pytorch、tensorflow等机器学习训练模型框架。他提供了一种简单的方法,可以在CPU、GPU、NPU上运行模型。通常ONNX

◷ 2025-07-21 📁 Ai应用 👤 laumy 🔥 1087 热度 💬 0 评论

端侧vscode AI开发环境搭建

PC上安装vscodium 下载安装vscodium,https://vscodium.com/ 安装Open Remote - SSH插件。 可能要等等比较久,跟网络有关系,如果还是安装不了,可以参考

◷ 2025-07-20 📁 Ai应用 👤 laumy 🔥 222 热度 💬 0 评论

llama.cpp部署大模型

安装llama.cpp 从GitHub上下载官方的源码。 git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp 使用camke进行编译,先创建build环境 cmake -B build 发现有报错curl没有安装。 -- The C compiler identification …

◷ 2025-07-19 📁 Ai应用 👤 laumy 🔥 1161 热度 💬 0 评论

transformer

模型结构 transform使用了自注意力机制,由编码器和解码器组成。 编码器 transformer的编码器输入一排向量,输出另外一排同样长度的向量。transformer的编码中加入

◷ 2025-07-18 📁 算法模型 👤 laumy 🔥 510 热度 💬 0 评论

自注意力机制

运作原理 自注意力机制要解决的是让机器根据输入序列能根据上下文来理解。举个例子,输入句子为"我有一个苹果手机",对于机器来说这里的"苹果"应该

◷ 2025-07-17 📁 算法模型 👤 laumy 🔥 327 热度 💬 0 评论

YOLOv5端侧部署代码分析

模型流程 1. NPU初始化 NpuUint npu_uint; int ret = npu_uint.npu_init(); 2.根据传入的模型文件,创建网络 NetworkItem yolov5; status = yolov5.network_create(model_file, network_id); vip_create_network() …

◷ 2025-07-16 📁 Ai应用 👤 laumy 🔥 200 热度 💬 0 评论

端侧部署YOLOv5模型

导出 ONNX模型 python export.py --weights runs/train/exp2/weights/ NPU不支持动态输入,使用onnxim工具进行转换为固定输入,先安装onnxsim工具。 pip install onnxsim -i https://pypi.doubanio.com/simple/ 接着进行转换 python -m …

◷ 2025-07-15 📁 Ai应用 👤 laumy 🔥 465 热度 💬 0 评论

云服务器搭建YOLOv5训练环境

介绍 本文使用AutoDL云服务搭建YOLOv5的运行环境。 获取云服务器 在这个链接上https://www.autodl.com/home订阅服务,这里选择的是按量计费。 镜像选择基础

◷ 2025-07-14 📁 Ai应用 👤 laumy 🔥 727 热度 💬 0 评论

YOLOv2和YOLOv3

YOLOv2 回顾一下YOLOv1有哪些缺陷? 边界框训练时回归不稳定,导致定位误差大。 每个网格只能预测两个边界框且只能识别一类目标。 小目标检测效果差。 针对以上的问题,YOLOv2进行了改进,下

◷ 2025-07-13 📁 算法模型 👤 laumy 🔥 678 热度 💬 0 评论

YOLOv1目标检测原理

介绍 YOLO在目标视觉检测应用广泛,You Only Look Once的简称。作者期望YOLO能像人一样只需要看一眼就能够立即识别其中的物体、位置及交互关系。能够达到快速、实时检测的效果。 YOLO

◷ 2025-07-12 📁 算法模型 👤 laumy 🔥 991 热度 💬 0 评论

opencv视频流

环境准备 本文通过采集USB摄像头来示例说明 export LD_LIBRARY_PATH=/mnt/extsd/usr/lib:$LD_LIBRARY_PATH #指定库的路径 cat /sys/devices/platform/soc/usbc0/usb_host #激活USB host 摄像头采集 摄像头相关的主要使用的是VideoCapture类。 …

◷ 2025-07-11 📁 opencv 👤 laumy 🔥 402 热度 💬 0 评论

opencv图像处理

图像滤波 图像的滤波核心是使用一个小的矩阵(滤波器或卷积核)在图像上进行滑动卷积,将计算得到的结果作为目标像素的值。 均值滤波 cv::blur(InputArray src, OutputArray dst, Size ksize, Point anchor = Point(-1,-1), int borderType = BORDER_DEFAULT); …

◷ 2025-07-11 📁 opencv 👤 laumy 🔥 364 热度 💬 0 评论

opencv基础操作

图像的读取和显示 读写图像 cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR); 使用imread函数读取图像,第一个参数是图像文件的路径,第二个参数是解释图像的颜色和格式(如彩色图像、灰度图像等)。第二个参数可省略,默认是cv

◷ 2025-07-11 📁 opencv 👤 laumy 🔥 327 热度 💬 0 评论

优化算法

局部最小与全局最小 对应任何目标函数f(x),当然这里的目标函数可以是损失函数。如果在x处对应的f(x)小于x附近任意点的f(x),那么f(x)是局部最小的。如果f(x)在x处的值是

◷ 2025-07-10 📁 深度学习 👤 laumy 🔥 740 热度 💬 0 评论

全连接层与卷积层参数计算

层的概念 在前面http://www.laumy.tech/2013.html有说明"层与块"概念,为了加深影响,本章再简要概括一下深度学习中常见的层。 在深度学习

◷ 2025-07-09 📁 深度学习 👤 laumy 🔥 957 热度 💬 0 评论

计算机视觉

图像增广 什么是图像增广?图像增广(Image Augmentation)是通过对原始图像进行一系列随机变换(如旋转、裁剪、颜色调整等)生成多样化样本的数据增强技术,旨在扩充训练数据集

◷ 2025-07-08 📁 深度学习 👤 laumy 🔥 467 热度 💬 0 评论

现代卷积神经网络

深度卷积神经网络AlexNet AlexNet相对LeNet的特点就是层数变得更深了,参数变得更多了。AlexNet由八层组成:五个卷积层、两个全连接隐藏层和一个全连接输出层。Ale

◷ 2025-07-07 📁 深度学习 👤 laumy 🔥 437 热度 💬 0 评论

卷积神经网络CNN

图像卷积 图像卷积是有一个卷积核,这个卷积核对输入做相关运算。卷积核从输入的张量左上角开始、从左到右、从上到下进行滑动,每到一个位置时,在该窗口的部分张量与卷积核做点积得到一个输出。

◷ 2025-07-06 📁 深度学习 👤 laumy 🔥 452 热度 💬 0 评论

层与块

简单来说,如下图,第一个图中间5个神经元组成了一个层。第二图3个层组成了块。第三个图中3个块组成了整个模型。 层 层是神经网络的基本计算单元,负责对输入数据进行特定形式的变换,如线性映

◷ 2025-07-05 📁 深度学习 👤 laumy 🔥 463 热度 💬 0 评论

Windows Ai开发环境安装

annaconda可以理解为ai环境可以创建很多个房间,比如允许多个不同版本的python。每个房间可以保存不同的环境变量。 步骤1:下载安装包,安装anaconda,https:/

◷ 2025-07-05 📁 Ai应用 👤 laumy 🔥 186 热度 💬 0 评论

前向传播、反向传播和计算图

前向传播(Forward Propagation) 前向传播是神经网络中从输入数据到输出预测值的计算过程。它通过逐层应用权重(W)和偏置(b),最终生成预测值 $y’ $,并计算损失函数$L $

◷ 2025-07-04 📁 深度学习 👤 laumy 🔥 394 热度 💬 0 评论

梯度计算

什么是梯度 梯度(Gradient)是用于描述多元函数在某一点的变化率最大的方向及其大小。在深度学习中,梯度被广泛用于优化模型参数(如神经网络的权重和偏置),通过梯度下降等算法最小化

◷ 2025-07-03 📁 深度学习 👤 laumy 🔥 457 热度 💬 0 评论

激活函数

概念 前面我们主要使用的是线性模型,但是线性模型有很多局限性,因为我们要建模的问题并不能单纯使用线性模型就能够拟合的,如下示例。 我们要拟合红色部分的函数,使用线性模型即使在怎么调整W

◷ 2025-07-02 📁 深度学习 👤 laumy 🔥 441 热度 💬 0 评论

sotfmax回归实现

什么是sotfmax回归 Softmax回归(Softmax Regression),也叫多项逻辑回归,是一种用于多分类问题的分类算法。它是对逻辑回归(Logistic Regressi

◷ 2025-07-01 📁 深度学习 👤 laumy 🔥 390 热度 💬 0 评论

线性回归实现

线性回归 线性回归模型根据给定的数据集和对应的标签,通过一个函数模型来拟合数据集以及对应标签的映射关系。而这个模型可以设置为y=wx+b的一个函数,其中x和w是一个向量。目标就是找出

◷ 2025-07-01 📁 深度学习 👤 laumy 🔥 388 热度 💬 0 评论

perf工具使用

perf介绍 perf 是一个强大的 Linux 性能分析工具,广泛用于分析程序的性能瓶颈,帮助开发者进行调优。perf 工具能够收集并分析多种硬件和软件事件,包括 CPU 的指令执行、缓存命中与失误、上下文切换

◷ 2025-05-14 📁 性能工具 👤 laumy 🔥 1045 热度 💬 0 评论

非暴力沟通

非暴力沟通要素 观察: 不带评论的观察 感受:体会(对方)和表达(自己)感受(区分想法和感受) 需要:体会(对方)和表达(自己)需求 请求:体会(对方)和表达(自己)请求(一定是要具体的请求

◷ 2025-05-06 📁 阅读 👤 laumy 🔥 424 热度 💬 0 评论

站点centos系统迁移ubuntu系统

概述 本站点最早使用的是centos系统,但是该系统官方不再更新维护了,随最近将服务器的系统更换为ubuntu系统,先记录站点的迁移过程。 迁移要点 由于本站点主要是基于php+ngin

◷ 2025-04-20 📁 前后端 👤 laumy 🔥 146 热度 💬 0 评论

站点开源

Laumy Fresh Theme 本站点是基于wordpress设计,现开源其主题代码,让感兴趣的爱好者直接可复用。源码地址:https://github.com/laumy0929/wd-laumy-fre

◷ 2025-04-19 📁 前后端 👤 laumy 🔥 372 热度 💬 0 评论

小智Ai语音交互简要分析

app start 主要是初始化板级、显示、WiFi连接、音频codec、编解码、协议、音效、唤醒几个环节。 auto& board = Board::GetInstance(); //获取板级实例 SetDeviceState(kDeviceStateStart

◷ 2025-04-03 📁 Ai应用 👤 laumy 🔥 1257 热度 💬 0 评论

C++回顾

平时用C++比较少,最近项目需要用到C++,现简单再回顾一下。 单例模式 在某些场景下,一个类只需要有一个实例就足够了,例如配置管理类、日志记录器、数据库连接池等。使用单例模式可以避免

◷ 2025-03-27 📁 语言 👤 laumy 🔥 509 热度 💬 0 评论

裁剪脚本

查找当前目录大于指定大小 #!/bin/bash # 遍历当前目录及子目录中的所有文件 find . -type f -exec du -b {} + | while read size file; do # 如果文件大小为50KB(即50 * 1024字节) if [ "$size" -gt 51200 ]; then echo "文件: $file, 大 …

◷ 2025-03-18 📁 调试 👤 laumy 🔥 300 热度 💬 0 评论

2条命令本地部署deepseek

环境是centos,下面是部署步骤。 命令1: 安装ollama 安装命令:curl -fsSL https://ollama.com/install.sh | sh 安装日志: >>> Cleaning up old version at /usr/local/lib/ollama >>> Installing ollama to /usr/local …

◷ 2025-02-10 📁 Ai应用 👤 laumy 🔥 763 热度 💬 0 评论

docker常用命令速记

1. 镜像管理 (Images) 功能 命令 示例 拉取镜像 docker pull <image>:<tag> docker pull nginx:latest 查看本地镜像 docker images docker images 删除镜像 docker rmi <image_id> docker rmi fce28 构建镜像 docker build …

◷ 2025-01-22 📁 其他 👤 laumy 🔥 222 热度 💬 0 评论

nvidia jetson nano刷固件

下载刷机软件 主要以ubuntu系统为例,下面是下载地址。 https://developer.nvidia.com/sdk-manager 下载完成使用dpkg进行安装 dpkg -i sdkmanager_2.4.0-13235_amd64.deb 机器进入烧录模式 短接这两个pin,然后电源上电就进入了烧录模式,接着使用type-USB

◷ 2025-01-21 📁 调试 👤 laumy 🔥 281 热度 💬 0 评论

豆包大模型接入体验

前置条件 需要先创建获得API key和创建推理接入点。 API key获取 https://www.volcengine.com/docs/82379/1361424#f79da451 创建推理接入点 https://www.volcengine.com/docs/82379/1099522 安装python环境 python版本需要安装到Python …

◷ 2025-01-01 📁 Ai应用 👤 laumy 🔥 2739 热度 💬 0 评论

MacBook上ubuntu虚拟机共享

步骤1: 安装paralles tools 步骤2:执行install安装 报错处理 一通操作还是不行,原因是paralles tools没有匹配当前的内核版本,只能升级parallel 版本了。或者升

◷ 2025-01-01 📁 其他 👤 laumy 🔥 346 热度 💬 0 评论

emqx通过REST API获取设备是否在线

本文通过emqx REST API的方式来进行配置 创建一个API密钥 记录密钥的名称 API key是用户名称,Secret KEY是密码 浏览器登录验证 用户名就是 API Key,密码就是Secret KEY. 登录上之

◷ 2024-12-16 📁 前后端 👤 laumy 🔥 694 热度 💬 0 评论

基于nodejs搭建jsonp环境

安装 安装 Node.js 和 npm:执行以下命令安装 Node.js 和 npm: yum install -y nodejs 创建工程 步骤1: 创建一个新的Node.js项目目录,并进入该目录: mkdir jsonp-server cd jsonp-server 步骤2:初始化Node.js项目,并安装Expre

◷ 2024-12-15 📁 其他 👤 laumy 🔥 364 热度 💬 0 评论

webrtc网页代码分析二

交互流程 上图是完整的处理流程。 获取URL参数 const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); const deviceId = urlParams.get('deviceId'); 这段代码先获取当前页面 URL …

◷ 2024-12-14 📁 前后端 👤 laumy 🔥 486 热度 💬 0 评论

webrtc网页代码分析一

文档结构 <!doctype html> <html lang="en"> <head> ... </head> <body> ... </body> </html> 文档类型声明( ):声明文档使用HTML5标准。 html标签:设置文档的语言为英语(lang=\en\)。 head标签:包含元数据、样式、外部链接等,定

◷ 2024-12-14 📁 前后端 👤 laumy 🔥 456 热度 💬 0 评论

javascript之dom

什么是dom DOM(Document Object Model)是一个编程接口,它将 HTML 或 XML 文档呈现为一个由节点和对象(这些节点和对象其实是文档的各种元素、属性和文本内容等)组成的树形结构。这个树

◷ 2024-12-14 📁 前后端 👤 laumy 🔥 401 热度 💬 0 评论

快速搭建一个可访问的网页

简介 搭建网站需要以下几个组件, Web服务器(如Apache、Nginx):它是网页能够被访问的核心组件。当用户在浏览器中输入网站的域名或 IP 地址并请求访问网页时,Web 服务器软件会接

◷ 2024-12-13 📁 前后端 👤 laumy 🔥 497 热度 💬 0 评论

openwrt规则编译cmake软件包

软件包中有完整CMakelists.txt include $(TOPDIR)/rules.mk PKG_NAME:=usrsctp PKG_VERSION:=0.9.5.0 PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:= …

◷ 2024-12-11 📁 其他 👤 laumy 🔥 670 热度 💬 0 评论

Cmake构建模版

基础示例 # 最低 CMake 版本要求 cmake_minimum_required(VERSION 3.16) # 定义工程名称和语言 project(mlink_device VERSION 1.0.0 LANGUAGES C) # ============================================ # 收集源码文件 # …

◷ 2024-12-01 📁 调试 👤 laumy 🔥 551 热度 💬 0 评论

STUN协议

NAT墙 完全锥形 IP限制型锥形 端口限制型锥形 对称型 NAT穿透 STUN协议简介 STUN(Session Traversal Utilities for NAT)是一个用于帮助客户端发现其所在NAT之后的公网IP地址和端口号。通

◷ 2024-11-26 📁 网络 👤 laumy 🔥 993 热度 💬 0 评论

libpeer分析

关键数据结构 PeerConfiguration typedef struct PeerConfiguration { IceServer ice_servers[5]; MediaCodec audio_codec; MediaCodec video_codec; DataChannelType datachannel; void …

◷ 2024-11-24 📁 网络 👤 laumy 🔥 1955 热度 💬 0 评论

乌龟图分析法

结构形似乌龟,身体是主体,头尾脚代表着互相关联的六个要素。 身体:代表过程、活动。 头部:达标input,即过程的要求,是分析的关键。 左前脚:代表Procedure,指的操作的方法,怎

◷ 2024-11-24 📁 阅读 👤 laumy 🔥 472 热度 💬 0 评论

看wireshark报文技巧

TCP握手与挥手 握手看SYNC与ACK 第一次握手[SYNC]标志, 第二次握手看[SYNC,ACK]标志,第三次ACK。 挥手看FIN 报文交互 正常交互 先看len,当长度为0,这个包是a

◷ 2024-11-23 📁 网络 👤 laumy 🔥 410 热度 💬 0 评论

MQTT协议分析

什么是MQTT MQTT是基于TCP/IP网络协议栈构建的异步通信消息协议,基于发布-订阅模式进行传输。实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中, MQTT协议中有三

◷ 2024-11-23 📁 网络 👤 laumy 🔥 1236 热度 💬 0 评论

SSL/TLS协议分析

什么是TLS 1994: SSL 1.0 NetScape公司提出SSL第一版,未公开。 1995: SLL 2.0 公开发布了第二版,与2011年弃用。 1996: SSL 3.0 第三版得到大规模应,于2015年弃用。 1999: TLS 1.0 RFC2246,被IET

◷ 2024-11-22 📁 网络 👤 laumy 🔥 1369 热度 💬 0 评论

SSL证书更新

获取免费证书 下载证书 下载证书文件 解压后的文件如下 安装证书 步骤1: 登录服务器,找到证书路径,可以使用nginx -t查找证书路径。 [root@laumy conf.d]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: …

◷ 2024-11-16 📁 前后端 👤 laumy 🔥 376 热度 💬 0 评论

Linux系统编译生成镜像流程

编译内核 清除内核 命令 ${MAKE} O= mrproper 示例 make CROSS_COMPILE=riscv32-unknown-linux- ARCH=riscv -j16 O=kernel/build KERNEL_SRC=kernel/linux-5.4 INSTALL_MOD_PATH=kernel/staging O= mrproper …

◷ 2024-11-15 📁 调试 👤 laumy 🔥 567 热度 💬 0 评论

vscode设置

鼠标滚轮代码大小调整 代码前进后退 C/C++代码跳转 需要安装C/C++插件,如果是cursor的话安装clangd插件,安装完之后,先make clean,然后本地执行:bear – ma

◷ 2024-11-15 📁 其他 👤 laumy 🔥 369 热度 💬 0 评论

随记

书籍: 《麦肯锡意识》 领导力技能 领导技能:新职务需要的能力 时间管理:时间分配结构,决定如何工作 工作理念:信念和价值观,让工作聚焦 不同维度的示例 领导力技能 领导技能:新职务需要的能力 时间

◷ 2024-11-14 📁 阅读 👤 laumy 🔥 395 热度 💬 0 评论

I2C协议总结

简介 以下是 I2C 总线的一些特性: 只需要两条线;串行数据线(SDA)和串行时钟线(SCL)。 连接到总线的每个设备都可以通过唯一的地址进行软件寻址简单的控制器/目标关系始终存在;控制器可以

◷ 2024-10-31 📁 外设 👤 laumy 🔥 656 热度 💬 0 评论

第一性原理

从"经验思维"切换"原理思维" 大多数人遇到问题,直接想到的是"别人怎么做",“有什么经验”,&l

◷ 2024-10-10 📁 阅读 👤 laumy 🔥 209 热度 💬 0 评论

系统死机排查思路

反汇编现场寄存器 kasan watchpoint: 针对固定位置 栈溢出检测: cache:检查地址对齐、长度对齐(少/多刷,少/多无效)。 现象一般是watchpoint抓不到,软件复位无效,如U

◷ 2024-09-13 📁 RTOS 👤 laumy 🔥 353 热度 💬 0 评论

内存地址对齐

内存地址对齐是在内存中的数据(具体为变量的地址、内存块的地址)按照指定地址长度对齐,包含了基本的变量数据对齐和结构体数据对齐。 为什么需要内存对齐? 可以提高CPU和内存交互的效率,比

◷ 2024-09-03 📁 调试 👤 laumy 🔥 1129 热度 💬 0 评论

function graph tracer原理

概述 Function graph相对function trace的不同点是,在函数入口会trace,在函数出口也会trace。 ksys_read ->vfs_read ->ftrace_caller ->prepare_ftrace_return ->function_graph_enter …

◷ 2024-08-31 📁 性能工具 👤 laumy 🔥 573 热度 💬 0 评论

静态ftrace

上面章节主要描述的是动态ftrace,在早期还有静态ftrace。区别主要如下: - 动态ftrace与静态ftrace在编译参数方面静态编译使用的是参数“-pg”,而动态使用的是fp

◷ 2024-08-28 📁 性能工具 👤 laumy 🔥 448 热度 💬 0 评论

动态function tracer原理

fpatchable-function-entry选项 编译时指定-fpatchable-function-entry=N[,M],①会在函数入口第一个指令之前插入N个nop,但是会

◷ 2024-08-28 📁 性能工具 👤 laumy 🔥 804 热度 💬 0 评论

ftrace的使用

tracer irqsoff 当关闭中断时,CPU就无法响应中断了(NMI和SMI除外),无法响应外部事件做出反应。这会阻止定时器触发或鼠标中断触发,导致系统延迟。 irqsoff跟踪器跟踪中断被禁用的时间,

◷ 2024-08-27 📁 性能工具 👤 laumy 🔥 861 热度 💬 0 评论

ftrace-概述

ftrace是一个内部跟踪器,用于帮助开发人员查找内核正在发生的事情,它可用于调试或分析用户空间之外发生的延迟和性能问题。ftrace从名称上看是function trace,函数跟

◷ 2024-08-27 📁 性能工具 👤 laumy 🔥 700 热度 💬 0 评论

启动第一个应用进程

start_kernel ...... arch_call_rest_init() rest_init(); pid = kernel_thread(kernel_init, NULL, CLONE_FS); static int __ref kernel_init(void *unused) { int ret; …

◷ 2024-07-07 📁 RISC-V 👤 laumy 🔥 384 热度 💬 0 评论

挂载根文件系统

根文件系统是控制权从linux内核转移到用户空间的一个桥梁,文件系统的挂载需要提供挂载点,linux内核在初始化时汇初始化一个虚拟的“/”目录用于根文件系统的挂载。 start_kernel vfs_caches_init() mnt_init() init_rootfs() init_mount_tree() …

◷ 2024-07-07 📁 RISC-V 👤 laumy 🔥 1183 热度 💬 0 评论

异常初始化

异常处理概述 略 异常入口 start_kernel trap_init(); void __init trap_init(void) { /* * Set sup0 scratch register to 0, indicating to exception vector * that we are presently executing in the …

◷ 2024-07-07 📁 RISC-V 👤 laumy 🔥 311 热度 💬 0 评论

虚拟地址空间与物理地址空间完整映射

setup bootmem 物理内存都添加到系统之后,会调用setup_bootmem对整个物理内存进行整理,主要的工作就是remove掉一些no-map区域(不归内核管理),同时保留一些关键区域,如内核

◷ 2024-07-07 📁 RISC-V 👤 laumy 🔥 448 热度 💬 0 评论

使能MMU

① 多核情况使能MMU .Lsecondary_start: #ifdef CONFIG_SMP /* Set trap vector to spin forever to help debug */ la a3, .Lsecondary_park csrw CSR_STVEC, a3 slli a3, a0, LGREG la a1, …

◷ 2024-07-07 📁 RISC-V 👤 laumy 🔥 338 热度 💬 0 评论

临时虚拟地址空间映射

概述 为什么要做临时虚拟地址空间映射? 一旦开启MMU,PC的下一条指令地址会经过MMU转化,未开启MMU之前地址的翻译是不需要经过MMU转化直接访问。对应开启MMU之后,应该要使用虚

◷ 2024-07-07 📁 RISC-V 👤 laumy 🔥 655 热度 💬 0 评论

虚拟地址与物理地址概念

地址空间 虚拟地址:程序使用的内存地址;物理地址:硬件的地址空间。虚拟地址通过MMU转化为物理地址,虚拟地址的长度与实际的物理内存容量没有关系,从系统中每个进程的角度看,地址空间的进

◷ 2024-07-07 📁 RISC-V 👤 laumy 🔥 2176 热度 💬 0 评论

arch初始化

_start_kernel: /* Mask all interrupts */ csrw CSR_SIE, zero csrw CSR_SIP, zero ① 将sie,sip寄存器设置为0,关闭所有中断和清除中断的pending(不是异常)。 /* Load the global pointer */ .option push .option …

◷ 2024-07-07 📁 RISC-V 👤 laumy 🔥 328 热度 💬 0 评论

Linux系统RISC-V架构启动流程分析之概述

典型的linux系统启动流程如上,但本文主要探讨的是OS的启动流程,opensbi,uboot暂不涉及。主要围绕arch/riscv/kernel/head.S进行分析。 _start j _start_kernel _start_kernel arch

◷ 2024-07-07 📁 RISC-V 👤 laumy 🔥 1065 热度 💬 0 评论

Linux risc-v head.S调试记录

调试准备 gdb调试 0x0000000080200000为opensbi跳转执行的物理地址,linux内核的img会加载到这个地址运行,如果要在这个地方断点,就b *(0x000000

◷ 2024-06-13 📁 RISC-V 👤 laumy 🔥 964 热度 💬 0 评论

freertos内存管理

freertos一共有5种内存管理算法,heap3直接使用的是c库的管理算法,只是对c库封装了一层接口。本章节主要分析heap1、heap2、heap4; heap1 heap2 heap4 heap5 heap5与hea

◷ 2024-05-29 📁 RTOS 👤 laumy 🔥 983 热度 💬 0 评论

道德经

第一章 原文 道可道,非常道;名可名,非常名。 无名天地之始,有名万物之母。 故常无,欲以观其妙;常有,欲以观其徼(jiao,叫)。 此两者,同出而异名,同谓之玄。 玄之又玄,众秒之门。 译文 “

◷ 2024-05-26 📁 阅读 👤 laumy 🔥 711 热度 💬 0 评论

kasan原理

kasan是什么?(基本原理) kasan是用于内存检测的工具,能够检测内存以下异常。 buffer-overflow in heap,stack and globals use-after-free uninitialized-memory-read user-memory-access 如若要支持kasan需要多划分1/8的内存用于内存检测的管理,如上图 …

◷ 2024-05-24 📁 调试 👤 laumy 🔥 1078 热度 💬 0 评论

freertos栈溢出检测原理

portSTACK_GROWTH > 0:栈向上生长 portSTACK_GROWTH < 0: 栈向下生长,本章使用栈向下生长 打开 configRECORD_STACK_HIGH_ADDRESS 1,将PCB中将打开pxEndOfStack,结构如下。 adress:0+ulStackDepth ------------------- …

◷ 2024-05-24 📁 RTOS 👤 laumy 🔥 957 热度 💬 0 评论

RISC-V backtrace实现原理

start_kernel addi sp,sp,-16 ---① 分配栈帧sp=sp-16,sp指向栈顶 sw ra,12(sp) ---② 将ra存储到sp+12的位置 sw s0,8(sp) xxxxxx jal ra, 6000dba2 <backtrace> xxxxxx lw s0,8(sp) lw ra,12(sp) addi sp,sp,16 …

◷ 2024-05-21 📁 RISC-V 👤 laumy 🔥 483 热度 💬 0 评论

RISC-V动态链接实验

准备 实验环境 qemu linux启动环境: http://www.laumy.tech/1186.html 代码 动态库 cat swap.c #include <stdio.h> int shared = 1; int z; void swap(int *a, int *b) { …

◷ 2024-05-18 📁 RISC-V 👤 laumy 🔥 451 热度 💬 0 评论

opensbi分析(一)

引导Hart启动 _start: /* Find preferred boot HART id */ MOV_3R s0, a0, s1, a1, s2, a2 # 将a0,a1,a2的参数分别赋值为s0,s1,s2,这3个参数是前一阶段传入的参数。 # a0: hart id # a1: device tree # a2: struct …

◷ 2024-05-16 📁 RISC-V 👤 laumy 🔥 1463 热度 💬 0 评论

RISC-V架构与FreeRTOS任务栈变化

栈的基本概念 在FreeRTOS中,每个任务有一个全局的tskTCB实例,pxCurrentTCB指针指向的是正在运行的任务实例,有三个和栈相关的变量pxTopOfStack和pxS

◷ 2024-05-10 📁 RISC-V 👤 laumy 🔥 911 热度 💬 0 评论

平头哥E90X中断处理汇编部分

任务上下文保存 addi sp, sp, -portCONTEXT_SIZE store_x x1, 1 * portWORD_SIZE( sp ) store_x x5, 2 * portWORD_SIZE( sp ) store_x x6, 3 * portWORD_SIZE( sp ) store_x x7, 4 * portWORD_SIZE( sp …

◷ 2024-05-09 📁 RISC-V 👤 laumy 🔥 208 热度 💬 0 评论

平头哥E90X异常处理

上下文入栈保存 addi sp, sp, -portCONTEXT_SIZE ----开辟一段栈空间,这里的sp可能是主栈或任务栈 store_x x1, 1 * portWORD_SIZE( sp ) ----依次存储相关寄存器 store_x x5, 2 * portWORD_SIZE( sp ) store_x x6, 3 * …

◷ 2024-05-09 📁 RISC-V 👤 laumy 🔥 271 热度 💬 0 评论

平头哥E90X的head.S分析

关闭中断 /* disable interrupt */ li t0, MR_MIE --- t0=0x08 csrc mstatus, t0 --- mstatus = mstatus | ~t0 csrw mie, zero --- mie = zero mstatus第4bit清0,mie清0。 设置异常处理入口 /* setup the …

◷ 2024-05-09 📁 RISC-V 👤 laumy 🔥 345 热度 💬 0 评论

RISC-V指令集架构

简介 RISC-V是一个通用的指令集架构(ISA),ISA是底层硬件电路面向上层软件程序提供的一层接口规范,ISA定义了: 基本数据类型,BYTE/HALFWORD/WORD 寄存器 指令

◷ 2024-04-27 📁 RISC-V 👤 laumy 🔥 1309 热度 💬 0 评论

qemu-system-riscv64 virt平台ROM代码启动分析

为什么下面qemu启动elf时,text地址要从0x80000000开始? qemu-system-riscv64 -machine virt -cpu c910v -nographic -smp 1 -bios none -kernel xxx.elf 从memory mapping角度 下面是qemu virt平台的memory mapping …

◷ 2024-04-12 📁 RISC-V 👤 laumy 🔥 812 热度 💬 0 评论

RISC-V汇编指令

C源代码 unsigned int arithmetic(unsigned int a, unsigned int b) { unsigned int sum, diff, upper; sum = a + b; sum = sum + 2; diff = a - b; diff = diff -1; upper = 8192; return sum + …

◷ 2024-04-11 📁 RISC-V 👤 laumy 🔥 721 热度 💬 0 评论

HTML+CSS学习随记

HTML基本结构 示例1 <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\"> 1.这是 HTML 4.01 的文档类型声明,表示该文档遵循 HTML 4.01 标准。它告知浏览器页面的解析方式 <html …

◷ 2024-03-17 📁 语言 👤 laumy 🔥 351 热度 💬 0 评论

Javascript笔记

JS JS简介 JS实现网页交互过程 javascript: 1.让用户和网页进行交互 网站登录功能, 点击,弹出一个按钮 滚动加载 返回底部 2.交互三要素 目标:网页中的那些html元素 事件:触发了

◷ 2024-03-17 📁 语言 👤 laumy 🔥 352 热度 💬 0 评论

环境搭建

risc-v32入门 https://github.com/plctlab/riscv-operating-system-mooc/blob/main/README_zh.md 按照上面的进行搭建,工具链和qemu都不用编译,直接解压设置环境变量后可使用,需要注意的是ubuntu使用20.04以上版本。 对于asm下面的code编译方式

◷ 2024-03-09 📁 RISC-V 👤 laumy 🔥 988 热度 💬 0 评论

静态链接与动态链接

经过[ELF格式解析](http://www.laumy.tech/1085.html \“ELF格式解析\")章节描述,对ELF文件有了一定的了解,本章节继续

◷ 2024-01-15 📁 调试 👤 laumy 🔥 994 热度 💬 0 评论

ELF格式解析

编译过程 工具链把程序源文件翻译成可执行文件一般经理4个步骤:预处理、编译、汇编、链接。本章节关于静态链接和动态链接的过程主要就是在第4个过程。链接器会将输入目标文件(.o)经过加工

◷ 2024-01-14 📁 调试 👤 laumy 🔥 749 热度 💬 0 评论

SPI与DBI概念

SPI 标准SPI 标准SPI接口,4根线CS、CLK、MISO、MOSI。4根线都是单线传输,主机通过MOSI发送数据,设备通过MISO发送数据给主机。标准的SPI可以支持全双工(发和收

◷ 2024-01-10 📁 外设 👤 laumy 🔥 1651 热度 💬 0 评论

内存相关问题排查思路

最近在项目上遇到一个棘手问题,有一块内存在运行过程中概率性的被异常修改,由于牵扯到多方的应用程序,受限于调试手段排查了不少时间,现简单总结下遇到此类问题的排查思路。 添加额外的mag

◷ 2024-01-08 📁 RTOS 👤 laumy 🔥 453 热度 💬 0 评论

wordpress怎么被google,百度搜索到。

前置 先安装插件Yoast SEO,获取到XML 站点地图 Yoast SEO --》设置界面 --->API接口(拉到最下页面) 复制下面几个链接 然后登陆谷歌和百度添加到资源文件 谷歌 https://search.google.com/search-console/about?hl=zh-cn …

◷ 2023-12-06 📁 其他 👤 laumy 🔥 250 热度 💬 0 评论

内存测量

系统占用内存 free 旧版本free $ free total used free shared buffers cached Mem: 65960636 63933576 2027060 73392 1602076 32628548 -/+ buffers/cache: 29702952 36257684 Swap: 0 0 0 (1)第一行Mem:内存 …

◷ 2023-08-27 📁 内存管理 👤 laumy 🔥 733 热度 💬 0 评论

wordpress设定固定链接

仪表盘设置固定链接 wordpress仪表盘面板->设置->固定链接 这里选择自定义结构:htttps://your.domain.tech/%post_id%.html 网

◷ 2023-08-27 📁 其他 👤 laumy 🔥 308 热度 💬 0 评论

进程虚拟内存

进程虚拟地址空间 Executable and Linkable Format(ELF) 上图是可执行文件的内容结构图,由ELF header、program headers、各section、sections headers组成。

◷ 2023-08-26 📁 内存管理 👤 laumy 🔥 1003 热度 💬 0 评论

DMA与cache一致性

无DMA时:设备与内存之间数据搬运需要依靠CPU来完成。 有DMA时:DMA可以直接完成设备与内存直接的数据搬运,不需要cpu介入。 DMA的引入,优点是数据在内存和设备之间的搬运不需

◷ 2023-08-20 📁 内存管理 👤 laumy 🔥 2362 热度 💬 0 评论

连续内存分配器CMA

CMA,contiguous memory allocator是内存管理子系统的一个模块,其主要为了解决分配连续的物理内存。尽管有了伙伴系统、slab分配器以及相关的内存回收机制,但是对于一些驱动如camera、disp

◷ 2023-08-19 📁 内存管理 👤 laumy 🔥 1712 热度 💬 0 评论

slub分配器

伙伴系统内存分配是以物理页面4KB为单位,但是实际使用的时候不会一下使用到4KB。实际使用中很多情况会以字节为单位。因此为了更精确的划分使用内存,linux内核在伙伴系统之上使用s

◷ 2023-08-13 📁 内存管理 👤 laumy 🔥 479 热度 💬 0 评论

伙伴系统

相关结构体 核心结构体 struct pglist_data: 节点的描述,arm64 UMA架构中,只有一个节点。 struct zone node_zone[]:是一个数组,每个元素表示一个内存区域所对应的 struct zone 结构体。从名字可以看出,此数组

◷ 2023-07-22 📁 内存管理 👤 laumy 🔥 1424 热度 💬 0 评论

内存初始化之页表基本操作

页表级数 如何确定page table level?确定了VABITS和PAGES size之后,页表级数也可确定,根据内核的配置如下: config PGTABLE_LEVELS int default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36 default 2 if ARM64_64K_PAGES && …

◷ 2023-06-18 📁 内存管理 👤 laumy 🔥 586 热度 💬 0 评论

内存初始化基本概念

三级结构Node、Zone、Page Node与内存架构UMA、NUMA UMA架构(uniform memory acces) 一致内存访问,所有CPU访问内存都需要过总线,距离都是一样的,所以每个

◷ 2023-06-10 📁 内存管理 👤 laumy 🔥 931 热度 💬 0 评论

文件系统缓存

#To free pagecache echo 1 > /proc/sys/vm/drop_caches #To free dentry and inode cache echo 2 > /proc/sys/vm/drop_caches #To free pagecache,dentry cache,inode cache echo 3 > …

◷ 2023-06-05 📁 文件系统 👤 laumy 🔥 1202 热度 💬 0 评论

内存管理概述

地址空间 虚拟地址:程序使用的内存地址;物理地址:硬件的地址空间。虚拟地址通过MMU转化为物理地址,虚拟地址的长度与实际的物理内存容量没有关系,从系统中每个进程的角度看,地址空间的进

◷ 2023-06-04 📁 内存管理 👤 laumy 🔥 335 热度 💬 0 评论

一切皆文件之块设备驱动(五)

实验环境 准备 kernel version: linux 5.15 kernel module: 块设备:simpleblk.ko 文件系统:simplefs.ko application: 制作文件系统:mkfs.simplefs 步骤 1.加载块设备驱动:in

◷ 2023-06-04 📁 文件系统 👤 laumy 🔥 450 热度 💬 0 评论

一切皆文件之块设备驱动(四)

实验环境 kernel version: linux 5.15 kernel module: simpleblk.ko 参考上一章节 application:app_test 参考上一章节 块设备无文件系统方式读写 写数据 存储设备没有格式化挂载文件系统,那么对磁盘设备的操作会经过/de

◷ 2023-06-04 📁 文件系统 👤 laumy 🔥 1103 热度 💬 0 评论

一切皆文件之块设备驱动(三)

块设备驱动示例 #include <linux/blk_types.h> #include <linux/blkdev.h> #include <linux/device.h> #include <linux/blk-mq.h> #include <linux/list.h> #include <linux/module.h> #include …

◷ 2023-06-04 📁 文件系统 👤 laumy 🔥 730 热度 💬 0 评论

一切皆文件之块设备驱动(二)

打开块设备 mknod 块设备同样要使用mknod创建设备节点,这与字符设备一样。会调用到init_special_inode填充inode的file_operations,只不过块设备注册的

◷ 2023-06-04 📁 文件系统 👤 laumy 🔥 819 热度 💬 0 评论

一切皆文件之块设备驱动(一)

块设备驱动简介 在linux系统中,有3大驱动类型,分别是:字符设备驱动、块设备驱动、网络设备驱动。块设备驱动与文件系统有着密不可分的关系,块设备是文件系统实际的数据传输单位,通常存

◷ 2023-06-03 📁 文件系统 👤 laumy 🔥 553 热度 💬 0 评论

一切皆文件之字符设备

#include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #define DEVICE_NAME "mychardev" #define BUFFER_SIZE 1024 static char device_buffer[BUFFER_SIZE]; static …

◷ 2023-05-28 📁 文件系统 👤 laumy 🔥 316 热度 💬 0 评论

文件系统常见系统调用

上一章节中,我们编写了没有带磁盘设备的文件系统,了解了文件系统操作的大致流程,本章节我们继续在上一章节的基础上完善文件系统,并梳理从用户空间到内核空间大致的调用流程。实验的代码我们

◷ 2023-05-27 📁 文件系统 👤 laumy 🔥 306 热度 💬 0 评论

实现简单文件系统

文件系统注册与挂载 static struct file_system_type simplefs_fs_type = { .owner = THIS_MODULE, .name = "simplefs", .mount = simplefs_mount, .kill_sb = simplefs_kill_sb, }; static int __init …

◷ 2023-05-21 📁 文件系统 👤 laumy 🔥 934 热度 💬 0 评论

虚拟文件系统

Linux系统中支持多种不同的文件系统,为了是用户可以通过一个文件系统操作界面,对各种不同的文件系统进行操作,在具体的文件系统(ext2/ext4等)之上增加了一层抽象一个统一的虚

◷ 2023-05-20 📁 文件系统 👤 laumy 🔥 520 热度 💬 0 评论

文件系统磁盘管理

磁盘空间布局 Extx将磁盘划分为等份的若干区域(最后一个区域可能会小一些),这些区域称为块组(block group)。磁盘以块组为单位进行管理。每个块组再划分为相同大小的block

◷ 2023-05-14 📁 文件系统 👤 laumy 🔥 301 热度 💬 0 评论

文件系统基本概念

mount的机制是如何实现的? inode是如何分配的。磁盘inode和内存inode有什么区别? dentry缓存是怎么回事?如何管理? free命令中Cache和buff有什么区别?

◷ 2023-05-13 📁 文件系统 👤 laumy 🔥 340 热度 💬 0 评论

负载均衡之均衡

何时均衡 在linux内核中,有一些场景会触发任务均衡的分布在系统的各个cpu上,可以分为以下几个场景: 任务放置:task placement,fork创建的任务、sched_exec

◷ 2023-04-22 📁 进程调度 👤 laumy 🔥 563 热度 💬 0 评论

负载均衡之调度组和调度域

概述 从上一章节大概应该能够理解负载和利用率的区别了,当一个进程正在运行或者即使没有在cpu上运行,而在就绪队列中等待运行,那么他依旧消耗cpu的负载。这是合理的,因为cpu的就绪队

◷ 2023-04-16 📁 进程调度 👤 laumy 🔥 1059 热度 💬 0 评论

负载均衡之负载跟踪

各任务负载、各cpu的算力(频率+架构)、任务迁移开销(调度域,调度组)。 root@Linux:/# cat /proc/loadavg 3.49 3.43 3.54 4/131 3065 cat /proc/loadavg可以获取CPU全局平均负载,前面的三个值分别表示为1分钟、5分

◷ 2023-04-08 📁 进程调度 👤 laumy 🔥 453 热度 💬 0 评论

CFS调度实现

时间计算 vruntime与runtime static void update_curr(struct cfs_rq *cfs_rq) { struct sched_entity *curr = cfs_rq->curr; u64 now = rq_clock_task(rq_of(cfs_rq)); u64 delta_exec; if …

◷ 2023-04-02 📁 进程调度 👤 laumy 🔥 511 热度 💬 0 评论

CFS分组调度

Linux系统都是支持多用户登录,如果一个Linux系统两个用户存在不同的数量的进程,假设A用户有10个进程,B用户有20个进程,如果系统对这30个进程进行平分CPU,实际上是不公

◷ 2023-04-01 📁 进程调度 👤 laumy 🔥 385 热度 💬 0 评论

CFS调度原理

上一章节中描述了Linux系统中支持多种调度,不同的调度有不同的优先级范围。对于普通进程使用的CFS调度(Completely Fair Scheduler,CFS)。完全公平调度主要核心思

◷ 2023-03-26 📁 进程调度 👤 laumy 🔥 369 热度 💬 0 评论

进程调度简介

调度类别 进程调度依赖于调度策略(schedule policy),linux内核把相同的调度策略抽象成调度类(schedule class)。不同类型的进程采用不同的调度策略,目前Li

◷ 2023-03-25 📁 进程调度 👤 laumy 🔥 471 热度 💬 0 评论

进程创建

fork创建了一个新的进程,也就是fork执行后就会返回两次,分别是父进程返回和子进程返回。 exec可以加载新的程序运行(原程序是A,可以在A中运行后加载可执行程序B,B是A的子进

◷ 2023-03-19 📁 进程调度 👤 laumy 🔥 307 热度 💬 0 评论

markdown使用说明

首行缩进 `&ensp`; //半角的空格 `&emsp`; //全角的空格(中文的话,一般就直接用两个 即可) 着色 <span style="color:red;">红色文字</span> <span st

◷ 2023-03-18 📁 其他 👤 laumy 🔥 275 热度 💬 0 评论

CCMU驱动

此文章在 WordPress 中为密码保护状态,数据库导出未包含正文。

◷ 2023-03-15 📁 外设 👤 laumy 🔥 180 热度 💬 0 评论

进程基本概念

进程标识 进程是程序加载到内存的执行过程。进程与程序相比用于操作系统的资源如内存空间、文件、signal等。对于进程的标识我们使用process id来标识(PID)。 线程是进程中活跃

◷ 2023-03-12 📁 进程调度 👤 laumy 🔥 316 热度 💬 0 评论

中断小结

上下文 是否抢占 顶半部 中断 否 Softirq/tasklet 软中断 是 workqueue 进程 是 threaded_irq 进程 是 Tasklet:底半部,优先级比较高,处理函数中不能睡眠。 workqueue:底半部,处理函数可以睡眠,也可以执行比较长的应用。

◷ 2023-03-11 📁 中断管理 👤 laumy 🔥 387 热度 💬 0 评论

workqueue

API接口 初始化 函数 说明 DECLARE_WORK(n, f) 静态定义一个work,实际就是定义一个struct work_struct的全局变量。 DECLARE_DELAYED_WORK(_work, _func) 静态定义一个work,与上面的区别就是work可以在指定时间之后

◷ 2023-03-05 📁 中断管理 👤 laumy 🔥 1119 热度 💬 0 评论

软中断和tasklet

Linux的中断分为上下部机制,上半部在中断上下文中关闭了本地CPU中断响应,下半部是在中断线程中处理。在Linux系统没有引入中断线程化机制之前,就已经出现了一些下半部的机制,如

◷ 2023-03-05 📁 中断管理 👤 laumy 🔥 830 热度 💬 0 评论

Linux中断实现

interrupt controller初始化 设备树中对gic-v3的描述如下,其中interrupt-controller标识了该设备是一个中断控制器。 interrupt-controller@3400000 { compatible = "arm,gic-v3"; #interrupt-cells = <0x03>; #address-cells = …

◷ 2023-03-04 📁 中断管理 👤 laumy 🔥 478 热度 💬 0 评论

wordpress使用笔记

使用WP Editor.md 粘贴的图片模糊 修改插件的图片质量 /usr/share/nginx/html/wordpress/wp-content/plugins/wp-editormd/src/App/ImagePaste.php 首页不显示全文章, …

◷ 2023-03-04 📁 其他 👤 laumy 🔥 269 热度 💬 0 评论

中断基本概念

在现代嵌入式系统中,处理器上会挂接很多个外设,CPU在执行任务的时候,可能会同时由多个中断发生,那么中断必要要进行响应处理并维护一个队列一一运行,这样自然会影响CPU的效率,为了让

◷ 2023-03-04 📁 中断管理 👤 laumy 🔥 422 热度 💬 0 评论

Arm64体系结构简介

ARM简介 ARM版本 典型处理器 主要特性 v1 26位地址空间 v2 增加乘法、乘加法、支持协处理指令等 v3 地址空间扩展到32位,增加SPSP和CPSR等 v4 ARM7TDMI/ARM920T 增加Thumb指令等 v5 ARM926EJ-S 增加Jazel

◷ 2023-03-04 📁 中断管理 👤 laumy 🔥 1111 热度 💬 0 评论