惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Palo Alto Networks Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
CERT Recently Published Vulnerability Notes
C
Cybersecurity and Infrastructure Security Agency CISA
S
Schneier on Security
S
Securelist
酷 壳 – CoolShell
酷 壳 – CoolShell
C
CXSECURITY Database RSS Feed - CXSecurity.com
Cyberwarzone
Cyberwarzone
Apple Machine Learning Research
Apple Machine Learning Research
S
SegmentFault 最新的问题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
GbyAI
GbyAI
Security Latest
Security Latest
Last Week in AI
Last Week in AI
Microsoft Security Blog
Microsoft Security Blog
云风的 BLOG
云风的 BLOG
Recorded Future
Recorded Future
Webroot Blog
Webroot Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
TaoSecurity Blog
TaoSecurity Blog
C
Cisco Blogs
博客园 - 【当耐特】
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
B
Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Attack and Defense Labs
Attack and Defense Labs
The Last Watchdog
The Last Watchdog
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
Project Zero
Project Zero
WordPress大学
WordPress大学
L
LINUX DO - 最新话题
F
Fortinet All Blogs
L
LINUX DO - 热门话题
PCI Perspectives
PCI Perspectives
Simon Willison's Weblog
Simon Willison's Weblog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
MongoDB | Blog
MongoDB | Blog
Latest news
Latest news
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
The Hacker News
The Hacker News
爱范儿
爱范儿
O
OpenAI News
J
Java Code Geeks
T
The Exploit Database - CXSecurity.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - 思兼

跟思兼学Klipper(41):优化 KAMP 的自适应划线清除喷嘴残料 跟思兼学Klipper(40) 免费高速简单的3D打印机远程控制服务 跟思兼学Klipper(39.1)解决 QIDI Q2 主板散热风扇开机即转、待机不停的风扇噪音问题 跟思兼学Klipper(38) 成品3D打印机使用外挂上位机提升性能简明指南 跟思兼学用Klipper(36)低成本升级自动Z偏移校准实现完美首层 MKS Pi/SKIPR 自制新版系统简明使用指南 火力全开!Intel NUC6iKYK 骷髅峡谷提速降温简明指南 跟思兼学用Klipper(35) mergerfs 助力 Klipper 上位机热插拔自动扩容与脱机打印 跟思兼学用Klipper(34) 3D打印机如何进行双 Z 等高校准之我见 跟思兼学Klipper(32):修复 CrealityOS IP 地址经常改变的问题 跟思兼学Klipper(30):使用辅助宏调整3D打印机无感归位堵转检测阈值 玩转创想三维 K1 系列主板之二:编译 MCU 固件,恢复裁剪组件 玩转创想三维 K1 系列主板之一:在线更新 MCU 固件 基于 ESPHome 的 3D 打印机舱内控制系统(2): FireBeetle 2 ESP32-C6 + Moonraker Sensor + Fluidd 基于 ESPHome 的 3D 打印机舱内控制系统(1): 荆棘满途之 FireBeetle 2 ESP32-C6 初始配置 跟着思兼学习Klipper(29):行空板遇上Klipper之一: 安装Klipper全家桶 跟着思兼学习Klipper(28):无接触线刷Klipper固件:千秋万载,一统江湖之Katapult 跟着思兼学习3D打印 Klipper 固件系列文章合集 27-行空板遇上Klipper之三: 做一个基于Klipper的通用延时摄影机
跟思兼学Klipper(37) M8P v2.0+CB2/BTTPi2 新版系统使用简明指南
思兼 · 2025-07-20 · via 博客园 - 思兼

前言

原创文章,转载引用务必注明链接,水平有限,如有疏漏,欢迎指正交流。

文章如有更新请访问 DFRobot 社区cnblogs 博客园,前者内容较全,后者排版及阅读体验更佳。

感谢必趣科技(Bigtreetech)和魔核科技(MagicMaker)的硬件赞助。后来才知道很多人的入门打印机小鲁班也是魔核出品的,接触下来魔核的老板做事很严谨,比如 OrcaSlicer 唯一的 PEEK 打印参数,点个赞。

