在Zynq MPSoC上进行Linux开发可谓是一步一个坑,这篇文章记录一下要点和问题解决的经过
串口访问Linux实现终端功能时,必须使用PuTTY,MobaXterm等软件,如果是XCOM,串口调试助手等软件虽然能接受信息和发送命令,但遇到以下情形就无能为力了
vi xxxfile
所以必须使用PuTTY或者MobaXterm,MobaXterm里面也是使用PuTTY套了一层壳,不过更新更好用一点
XCOM与MobaXterm使用对比
开发板部署好Linux系统后,将其以太网ETH2端口与路由器连接,是可以联网的,但想要进行apt-get
软件下载是不能成功的,所以需要更换软件源
一开始我直接参考网上的更换软件源操作,结果更换了很多个软件源如清华源,阿里源都不成功,后来发现是面向x86系统的软件源和面向ARM系统的软件源是不同的
更换软件源有两个注意点
一是系统版本,如Ubuntu22.04, 20.04, 18.04的软件源都不同
二是系统架构,x86和ARM采用两套软件源
比如这是清华镜像站的Ubuntu软件仓库 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
在里面就可以选Ubuntu版本以及针对ARM时使用ubuntu-ports镜像
这是Ubuntu 18.04 ARM架构系统可以使用的软件源
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
在开发板的Linux系统下操作,修改/etc/apt/sources.list
sudo vi /etc/apt/sources.list
将内容替换为上述内容,然后输入
sudo apt-get update
问题解决,下图就是更换软件源后可以下载软件了
最传统的方式是将SD卡在主机和开发板之间来回插拔复制文件,类似U盘的文件传输,缺点是不方便
教程推荐的方法是使用nfs共享文件夹,需要开发板和主机用网线相互连接网口,但我觉得使用还是不够方便,而且不能联网(到互联网)是个问题
最后我想到能不能使用SFTP,答案是肯定的,而且是最好的方法
需要用到一个路由器(连接到互联网),然后开发主机和开发板都和路由器相连,这样开发板和主机都处于同一局域网,可以实现文件互传,两者也可以连接到互联网
主机上使用FileZilla,需要开发板上Linux安装并启用ssh服务,然后ifconfig获得自身ip地址,然后在FileZilla里连接即可
sudo apt-get install openssh-server
sudo service ssh start
既然开启了ssh服务,而且开发板与主机处于同一局域网,那能用ssh远程访问代替串口吗,答案是肯定的
使用ssh远程访问linux系统比串口的体验更好
但使用ssh有个问题,就是必须知道开发板网口的ip地址,而这是路由器动态分配给开发板的
所以还是必须先用串口连接开发板,ifconfig知道ip地址后才能使用ssh
之后遇到新问题会持续更新...
本文章使用limfx的vscode插件快速发布