前言

本人是学生,之前没有接触过各种派,得到一块庐山派,不想用mircopython就四处查阅求证加实操,终于跑通了linux。以下当记录为主,可作为教程参考。

全过程主要参考嘉楠官网文档https://developer.canaan-creative.com/k230_linux/dev/,以及D(eepseek)老师和K(imi)老师的帮助。

 

一 环境配置以及编译

这里无比顺利,没有遇到什么坑,直接跟着官网进行。

有一点,依赖安装部分,有问题,应该是

sudo apt-get install -y wget git sed make binutils build-essential diffutils gcc g++ bash patch gzip bzip2 perl tar cpio unzip rsync file bc findutils wget libncurses-dev python3 libssl-dev gawk cmake bison flex bash-completion parted curl

因为之前在系统上配置过ros,px4,anaconda...等等各种环境,这些依赖都已经装全了,就没有遇到什么问题。Docker没用过,不会。

编译部分

make CONF=k230_canmv_lckfb_defconfig

然后就开始编译了,扔那就不用管了,连不上会自动retry。从11.00左右编译到13.00,两个小时主要用retry来下载文件了,电脑风扇都没怎么转。下面提供编译好的镜像文件。

链接:https://pan.baidu.com/s/1ujF6FC5yAbNvYQoSICSKyQ?pwd=6vy8 
提取码:6vy8

二 烧录

这一阶段有点挫折,第一点查资料是发现有人说对内存卡有要求,但是自己没遇到,正常能够烧写。

我的烧写是在win11用refuns进行的,烧录上之后死活读不到,经历了各种尝试,最后在嘉楠开发者问答社区得到了答案。立创开发板需要外接一个转串口的板子进行数据通信,实测接串口0,typeC插口只用来供电。

参考:

嘉立创 的串口默认是ttl电路,需要外接串口小板才能看到串口信息。(没有任何程序,只要cpu有电,按下reset按键 就可以看到输出信息),串口参数是 115200,8,1,没有流控。 参考连接见下图,
参考资料:

UART(串口通讯) | 01Studio
串口通讯【UART】 | 立创开发板技术文档中心

 

1️⃣是串口2(亦可复用为iic,最重要的外接通讯接口),2️⃣是串口3(当前固件没被占用,但如果使用的是Linux+RT-Smart SDK就会被小核占用,如果用最新的CanMV固件则用户可以使用),3️⃣是串口0(被RT-Smart占用,最新的CanMV K230固件中只在大核中运行了RT-Smart)

 

 

三 连接板子

linux主要通过串口和主机通信,我使用的是minicom,先连接串口,不要给板子供电。

参考【minicom】Linux串口调试工具 - minicom的安装及使用-CSDN博客 完成安装和配置然后打开串口

minicom -D /dev/ttyUSB0 -b 115200 

这时给板子上电就能看到启动信息了。

我在这里遇到了问题,把日志文件复制给K老师,发现是分区表错误。之后误打误撞拔了内存卡连到电脑上想看看内存卡什么情况,查看内存卡的分区也报错了。

把它复制给K老师解决了问题,下面直接贴出来K老师的回答。

从你提供的 fdisk 输出来看,/dev/sda 的 GPT 分区表存在一些问题,但备份 GPT 表看起来是正常的。以下是关键信息和建议的解决步骤:

关键信息

  1. GPT PMBR 大小不匹配

    GPT PMBR size mismatch (786471 != 15730687) will be corrected by write.

    这表明主 GPT 表和备份 GPT 表的大小不一致,fdisk 已经尝试自动修正。

  2. 主 GPT 表损坏

    The primary GPT table is corrupt, but the backup appears OK, so that will be used.

    主 GPT 表损坏,但备份 GPT 表是正常的,系统已经使用备份 GPT 表。

  3. 分区信息

    • /dev/sda1:从 61440 到 225279,大小为 80M,类型为 Linux 文件系统。

    • /dev/sda2:从 262144 到 786431,大小为 256M,类型为 Linux 文件系统。