最近必趣更新了 CB2/BTTPi2 的操作系统,提升很大。趁着准备给魔核科技的 黑爵士UM2 打印机升级,就写一下相关教程。我个人从第一台 Anet A8 开始,已经购买、玩过 20 余台不同型号的 3D 打印机,其中尤其喜欢 UM2 架构的打印机,之前调教的最好的一台就是珍妮(JennyPrinter)的 Z370,不过拆装一次之后,铝塑板变形,就很是头疼。不过这台黑爵士采用同步带 Z,全金属结构件,真是一机传三代,人走机还在。本着好马配好鞍的原则,心头好 UM2 就要配顶级的 Manta M8P v2(STM32F723)+ 顶级的 CB2 上位机模块,至于性能配置是否冗余,可以不用,但不能没有。不过 CB2 之前的操作系统不太好用,所以一直没做介绍。这次趁着更新契机,将一些内容整合分享如下。未来计划更新 《2025 版 Klipper 摄像头不完全使用指南》,拭目以待。

本文涉及的内容:

  1. Manta M8P v2 + CB2 使用基本步骤
  2. CB2 新的 UMS 模式介绍
  3. 编译使用 ffmpeg-rkmpp 调用 GPU 实现硬件加速视频渲染(修改 timelapse 组件)
  4. 使用 panfrost 显卡驱动来直接渲染 KlipperScreen 界面,降低 CPU 占用

硬件列表:

  1. BTT Manta M8P v2.0
  2. 必趣 TFT 35_SPI v2.1
  3. 微雪 HDMI TouchScreen
  4. DFRobot DSI 树莓派触摸屏

其他一些注意点:

  1. 【更新】M8P v2.0/CB2 相关文档未及时更新,请参考 BTTPi2 文档
  2. 【勘误】CB2 烧录系统到 eMMC 后,需要将 3/4 拨码都会到 OFF 才会启动,而不是仅 3 。
  3. 【建议】Manta M8P v2,overlays 选 HDMI-1,结果要插插 HDMI-0 接口,希望必趣能统一从 0 还是从 1 数数
  4. 【TODO】当前系统点亮 DFRobot DSI 树莓派屏之后,几秒后会关闭背光
  5. 【更新】新版 Klipper 目前已支持 STM32H723 运行在 520Mhz 主频模式下,既往 H723/H743/H750 虽然支持但最高只能运行在 400Mhz 模式下(后两者目前依然如此)。
    1. stm32: Enable VOS0 power mode on stm32h723 if frequency above 400Mhz
    2. stm32: Run stm32h723 at 520Mhz

一、使用新版系统

1.1 新版系统的亮点:

  1. 新增 UMS 模式,支持将 eMMC 挂载为移动存储模式
  2. 内核大更新:4.19 ——> 6.1
  3. 支持调用 RKMPP 加速视频图像处理
  4. 支持调用 RKNPU 神经网络处理单元
  5. 支持 GPU Panfrost 驱动
  6. 支持 imx219 和 ov5647 树莓派摄像头
  7. 支持树莓派 DSI 屏
  8. 支持从 M.2 NVME 固态硬盘启动

1.2 产品特点

  • CPU: 瑞芯微 RK3566,四核 Cortex-A55 @1.8GHz
  • GPU: Mali-G52 1-Core-2EE
  • NPU: 0.8 TOPS NPU
  • RAM: 2GB LPDDR4
  • 32GB 板载 EMMC 存储
  • 支持树莓派 DSI/CSI 摄像头、显示器,性能更好、价格便宜
  • PCIe 2.1 1x1 支持 M.2 固态硬盘启动
  • 千兆以太网
  • 博通 433Mbps WiFi + BT5.0 无线模块
  • 40-pin GPIO
  • 与树莓派 CM4 完全相同的 BTB 座子

市面上常见 3D 打印机上位机 CPU 对比:

