From b002fa6e5607350d5b538f50faa79b446106bbbd Mon Sep 17 00:00:00 2001 From: cyy_mac Date: Tue, 16 Jun 2026 22:44:49 +0800 Subject: [PATCH] vault backup: 2026-06-16 22:44:49 --- .DS_Store | Bin 18436 -> 18436 bytes .obsidian/workspace.json | 20 ++-- 技能树/.DS_Store | Bin 0 -> 10244 bytes 超级备忘/粤嵌实训/正常开发流程.md | 39 ++++++- 零碎的知识/mac安装ubuntu.md | 170 ++++++++++++++++++++++++++++++ 5 files changed, 218 insertions(+), 11 deletions(-) create mode 100644 技能树/.DS_Store create mode 100644 零碎的知识/mac安装ubuntu.md diff --git a/.DS_Store b/.DS_Store index 8d3d474fa07005b36b4a0da000fee8dcb00bd249..ee22058873f61bec2c5f89e05a6d3722b7226c56 100644 GIT binary patch delta 252 zcmZpfz}PZ@ae@?=1vdkO0uKX&0rx}|ZN`9&0o$1uD{!!IGBSVx2lwWW65=eI)p?#U zbISvTn3EbB{$>bHW)$|_d_b(9aWbEIp%6r@EVw8yCqFM8sEToNwfUjRo$M-`c?1@+ zPTp=@%3*9^qN8AJVm5h>fc@qSv0%2v+zJAWe3J!OBsZ%XJY$>8t^RW}3rhzxJIsnT z#tq22Y$op)kl9>pGJ^@EQ~_uU8xRA51JDZ$t_%zUKyM(tvssYiHS=VC7thK5JRFl_ NTo!I-H01(o1pwj5L3aQE delta 240 zcmZpfz}PZ@ae@>V3l{@}0uKX&0nbDgZARaX0o$1;8@RA+=C){Lo@^zoIC-scI8d5_ z5r~0+gL`A4ILl^ro+r$VLYt$77qT*LpPVmTs3u-rZDgsVU~FMgtD{hDX=I?IU}9`u zTg%BIs;qAv6rY`wo0s1?Ilx4ov1{{I$uPE!4FSxHxfKK$B_<14NN!d&c*ZvQyUFs zSOzQu@0|hsW=nAfG}_)WU>UFsykM719zip%n{zx2>QNXc+3XY2)7!UaZ@<&;3^>;dRo*Nle$t5ZzPKun<~Wanw(bY> zA#E1j^f}HFKV(!Whpk9ljK zoyv}RlM|=c*Hg}D=H%yBipx=r@$b}XftXhi?AOPy`}?SE!$nwHF)Jf~v{&}G>$caH z`e0z+{sV*V(D2AmdT4ZX^uvRP4j(!4QPCX<{L*qo$ZI~wBQEk$gI=wOuw1D7rI1w? z5_&r+gsZgZ4tJPdq2(KIhUV_n(I)+7K!v*~C}k?%^wLsHlZ8$CV$mIpOM*wy43EPk z7;%fw!lEyP&nh&3=X&G^G@534o+P{`EoHP4 zXETDzNDCqAaxIxNFEpW<+*fVo6Ro(A(F*=%O}90JB=c+esnX{dXEc?{kD7P} zNQ}xhw|k`^Sj1TcXQk&sxP^(8Knxrhc-RX}E2%NKjeQIanLKDCict9T?ZoMkU%Abx zmd14CDpG_|Dp1A9CsYiEeN{!KmrvEscEl0?HBOhL<&Jr?$=bciy5onSBZYgbAJ0GA zn0-5?;Fpe+GFDxZFlIG29lAFi%q{MC*!O(MYiU$2 y*hv#PuD0XxKyJsYZ5tfR$~h^h=M1(q;t0zB|7XBE_f2fU)4c_ct^YUeWB&ufv6eaj literal 0 HcmV?d00001 diff --git a/超级备忘/粤嵌实训/正常开发流程.md b/超级备忘/粤嵌实训/正常开发流程.md index c212f80..a80e878 100644 --- a/超级备忘/粤嵌实训/正常开发流程.md +++ b/超级备忘/粤嵌实训/正常开发流程.md @@ -98,4 +98,41 @@ buff保存需要发送的命令字节(用户码+命令码) 初始化lcd 在循环里面调用学习模式,把数据存储进来,发送模式把数据发送到另外一个模块上 -学习模式发送到字节为:0xa1 0x \ No newline at end of file +学习模式发送到字节为:0xa1 0x + + + +项目要求: +在文件夹mini_desktop中新建项目,可以把原来test里面的device.c/.h和依赖复制过来,成为独立的项目 +能够设计一个桌面,桌面上有两个功能 +1.可以滑动的电子相册,显示图片,滑动切换图片,存储多张照片(字符串数组存储路径设置 +pathname:) +图片位置在/Users/chenyouyuan/cyy_ws/mac_share/mini_desktop/images +图标和桌面背景的路径在/Users/chenyouyuan/cyy_ws/mac_share/mini_desktop/icon + +2.红外功能: + 可以参考/Users/chenyouyuan/cyy_ws/mac_share/gec6818_docker_test/ir_control + 一个是发射功能,一个是接收功能,一个是学习功能 + 按下发射功能时,进入到发射页面,通过按下对应的按钮(多个发送功能按钮,可以发射不同的指令,默认四个功能:上下左右四个按键),可以发射固定的红外指令 + 学习功能时,跳转到学习页面,可以选择学习发送还是接收,并且选择之后可以选择对应的四个功能,按下开始屏幕上学习的按钮可以跟具别人发送过来的指令进行解析学习并存储,之后的发送都参考刚刚学习到的功能,可以做一个列表对应查找,已经学习到的功能可以标注一个绿色的点,并且可以在显示出学习到的命令内容(三字节) + 接收功能,除了在学习到时候默认开启接收,并且点击接收功能之后,进入到接收页面,右边是屏幕打印出来接收到的调试数据,同样的左侧显示四个接收到指令,点那个收到对应的指令后闪烁(绿色)一下(与发送的不一定相同,建议分开存储,解析功能一和二接收到后进行左右翻页,功能三和四是控制板子上的led灯开关/每次收到命令蜂鸣器在500ms内滴滴两次 + +按钮设计: +get _bottom()当到达某一个范围时候触发,判断触摸的坐标 +注意屏幕坐标范围和lcd显示的范围,可以加一个按钮初始化,给出按钮中心坐标和范围即可初始化按钮,默认的按钮都是方形的白色为底色,黑色为文字 + + + +分步测试(注意以上功能应当均可以在/Users/chenyouyuan/cyy_ws/mac_share/gec6818_docker_test中找到,除了按钮的功能没有实现),但是要求在mini_desktop中新建独立的测试文件夹test: +测试图片显示功能(轮播形式) +测试左右滑动功能和触摸屏按钮的功能 +结合图片测试桌面和点击图标跳转,相册滑动功能 +测试点击桌面红外图标进入红外的各种ui显示功能 +测试红外功能 +综合联调形成桌面+相册+红外功能 + +黄炫齐:制作相册app可以滑动的电子相册,显示图片,滑动切换图片,存储多张照片(字符串数组存储路径 + +肖宇轩:按钮设计: +get _bottom()当到达某一个范围时候触发,判断触摸的坐标 +注意屏幕坐标范围和lcd显示的范围,可以加一个按钮初始化,给出按钮中心坐标和范围即可初始化按钮,默认的按钮都是方形的白色为底色,黑色为文字 \ No newline at end of file diff --git a/零碎的知识/mac安装ubuntu.md b/零碎的知识/mac安装ubuntu.md new file mode 100644 index 0000000..cfb1c61 --- /dev/null +++ b/零碎的知识/mac安装ubuntu.md @@ -0,0 +1,170 @@ +好的,我们来把整个过程中的问题点和最终解决方案做一个清晰的总结,方便你日后参考。 + +--- + +## 📋 完整问题回顾与解决总结 + +### 一、环境背景 +- **宿主机**:M4 芯片 Mac(ARM64 架构) +- **虚拟机软件**:UTM +- **虚拟机系统**:Ubuntu 22.04.5 LTS(ARM64 架构) +- **目标**:配置宿主机与 Ubuntu 虚拟机的共享文件夹 + +--- + +### 二、问题与解决过程全记录 + +#### 阶段1:获取 ARM64 镜像 +**问题**:在清华镜像站 `ubuntu-releases/22.04.5/` 只看到 `amd64` 镜像,找不到 `arm64`。 + +**原因**:`amd64` 和 `arm64` 镜像分开放置: +- `amd64` → `ubuntu-releases/` +- `arm64` → `ubuntu-ports/` 或 `ubuntu-cdimage/` + +**解决方案**: +- **下载安装镜像**:前往 `https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/releases/22.04.5/release/`,选择 `ubuntu-22.04.5-live-server-arm64.iso`(标准版,支持 ≤64GB 内存)。 +- **配置 APT 软件源**:使用 `http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/` 作为 `jammy` 的软件源地址。 + +--- + +#### 阶段2:尝试 VirtIO-FS 共享(失败) +**问题**:执行 `sudo mount -t virtiofs share ~/shared` 报错: +``` +mount: /home/cyy/shared: wrong fs type, bad option, bad superblock on share... +``` + +**排查过程**: +1. 尝试安装 `virtiofsd`:`sudo apt install virtiofsd` 提示 `E: Unable to locate package virtiofsd`。 +2. 启用 `universe` 仓库后仍找不到该包。 + +**结论**:`virtiofsd` 在 Ubuntu 22.04 ARM64 架构的软件源中**不存在**,`virtiofs` 方案在 ARM64 上不可用。 + +--- + +#### 阶段3:改用 SPICE WebDAV 共享(成功) +**最终方案**:使用 UTM 推荐的 **SPICE WebDAV** 方式。 + +**步骤**: + +1. **在 Ubuntu 中安装 WebDAV 相关软件包**: + ```bash + sudo apt update + sudo apt install spice-vdagent spice-webdavd davfs2 + ``` + +2. **在 UTM 中启用 WebDAV**(虚拟机需关机状态): + - 编辑虚拟机 → “共享”选项卡 + - 确保 “SPICE WebDAV” 已启用 + - 添加要共享的 macOS 文件夹 + +3. **在 Ubuntu 中挂载**: + ```bash + # 创建挂载点 + mkdir -p ~/shared + # 挂载(关键:使用 uid/gid 指定用户权限,并跳过认证) + sudo mount -t davfs http://127.0.0.1:9843 ~/shared -o uid=1000,gid=1000 + ``` + **⚠️ 注意**:提示 `Username:` 和 `Password:` 时,**直接按回车跳过**,不要输入任何内容。 + +--- + +#### 阶段4:解决权限问题(Permission denied) + +**问题表现**: +- 挂载后只能以 `root` 写入,普通用户 `cyy` 无法创建文件。 +- 执行 `touch ~/shared/test.txt` 报 `Permission denied`。 + +**原因**: +- 挂载时未指定 `uid`/`gid`,默认以 `root` 身份挂载。 +- 用户输入了认证信息(`cyy`/密码),导致挂载状态异常。 + +**解决方案**: + +1. **卸载时确保不在挂载目录内**: + ```bash + cd ~ + sudo umount ~/shared + ``` + 如果提示 `target is busy`,使用惰性卸载: + ```bash + sudo umount -l ~/shared + ``` + +2. **重新挂载并指定用户权限**: + ```bash + sudo mount -t davfs http://127.0.0.1:9843 ~/shared -o uid=1000,gid=1000 + ``` + **认证环节必须直接回车跳过**。 + +3. **验证**: + ```bash + touch ~/shared/test.txt + ls -l ~/shared + ``` + +--- + +#### 阶段5:配置文件语法错误排查 + +**问题**:修改 `/etc/davfs2/davfs2.conf` 后挂载报错: +``` +/sbin/mount.davfs: /etc/davfs2/davfs2.conf:78: unknown option +``` + +**原因**:`davfs2` 的全局配置文件不支持 `uid`/`gid` 选项(某些版本限制)。 + +**解决方案**: +- **方式一**(推荐):注释掉配置文件中添加的 `uid`/`gid` 行,改用**命令行参数**指定: + ```bash + sudo sed -i '78,79s/^/#/' /etc/davfs2/davfs2.conf + ``` +- **方式二**:将 `uid`/`gid` 写入 `/etc/fstab`(见下文永久挂载方案)。 + +--- + +### 三、最终稳定方案总结 + +#### ✅ 每次手动挂载(已验证) +```bash +cd ~ # 先退出挂载目录 +sudo umount ~/shared # 如果已挂载,先卸载 +sudo mount -t davfs http://127.0.0.1:9843 ~/shared -o uid=1000,gid=1000 +# 遇到 Username/Password 提示时,直接按 Enter 跳过 +``` + +#### ✅ 永久挂载(推荐) +编辑 `/etc/fstab`,添加一行: +``` +https://127.0.0.1:9843 /home/cyy/shared davfs rw,noauto,user,uid=1000,gid=1000 0 0 +``` +之后每次挂载只需: +```bash +mount ~/shared +``` +无需 `sudo`,无认证提示,权限自动生效。 + +--- + +### 四、关键经验与避坑指南 + +| 问题 | 原因 | 正确做法 | +|------|------|----------| +| 找不到 `arm64` 镜像 | 镜像分开放置 | 去 `ubuntu-cdimage` 或 `ubuntu-ports` 找 | +| `virtiofsd` 无法安装 | ARM64 软件源无此包 | 放弃 `virtiofs`,改用 SPICE WebDAV | +| 挂载后无法写入 | 未指定 `uid`/`gid` | 挂载时用 `-o uid=1000,gid=1000` | +| 认证弹窗干扰 | 输入了用户名/密码 | **直接回车跳过**(本地服务无需认证) | +| 卸载提示 `busy` | 终端在挂载目录内 | 先 `cd ~`,再 `umount` | +| 配置文件报错 | `davfs2.conf` 不支持 `uid`/`gid` | 注释掉,改用命令行或 `/etc/fstab` | + +--- + +### 五、最终环境状态 + +- ✅ UTM 虚拟机运行 Ubuntu 22.04.5 ARM64 +- ✅ SPICE WebDAV 共享文件夹正常工作 +- ✅ 普通用户 `cyy` 可读写共享目录 +- ✅ 可选用 `fstab` 自动挂载方案 + +--- + +如果你后续需要配置 YOLOv8 环境或其他开发工具,这份总结可以作为你的基础环境配置文档。有问题随时再问! 🚀 \ No newline at end of file