解决步骤

1. 修复 GPT 表

由于备份 GPT 表是正常的,可以使用 fdisksgdisk 工具修复主 GPT 表。以下是具体步骤:

使用 fdisk 修复

  1. 打开终端并运行以下命令:

    bash复制

    sudo fdisk /dev/sda
  2. fdisk 提示符下,输入 w 并按回车键。这将写入更改并修复主 GPT 表。

    Command (m for help): w

    这将提示你确认是否要写入更改,输入 Y 确认。

2. 验证修复结果

修复完成后,再次运行 fdisk -l 检查 GPT 表是否修复成功:

bash复制

sudo fdisk -l /dev/sda

如果不再显示“主 GPT 表损坏”等错误信息,说明修复成功。

这时候把卡插到板子里重新接串口上电就成功启动了,然后提示你登陆,输入root回车,登录成功,这就成功连上了板子。

四 传输文件&helloworld

进去直接在root路径下,这里我cd ..进了/目录,我不太懂它下面的目录结构,tree一下太长了就放弃了,直接在/目录下建了一个home存放自己的文件。

 

然后在ubuntu主机下写一个helloworld,用安装的工具链编译一下。

之后就面临一个问题,怎么把编译好的文件传输到板子,这里贴出D老师回答。

 

---

#### 一、确认开发板与主机的连接方式
在复制文件前,需确保开发板与主机(Ubuntu电脑)已建立以下至少一种连接:
1. **通过USB虚拟网卡(推荐)**:开发板通过Type-C线连接到电脑时,可能会自动创建虚拟网络接口。
2. **通过有线/无线网络**:开发板通过网线或Wi-Fi连接到与主机同一局域网。
3. **通过U盘/TF卡挂载**:直接通过存储设备拷贝。

---

### 二、方法1:使用 `scp` 命令(网络传输)
**适用场景**:开发板已联网且能通过SSH访问。

##### 1. **检查开发板IP地址**
   • 在开发板串口终端输入:
     ```bash
     ifconfig  # 查看IP地址(如eth0或usb0网卡)
     ```
   • 如果通过Type-C线连接,开发板可能通过`usb0`网卡分配IP(常见IP:`192.168.1.10`)。

##### 2. **从Ubuntu主机传输文件**
   • 假设开发板IP为`192.168.1.10`,文件名为`hello`:
     ```bash
     scp hello root@192.168.1.10:/root/  # 复制到开发板/root目录
     ```
   • 输入默认密码(如有):
     ◦ 如果开发板系统未设置密码,直接按回车。
     ◦ 部分镜像默认无密码,直接传输成功。

##### 3. **在开发板验证文件**
   • 在开发板终端执行:
     ```bash
     ls /root/hello  # 查看文件是否存在
     chmod +x /root/hello  # 添加可执行权限
     /root/hello      # 运行程序
     ```

---

### 三、方法2:通过U盘挂载
**适用场景**:开发板无网络,需通过物理存储设备传输。

##### 1. **在Ubuntu主机操作**
   • 将U盘插入电脑,格式化为FAT32(开发板可识别)。
   • 复制文件到U盘:
     ```bash
     cp hello /media/你的用户名/U盘名称/
     sync  # 确保数据写入
     ```

##### 2. **在开发板挂载U盘**
   • 将U盘插入开发板USB口。
   • 在开发板终端执行:
     ```bash
     mkdir -p /mnt/usb  # 创建挂载点
     mount /dev/sda1 /mnt/usb  # 挂载U盘(sda1需根据实际情况修改)
     ls /mnt/usb        # 查看文件
     cp /mnt/usb/hello /root/  # 复制到开发板
     umount /mnt/usb    # 卸载U盘
     ```

---

### 四、方法3:通过串口工具 `rz/sz`
**适用场景**:开发板无网络且无USB接口,需通过串口传输。