处理器型号 CPU架构 核心数 主频 GPU 性能跑分 备注
RK3566 Cortex-A55 4 最高1.8GHz Mali-G52 2EE 61 026 内置NPU,支持硬件编解码
H616 Cortex-A53 4 最高1.5GHz Mali-G31 MP2 40 029
RK3328 Cortex-A53 4 最高1.5GHz Mali-450 MP2 34 413
H5 Cortex-A53 4 最高1.5GHz Mali-450 MP6 25 273
H3 Cortex-A7 4 最高1.2GHz Mali-400 MP2 16 424 32位处理器

image-20250719234838233

1.1 BTTPi2 烧录新版系统(简介)

Pi2 主要区别是进入 Recovery 模式的拨码,如下图所示:

按住 Recovery 键通过 TypeC 数据线连接电脑即可。

另一个区别是支持 M.2 接口,从而支持一系列外设和固态硬盘启动。同时其优秀的编解码能力,也可以做一台 Jellyfin 影音服务器,具体可以查看 UP 主 索拉里斯风 的视频:《激动啊!Arm设备真的可以jellyfin转码了,功耗低超级低。性能很惊喜。》

1.2 M8P v2.0 使用新版系统

此主板延续了必趣一贯的大而全的特点,是一款非常优秀的二合一主板,其基础操作参考 官方文档。本着一文搞定的原则,简述相关步骤如下。

1.2.1 软件系统准备

  1. 操作系统下载地址 https://github.com/bigtreetech/CB2 ,当前(2025年7月19日)最新版本是 V3.0.2 ,下载 CB2_Debian12_Klipper_kernel6.1_20250529_without_obico.img.xz解压缩到合适位置,得到 img 系统镜像文件。
  2. 烧录工具下载:从上述仓库下载专用版 RKDevTool.zip,解压到合适目录
  3. 从上述烧录工具包中使用 DriverAssitant_v5.12 先卸载再安装驱动

1.2.2 CB2 进入烧录模式并烧录系统到 eMMC

CB2 和 Pi2 进入 Recovery 模式拨码位置不同,可以如下理解:

具体步骤:

  1. 移除 microSD 卡
  2. 将 TypeC 接口旁边的 2P 排针使用跳帽短接,从而使能 USB 供电,此时无需连接 24V 供电。
  3. 将 4P 拨码开关的 3(RPIBOOT) 和 4(USBOTG) 调节到 ON 位置,1、2 保持 OFF
  4. 使用 TypeC 数据线连接 M8P 到电脑
  5. 电脑打开 RKDevTool,更改、选择刚下载的镜像
  6. 如图设置,并点击 RUN 开始烧录

1.2.3 UMS/MSC 模式

这个改动太重要了,可以直接修改配置文件

若 eMMC 中已经烧录过 V3.0.1及其之后版本的系统,电脑会将 eMMC 识别为 MSC 设备(类似U盘一样的设备)。UMS模式相对于Loader模式有以下好处:

  • 可以直接修改 /boot/ 分区中的配置信息【配网终于不再反人类了】
  • 可以直接像 Micro SD 卡那样,直接烧录系统到eMMC 【虽然速度变慢了】
  • 可以通过软件擦除 eMMC 中的所有内容

不过仍有几点需要注意:

  1. 后续想要重新烧录系统,调节拨码后无法再使用 RKDevTool,而是和 microSD 卡相同,使用 USBImager 烧录,速度较之前速度慢不少。
  2. 使用 USBImager 等工具烧录系统前,可能需要使用 sdformater 格式化两次,启用逻辑大小调整。
  3. 想要进入 loader 模式,需要在 Linux 下操作,手动关闭 MSC 磁盘模式,再使用命令进入 Loader 模式
  4. 烧录新版系统后会自动启动进入 MSC 模式,此时会在系统中显示 boot 磁盘分区,我们可以打开并修改 armbianEnv.txt 和 system.cfg 文件。
  5. 弹出磁盘,将 3/4 拨码拨回 OFF,重新插电即可正常启动。【这里 CB2 官方文档有误且未更新 UMS 模式内容,需要查阅 BTTPi2 文档】

二、使用触摸屏

2.1 TFT35 SPI V2.1 触摸屏

