Zynq MPSOC Linux开发踩坑记录

在Zynq MPSoC上进行Linux开发可谓是一步一个坑,这篇文章记录一下要点和问题解决的经过

要点1 使用PuTTY或MobaXterm

串口访问Linux实现终端功能时,必须使用PuTTY,MobaXterm等软件,如果是XCOM,串口调试助手等软件虽然能接受信息和发送命令,但遇到以下情形就无能为力了

  1. ping的时候需要按 Ctrl + C 终止
  2. 需要修改某个文件的内容,即 vi xxxfile

所以必须使用PuTTY或者MobaXterm,MobaXterm里面也是使用PuTTY套了一层壳,不过更新更好用一点

XCOM与MobaXterm使用对比

0

1

要点2 软件源更换

开发板部署好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镜像

2.1 这是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

问题解决,下图就是更换软件源后可以下载软件了 2

要点3 实现开发板Linux系统与开发主机之间的文件互传

最传统的方式是将SD卡在主机和开发板之间来回插拔复制文件,类似U盘的文件传输,缺点是不方便

教程推荐的方法是使用nfs共享文件夹,需要开发板和主机用网线相互连接网口,但我觉得使用还是不够方便,而且不能联网(到互联网)是个问题

最后我想到能不能使用SFTP,答案是肯定的,而且是最好的方法

需要用到一个路由器(连接到互联网),然后开发主机和开发板都和路由器相连,这样开发板和主机都处于同一局域网,可以实现文件互传,两者也可以连接到互联网

主机上使用FileZilla,需要开发板上Linux安装并启用ssh服务,然后ifconfig获得自身ip地址,然后在FileZilla里连接即可

sudo apt-get install openssh-server
sudo service ssh start

3

要点4 使用ssh代替串口访问开发板Linux系统

既然开启了ssh服务,而且开发板与主机处于同一局域网,那能用ssh远程访问代替串口吗,答案是肯定的

使用ssh远程访问linux系统比串口的体验更好

4

但使用ssh有个问题,就是必须知道开发板网口的ip地址,而这是路由器动态分配给开发板的

所以还是必须先用串口连接开发板,ifconfig知道ip地址后才能使用ssh

之后遇到新问题会持续更新...


本文章使用limfx的vscode插件快速发布