##### 1. **在开发板安装 `lrzsz` 工具**
   • 在开发板终端执行:
     ```bash
     opkg update        # 更新软件源(需联网)
     opkg install lrzsz # 安装工具
     ```

##### 2. **从Ubuntu主机发送文件**
   • 在开发板终端进入接收目录:
     ```bash
     cd /root
     ```
   • 执行接收命令:
     ```bash
     rz -y  # 等待接收文件
     ```
   • 在Ubuntu主机使用串口工具(如`picocom`或`minicom`)发送文件:
     ◦ 使用支持ZMODEM协议的终端(如`minicom`),按快捷键发送文件(如`Ctrl+A + S`)。
   • **替代方案**:使用`screen`发送:
     ```bash
     screen /dev/ttyACM0 115200
     # 在screen会话中按Ctrl+A + :,输入 exec !! sz hello
     ```

---

### 五、方法4:直接打包到镜像(适用于频繁修改)
**适用场景**:需将文件永久保留在系统镜像中。

##### 1. **在SDK中集成文件**
   • 将编译好的文件(如`hello`)放入SDK目录:
     ```bash
     cp hello k230_linux_sdk/buildroot-overlay/board/canaan/k230/rootfs-overlay/root/
     ```
   • 重新编译镜像:
     ```bash
     make CONF=k230_canmv_defconfig
     ```
   • 烧录新镜像到TF卡。

##### 2. **在开发板验证**
   • 启动后检查文件位置:
     ```bash
     ls /root/hello
     ```

---

### 六、常见问题解决
1. **`scp`连接失败**  
   • 检查开发板SSH服务是否启动:
     ```bash
     netstat -ltn | grep 22  # 查看22端口是否监听
     ```
   • 如果未启动,在开发板执行:
     ```bash
     /etc/init.d/sshd start  # 启动SSH服务
     ```

2. **U盘无法挂载**  
   • 确认U盘格式为FAT32/NTFS/EXT4(开发板内核需支持)。
   • 检查设备节点:
     ```bash
     dmesg | tail  # 查看插入U盘后的内核日志
     ```

3. **`rz/sz`传输中断**  
   • 确保串口波特率设置为115200且无数据干扰。
   • 使用更稳定的串口工具(如`picocom`)。

---

### 七、推荐方案
• **优先使用`scp`传输**:需开发板联网,速度快且无需物理设备。
• **临时测试用`rz/sz`**:适合小文件传输,但速度较慢。
• **长期集成用镜像打包**:适合预置应用程序或频繁更新的场景。

我尝试了使用rz,板子的终端cd到home下,运行rz -y。然后使用minicom传输文件,传输成功后运行,成功。

 

  1. 触发文件发送快捷键

    • 在 Minicom 会话中,按下 ​**Ctrl+A** 进入命令模式。
    • 紧接着按下 ​**S**​(大写),启动 ZMODEM 文件发送。
  2. 选择文件传输协议

    • 出现协议选择菜单:
      [选协议] 
      (X) ZMODEM
      ( ) YMODEM
      ( ) XMODEM
      ( ) Kermit
      ( ) ASCII
    • 用方向键选择 ​**ZMODEM**,回车确认。
  3. 浏览并选择文件

    • 进入文件选择界面,默认显示当前目录的文件列表。
    • 导航操作
      • 方向键:上下移动光标。
      • 空格键:选中/取消选中文件。
      • 回车键:进入子目录或确认选择。
    • 快捷键
      • T:切换文件排序方式(名称/时间)。
      • /:输入路径快速跳转(如 /home/user/files)。
      • ?:显示帮助信息。
  4. 开始传输

    • 选中文件后,按 ​**Enter** 开始发送。
    • 传输进度会显示在底部状态栏:
      Sending: file.txt (100% Complete)   Speed: 115200 B/s
  5. 返回会话

    • 传输完成后自动返回 Minicom 终端界面。

 

 

 

至此就在庐山派上跑通了linux,接下来就能进行开发学习了。

 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