本次使用的是 SPI 显示触摸屏(BTTPi2 无此接口),毕竟一线连,比 HDMI 接线简单,但随着新版系统也支持树莓派 DSI 屏,由此除了价格便无更多优势。不过未来可能会升级 DSI 屏。注意此 FPC 排线的规格是:9P 1.0 间距 反向,长度选择 15cm 及以上。

2.1.1 启用 TFT35_SPI 屏

修改 /boot 内的配置文件,可以在上文烧录好 eMMC 系统后使用 UMS 模式直接修改

  • system.cfg,使能 TFT35_SPI,并设置网络
    • hostname
    • TimeZone
    • ks_src=‘FBTFT’
    • WIFI_SSID
    • WIFI_PASSWD
  • armbianEnv.txt,启用 spi 屏,设置屏幕旋转
    • overlays=tft35_spi
    • rotation

注意:

  1. ks_rotation 无法影响 tft35_spi,需要在 armbianEnv.txt 修改

2.1.2 SPI 屏翻转+触摸校准

由于我要翻转显示使用,但是不想重新布线,物理调整方向,则需要修改上文提到的 armbianEnv.txt 中的 spi rotation 参数,改为旋转 180 度。

除此之外我们发现触摸不正确,需要进行校准,步骤如下:

# https://bttwiki.com/libinput_calibration.html#install-xinput_calibrator
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources
sudo sed -i 's|security.debian.org|mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list.d/debian.sources
sudo sed -i 's|apt.armbian.com|mirrors.ustc.edu.cn/armbian|g' /etc/apt/sources.list.d/armbian.sources
sudo sed -i 's|github|cors.isteed.cc/https://github|g' /etc/apt/sources.list.d/armbian-config.sources

sudo rm /etc/pip.conf > /dev/null 2>&1
mkdir -p $HOME/.config/pip
cat << _EOF_ > $HOME/.config/pip/pip.conf
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
# index-url=https://mirrors.aliyun.com/pypi/simple/
# extra-index-url=https://www.piwheels.org/simple
timeout = 600
_EOF_

gh_proxy=cors.isteed.cc
cat << _EOF_ > $HOME/.gitconfig
[url "https://${gh_proxy}/https://github.com/"]
#[url "https://hub.0z.gs/"]
        insteadOf = https://github.com/
_EOF_

sudo apt update
sudo apt install xinput-calibrator fonts-wqy-zenhei
DISPLAY=:0 xinput_calibrator --list
DISPLAY=:0 xinput_calibrator -v --device <id>

# 创建 libinput 坐标转换脚本

cat << _EOF_ > $HOME/libinput_calibrator.sh
#!/bin/bash

#according to https://wiki.archlinux.org/title/Talk:Calibrating_Touchscreen#Libinput%5Fbreaks%5Fxinput%5Fcalibrator

screen_width=$1
screen_height=$2
click_0_X=$3
click_0_Y=$4
click_3_X=$5
click_3_Y=$6

re='^[0-9]+$'
if ! [[ $screen_width =~ $re ]] ; then
  echo "error: screen_width=\"$screen_width\" Not a number" >&2; exit 1
fi
if ! [[ $screen_height =~ $re ]] ; then
  echo "error: screen_height=\"$screen_height\" Not a number" >&2; exit 1
fi
if ! [[ $click_0_X =~ $re ]] ; then
  echo "error: click_0_X=\"$click_0_X\" Not a number" >&2; exit 1
fi
if ! [[ $click_0_Y =~ $re ]] ; then
  echo "error: click_0_Y=\"$click_0_Y\" Not a number" >&2; exit 1
fi
if ! [[ $click_3_X =~ $re ]] ; then
  echo "error: click_3_X=\"$click_3_X\" Not a number" >&2; exit 1
fi
if ! [[ $click_3_Y =~ $re ]] ; then
  echo "error: click_3_Y=\"$click_3_Y\" Not a number" >&2; exit 1
fi

#a = (screen_width * 6 / 8) / (click_3_X - click_0_X)
#c = ((screen_width / 8) - (a * click_0_X)) / screen_width
#e = (screen_height * 6 / 8) / (click_3_Y - click_0_Y)
#f = ((screen_height / 8) - (e * click_0_Y)) / screen_height

