立创庐山派 linux-sdk 从编译到 helloworld 记录
前言
本人是学生,之前没有接触过各种派,得到一块庐山派,不想用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,没有流控。 参考连接见下图,
参考资料:
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 表看起来是正常的。以下是关键信息和建议的解决步骤:关键信息
GPT PMBR 大小不匹配:
GPT PMBR size mismatch (786471 != 15730687) will be corrected by write.这表明主 GPT 表和备份 GPT 表的大小不一致,
fdisk已经尝试自动修正。主 GPT 表损坏:
The primary GPT table is corrupt, but the backup appears OK, so that will be used.主 GPT 表损坏,但备份 GPT 表是正常的,系统已经使用备份 GPT 表。
分区信息:
/dev/sda1:从 61440 到 225279,大小为 80M,类型为 Linux 文件系统。
/dev/sda2:从 262144 到 786431,大小为 256M,类型为 Linux 文件系统。解决步骤
1. 修复 GPT 表
由于备份 GPT 表是正常的,可以使用
fdisk或sgdisk工具修复主 GPT 表。以下是具体步骤:使用
fdisk修复
打开终端并运行以下命令:
bash复制
sudo fdisk /dev/sda在
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传输文件,传输成功后运行,成功。
触发文件发送快捷键
- 在 Minicom 会话中,按下 **
Ctrl+A** 进入命令模式。- 紧接着按下 **
S**(大写),启动 ZMODEM 文件发送。选择文件传输协议
- 出现协议选择菜单:
[选协议] (X) ZMODEM ( ) YMODEM ( ) XMODEM ( ) Kermit ( ) ASCII- 用方向键选择 **
ZMODEM**,回车确认。浏览并选择文件
- 进入文件选择界面,默认显示当前目录的文件列表。
- 导航操作:
- 方向键:上下移动光标。
- 空格键:选中/取消选中文件。
- 回车键:进入子目录或确认选择。
- 快捷键:
T:切换文件排序方式(名称/时间)。/:输入路径快速跳转(如/home/user/files)。?:显示帮助信息。开始传输
- 选中文件后,按 **
Enter** 开始发送。- 传输进度会显示在底部状态栏:
Sending: file.txt (100% Complete) Speed: 115200 B/s返回会话
- 传输完成后自动返回 Minicom 终端界面。

至此就在庐山派上跑通了linux,接下来就能进行开发学习了。
更多推荐
所有评论(0)