开发环境: 虚拟机:VMware® Workstation 15 Pro Ubuntu:16.04 LTS
Petalinux版本2018.3 SDK 2018.3
开发工具: TFTPD64.exe Xshell
环境搭建:
参考《3_领航者ZYNQ之嵌入式Linux开发指南_V1.5.2.pdf》
《course_s4_ZYNQ那些事儿-Linux实验篇V1.07.pdf》
这里主要记录下载整个环境搭建过程中遇到的问题和解决办法以及一些工具的安装使用。
笔者也是第一次在zyqn平台下搭建linux开发环境,参考《3_领航者ZYNQ之嵌入式Linux开发指南_V1.5.2.pdf》文档,当然这个文档是正点原子领航者zynq开发板文档,但是也适用于我们的板子(zynq7100)。
问题1 :固件烧写后boot可以正常启动kernel无法启动
按照文档的搭建好了开发环境,接下来就时在板子上跑起来我们的linux系统,这里我们的板子默认是从flash启动,所以需要烧写boot.BIN文件和FSBL.ELF文件到flash固定位置,在导入硬件hdf文件时需要对boot boot_commd kernel进行空间划分,目的是在上电时boot能够正常启动加载内核系统正常运行。但是在烧写完成之后板子重启发现boot能够正常起来但是不能获取到kernel
解决办法:增大bootenv空间

问题2:在解决上述问题之后内核还是无法正常启动
根据串口的打印信息为DMA出错内核被卡挂掉了。
解决办法:是因为硬件在生成hdf文件时配置了DMA,我们petalinux没有配置导致内核在启动时无法读取DMA相关信息,所以无法启动内核,这里只我用之前调试好的没有DMA的版本,在配置编译后内核就可以正常启动。
问题3:boot上电配置读取网卡地址错误,但是网口可正常使用
现象如下

分析原因:我们自己板子上使用的phy芯片是88E1111 用petalinux配置U-BOOT时没有找到对应的phy芯片型号所以读取PHY地址错误,但是在内核起来之后ping包是ok的,ssh和tftp服务也可以正常运行。

- 遗留问题:u-boot是否有配置改网卡的驱动。如果没有后期需手动添加。
Flash挂载:
1. 进入mnt目录创建一个用于挂载flash的文件夹sdisk3
$mkdir /mnt/sdisk3
2. 擦除用于挂载flash的分区,将其分区格式化为jff2文件格式
$ flash_eraseall -j /dev/mtd3
3. 手动挂载flash到sdisk3
$ mount -t jffs2 /dev/mtdblock3 /mnt/sdisk3

这里提示下因为之前已经对此区域擦除过,所以直接进行挂载。
SSH服务:
开启SSH服务以后我们直接可以在PC机上通过终端软件直接操作我们板子上的linux系统
1. 在虚拟机开启SSH服务:
sudo apt-get install openssh-server
上述命令安装 ssh 服务,ssh 的配置文件为/etc/ssh/sshd_config,使用默认配置即可
2. PC端打开Xshell软件


TFTP服务:
TFTP 作为一种简单的文件传输协议,在嵌入式开发中会经常使用到,开启TFTP服务主要是用于PC机和板子的文件互传。PC机作为服务器 板子作为客户端。
使用场景:
把windows下的文件写入到linux(嵌入式设备中);
下载地址:https://bitbucket.org/phjounin/tftpd64/wiki/D
1、下载安装完成后,运行程序:
2、选择windows下文件所在的文件夹: 
在安装目录创建文件夹data,将要发送到Linux中的文件放在这个文件夹中;
3、选择服务器接口:

这里选择的ip地址是在linux上用到的主机地址:(假设选择的是192.168.1.110这个地址)
4、做好上面的选择就可以使用了:
在linux系统终端输入:
a、从windows上传到linux:tftp -r 文件 -g 服务器地址
b、从linux上传到windows:tftp -l 文件 -p 服务器地址
例如:从windows上传到linu :tftp -r test.txt -g 192.168.1.110

本文记录了Zynq平台Linux开发过程中的问题及解决方案,包括固件烧写后kernel无法启动(增大bootenv空间)、内核启动时的DMA错误(使用无DMA配置的版本)和boot读取网卡地址错误(但网口功能正常)。通过调整Flash挂载、设置SSH服务和TFTP服务,实现了文件传输和系统通信。
7052

被折叠的 条评论
为什么被折叠?