a=$(awk "BEGIN { printf(\"%.6f\", ($screen_width * 6 / 8) / ($click_3_X - $click_0_X))}")
c=$(awk "BEGIN { printf(\"%.6f\", (($screen_width / 8) - ($a * $click_0_X)) / $screen_width)}")
e=$(awk "BEGIN { printf(\"%.6f\", ($screen_height * 6 / 8) / ($click_3_Y - $click_0_Y))}")
f=$(awk "BEGIN { printf(\"%.6f\", (($screen_height / 8) - ($e * $click_0_Y)) / $screen_height)}")

CONFIG_OPTION="Option \"CalibrationMatrix\" "
CONFIG_LINE="\"$a 0.000000 $c 0.000000 $e $f 0.000000 0.000000 1.000000\""

echo "${CONFIG_OPTION}${CONFIG_LINE}"
echo ""

CONFIG_OPTION="Option \"CalibrationMatrix\" "
CONFIG="/usr/share/X11/xorg.conf.d/40-libinput.conf"
INPUT_CLASS="Identifier \"libinput touchscreen catchall\""
if [ -e "${CONFIG}" ]; then
    ks_restart=0
    grep -e "^\        ${CONFIG_OPTION}${CONFIG_LINE}" ${CONFIG} > /dev/null
    STATUS=$?
    if [ $STATUS -eq 1 ]; then
        sudo sed -i "/${CONFIG_OPTION}/d" ${CONFIG}
        sudo sed -i "/${INPUT_CLASS}/a\        ${CONFIG_OPTION}${CONFIG_LINE}" ${CONFIG}
        echo "Written to file:"
        echo "    ${CONFIG}"
        echo ""
        ks_restart=1
    fi

    # restart KlipperScreen
    if [ ${ks_restart} -eq 1 ];then
        sudo service KlipperScreen restart
    fi

    echo "run:"
    echo "    DISPLAY=:0 xinput list-props <device>"
    echo "to check if the calibration parameters are effective"
    echo ""
fi
_EOF_
chmod +x libinput_calibrator.sh
# 执行坐标转换并自动生效
sudo ./libinput_calibrator.sh 480 320 <click_0 X> <click_0 Y> <click_3 X> <click_3 Y>

# 重启 KlipperScreen 验证
sudo systemctl restart KlipperScreen

2.2 HDMI 屏幕启用 GPU 直接渲染

SPI 屏幕使用 CPU 进行软件渲染,无 GPU 加速,所以界面渲染会增加 CPU 负载。但是 HDMI 和 DSI 屏幕是可以使用 GPU 直接渲染 KlipperScreen 图形界面,但是系统默认没有启用,需要进行如下设置:

# 1. 查看显卡
cat /sys/class/drm/card*/device/modalias
of:NnpuT(null)Crockchip,rk3568-rknpuCrockchip,rknpu
of:NgpuT(null)Carm,mali-bifrost

# 2. 安装驱动
sudo apt install mesa-utils libgl1-mesa-dri

# 3. 检查内核模块
lsmod | grep panfrost

# 4. 验证是否启用 GPU 直接渲染图形界面
DISPLAY=:0 glxinfo | grep -i "renderer\|vendor"
## 或者
DISPLAY=:0 screenfetch
## 显示 GPU: llvmpipe (LLVM 15.0.6, 128 bits) 则代表占用 CPU 进行软件渲染
## 显示 OpenGL renderer string: Mali-G52 r1 (Panfrost) 则代表使用硬件渲染

# 5. 日志查看
less /var/log/Xorg.0.log

# 6. 启用 GPU 硬件渲染并重启 KlipperScreen 生效
sudo tee /etc/X11/xorg.conf.d/20-panfrost.conf > /dev/null <<EOF
Section "Device"
    Identifier "Panfrost"
    Driver "modesetting"
EndSection
EOF
sudo systemctl restart KlipperScreen.service
  • 注意 Manta M8P v2,overlays 选 HDMI-1,插 HDMI-0 接口

2.3 使用树莓派 DSI 屏

