Jvle

Jvle

Linux篇-sysfs
Created2025-10-11|Linux篇
概念sysfs 是 Linux 提供的一种虚拟文件系统,他以一种层次的方式组织数据,向用户空间提供内核中的信息,让用户可以通过文件系统接口访问和操作内核对象的属性. 他提供了一种统一管理的接口,通常在 /sys 目录下挂载. /sys/class: 包含了设备类别的子目录. 123456789jvle@jvle-ThinkPad-X1-Carbon-Gen-8:~/Desktop/works/temp/linux_files/modules/kobjs$ ls /sys/class/accel bsg drm hwmon lirc nd platform-profile pwm scsi_device tpm vcata_device devcoredump drm_dp_aux_dev i2c-dev mdio_bus net ...
Linux篇-kobj
Created2025-10-11|Linux篇
1 概念kobj 是内核抽象出来的通用对象模型,用于表示内核中的实体. 结构体: https://elixir.bootlin.com/linux/v6.17.1/source/include/linux/kobject.h#L64. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960// kobjstruct kobject { const char *name; // kobj 对象的名称, 跟 sys/<父 name>/<name> 一致 struct list_head entry; // 与父 kobj 建立链接的链表, 是父 kobj 的子链表 struct kobject *parent; // 指向父 kobj struct kset *kset; // 指向包含该 kobj 的 set 集合 const struct kobj_type *ktype;...
Grub篇(调试grub2)
Created2025-10-09|Grub
1 调试grub21.1 编译 grub2首先从 https://cgit.git.savannah.gnu.org/cgit/grub.git 拉下压缩包. 1234# 在grub2安装目录下# --with-platform=efi 可以编译 UEFI 版本../configure --with-platform=pc --target=i386 --disable-werrormake -j$(nproc) 编译完成后,grub-core/ 下会有很多文件. 各种 *.mod 模块 kernel.exec(GRUB 核心可执行) 若干 .image / .img 文件 gdb_grub, 调试用脚本. 1.2 构建 img12# 创建一个空的磁盘镜像dd if=/dev/zero of=disk.img bs=1M count=256 建立分区并格式化. 123456789101112131415161718192021222324# 建立分区parted disk.img --script mklabel msdosparted...
Linux篇-open接口
Created2025-10-08|Linux篇
1 过程全调试filp_open() 这里以 filp_open(“/dev/console”); 为例. file_open_name() AT_FDCWD 表示当前的工作目录. do_filp_open() path_openat() do_open() vfs_open() do_dentry_open() 取得f_op,这里为 def_chr_fops. f_op->open为 chrdev_open. chrdev_open 2 总结2.1 全过程调用 open 接口,通过 path walking 拿到 last component 的 inode,之后进入vfs_open,填充file结构体,如果file->f_op->open被填充就继续执行该设备层的open函数,否则返回。 随后在driver层继续通过 i_rdev 获取设备的信息,如果设备层的f_fop有open,函数,则继续执行驱动层的open. 2.2 基本概念 path walking: 内核要把这个 路径字符串 转换成一个 实际的对象...
Linux篇-调试linux
Created2025-10-07|Linux篇
1 Linux篇(调试linux) 内核各个版本: https://www.kernel.org/pub/linux/kernel/ 最新主线版本: https://kernel.org/ 2 initrd制作此处我用的6.6.109版本. 1dracut -q --force -i ./package /my --add "busybox kernel-modules-extra kernel-modules rootfs-block" /tmp/bar.img 6.6.109 initrd/initramfs 本质上是一个压缩的rootfs镜像(通常是cpio格式),QEMU启动时用 -initrd 传给内核,内核会把它解压到内存里(ramfs/tmpfs),并把它临时挂载为根文件系统 /. 当内核完成自身初始化后,它必须进入用户态,去运行第一个用户进程(PID 1)。这个进程就从根文件系统里找。查找顺序大概是. 如果内核启动参数里写了 rdinit=,它会在 initrd...
virtio
Created2025-08-24
1 概述VirtIO 是一个让”虚拟设备像真设备一样”工作的标准, 来宾系统里的驱动并不需要知道自己在虚拟机里, 它像给物理网卡/磁盘写驱动那样去用中断, DMA 等”常规手段”. 规范把每个 virtio 设备都拆成四个基本部件: 设备状态字段(Device Status) 特性位(feature bits) 设备配置空间(Device-specific Configuration Space) 一个或多个 virtqueue(队列) 1.1 设备状态位一组位标志, 描述”驱动与设备的握手/生命周期状态”. 驱动按顺序置这些位, 设备据此进入下一阶段. 12345678910111213ACKNOWLEDGE: 驱动已发现设备, 准备驱动它.DRIVER: 驱动已加载并能处理这个设备.FEATURES_OK: 特性协商完成.DRIVER_OK: 驱动已完成队列初始化, 设备可开始工作.NEEDS_RESET(设备置位): 设备出错, 需要驱动复位.FAILED: 驱动宣告失败(通常用于致命错误后停止).写 0...
behavior tree
Created2025-08-15
1 概述安装. 12sudo apt updatesudo apt install ros-$ROS_DISTRO-behaviortree-cpp -y 行为树类似于有限状态机, 都是用来控制任务流程的. 不同的是, 行为树(BT)是由一串分层节点组成. 每次执行循环, 会向根节点发一个 tick, tick 会一路传到叶子节点. 任何被 tick 的节点都会运行自己的回调, 并返回三个状态之一, SUCCESS/FAILURE/RUNNING. 叶子节点是真正执行动作或做判断的地方, 最常见的叶子是 Action 节点. 1.1 节点的类型 ControlNode(控制节点): 有 1..N 个孩子, 按自己的规则把 tick 分发给孩子. ecoratorNode(装饰器节点):只能有 1 个孩子, 可以改变孩子的结果、重复执行孩子、或在条件不满足时阻止孩子被 tick. ConditionNode(条件)节点:不能返回 RUNNING, 只做判断,不改变系统状态. ActionNode(动作节点):真正“干活”, 可以是同步(一次 tick...
nav2_controller
Created2025-08-13
1 概述1.1 Progress CheckerProgress_checker: 判断机器人在一段时间内是否真的在朝目标前进. 插件名 plugin...
nav2_planner
Created2025-08-13
1 概述规划器服务器(Planner Server)负责处理规划器请求, 并托管插件实现的映射. 它会接收一个目标和一个要使用的规划器插件名称, 然后调用相应的插件来计算通往目标的路径. 它还托管全局成本图. 总得来说, 就是控制全局的导航路线. 2 参数解析默认示例. 12345678planner_server: # 负责调用规划插件 ros__parameters: expected_planner_frequency: 20.0 # 规划器运行的频率 costmap_update_timeout: 1.0 # 等待全局代价地图(global costmap)更新的超时时间 introspection_mode: "disabled" # disabled(关闭) read_only(只读) full(完全记录) planner_plugins: ['GridBased'] # 定义要加载的规划器插件列表, GridBased和下面的插件对应, 名字自己配置就行. GridBased: # 具体插件 ...
Diffdrive
Created2025-08-12
1 概述以下为两轮差速机器人计算的相关公式. v: 机器人的线速度 w: 机器人的角速度 L: 两轮之间的距离 x: 机器人车体朝向在全局坐标系 x 轴的位置 y: 机器人车体朝向在全局坐标系 x 轴的位置 θ: 机器人车体朝向与全局坐标系 x 轴正方向的夹角 坐标系遵守右手法则: X轴指向前方, Y轴指向左方, Z轴指向上方. 2 运动学正解123456789v = ( v(R) + v(L) ) / 2w = ( v(R) + v(L) ) / Lx(t+1) = x(t) + v * cos(θ) * dtx(t+1) = x(t) + v * cos(θ) * dtθ(t+1) = θ(t) + w * dt 3 运动学逆解123v(R) = v + (L / 2) * w;v(R) = v - (L / 2) * w; 4 编码电机的计算 轮子的半径为 rd, 直径为 dl, 圆周率为 PI. 编码脉冲计数为 Tick, s 为 1 个 Ticks 轮子走过的距离, S 为经过 dt 时间后轮子走过的举例. 4.1...
1…456
avatar
Jvle
Articles
60
Tags
0
Categories
6
Follow Me
Announcement
Hello!!! Welcome to Coco's blog
Recent Posts
transformer-learning——Training and Regularization2026-07-01
transformer-learning——MLP2026-07-01
transformer-learning——introduction2026-06-29
AI 指南——openClaw安装2026-06-23
AI 指南——RAG语义检索增强2026-06-18
Categories
  • AI篇6
  • ELF篇1
  • Grub1
  • Linux篇16
  • 有趣软件3
  • 调研3
Archives
  • July 2026 2
  • June 2026 11
  • April 2026 1
  • February 2026 3
  • January 2026 9
  • November 2025 3
  • October 2025 16
  • August 2025 10
Website Info
Article Count :
60
Unique Visitors :
Page Views :
Last Update :
©2019 - 2026 By Jvle
Framework Hexo 7.3.0|Theme Butterfly 5.3.5
鄂ICP备2026018452号