新版系统支持树莓派 DSI 屏,正好手头有一块,插电开机后,屏幕显示几秒后会背光熄灭(evtest 可以看到触摸正常),dmesg 及 sudo less /sys/kernel/debug/regulator/regulator_summary 可以看到 tcs4525/tc358762-power 负责背光的电源关闭了,应该和 /boot/dtb/rockchip/rk3566-bigtreetech-cb2-2.dtb 有关,具体已反馈工程师。

三、使用 ffmpeg-rkmpp 实现硬件编解码

大家使用 timelapse 组件时,大多数情况是使用 CPU 来渲染生成视频,速度慢且占用大量 CPU 资源。目前常用的支持硬件编解码的手段为 x86 的 vaapi、树莓派的 h264_v4l2m2m、Rockchip 的 rkmpp。

参考相关文档: https://github.com/nyanmisaka/ffmpeg-rockchip/wiki/Compilation ,需要先后编译组件。

# 编译 rkmpp/rkrga/ffmpeg-rkmpp(略,看上面文档链接)
# 渲染视频测试
time ffmpeg -r 25 -i /home/biqu/pics/printer/frame%6d.jpg -c:v h264_rkmpp -pix_fmt yuv420p -b:v 2M hardware_h264.mp4
time ffmpeg -r 25 -i /home/biqu/pics/printer/frame%6d.jpg -c:v hevc_rkmpp -pix_fmt yuv420p -b:v 2M hardware_hevc.mp4
time ffmpeg -r 25 -i /home/biqu/pics/printer/frame%6d.jpg  -c:v libx264 -preset medium -crf 23 -pix_fmt yuv420p soft.mp4

默认未编译 libx264,因此无法使用 CPU 来渲染视频,当前场景下也不需要,如果想要支持此功能,可以编译 ffmpeg 时添加 --enable-libx264 来启用。

【推荐】直接下载预编译好的 ffmepg-rkmpp

由于想要启用 rkmpp 需要使用 rockchip 官方的内核,最新的是 6.1,所以我们也可以下载预编译的 ffmpeg-rkmpp deb 包,地址如下:

https://github.com/MarcA711/Rockchip-FFmpeg-Builds/releases
由于 ffmpeg 编译需要很长时间,这种预编译的包无疑非常棒。

四、使能 timelapse 组件支持硬件加速

组件地址: https://github.com/mainsail-crew/moonraker-timelapse ,此组件不再更新,但是很多 PR 很有意思,可以关注。

也可以关注 https://useful-forks.github.io/?repo=mainsail-crew/moonraker-timelapse ,如:

  1. 支持树莓派硬件加速
  2. 支持手机 BeamKlipper
  3. 支持 gphoto2 控制协议
  4. 支持多种相机控制协议 (DSLR, Sony HDR, ...)

这里我参考第一个链接,支持自定义参数配置,默认使用 libx264。同时修改配置文件。

$ diff timelapse.py timelapse_ori.py
90d89
<             'vcodec': "libx264",
691c690
<                 + " -vcodec " + self.config['vcodec'] \
---
>                 + " -vcodec libx264" \

# 修改 moonraker.cfg, 指定编码器
[timelapse]
## x86
# vcodec: h264_vaapi
# extraoutputparams: -vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload'

## Rockchip rkmpp, 支持 h264 或 h265(hevc)
vcodec: hevc_rkmpp
extraoutputparams: -r 30 -pix_fmt yuv420p -b:v 2M
# 720p 2M, 1080p 4~8M
# -vf format=yuv420p 取代

注意:

  • 如果视频主要用于社交媒体分享,YUV420P通常是一个不错的选择,因为它在压缩和质量之间取得了良好的平衡。
  • 如果视频用于专业展示或分析,可能需要选择YUV422P或RGB24,以确保更高的色彩精度和细节。
  • 更多 Rockchip 硬件加速和视频格式支持情况的信息,可以关注 Jellyfin 官方文档

总结

本来想写 go2rtc 调用 ffmpeg-rkmpp 的内容,留在摄像头文章里吧,还要再学习学习。