ZYNQ7020系列上ARM的Linux开发
专栏旨在分享一下ZYNQ7020系列的学习经验,主要是在ZYNQ7020系列上移植Linux以及在Linux上开发过程中遇到的一些问题和最终的解决方案。
逸璞丷昊
这个作者很懒,什么都没留下…
展开
-
Linux上电自动配置参数之自动配置IP地址 - ZYNQ7021学习
对于我这类初学者,移植好Linux后,Linux上电后的第一件事就是配置一些参数,我是基于多以太网的例程移植的Linux系统,上电后的第一件事就是配置五个网口的 IP 地址,虽然只是五个 ifconfig 的语句,但是总是这样来来回回的配置,也会很浪费时间。基于上电后自动挂载SD卡的前提下,可以每次都需要用到的配置信息编写为一个脚本,在每次上电后自动运行这个脚本就可以完成自动配置的功能了。具体实现...原创 2018-10-17 21:53:45 · 2208 阅读 · 0 评论 -
从SD卡中的 ext4 文件系统加载Linux - ZYNQ7021学习
按照黑金教程移植的Linux,开发板启动后挂载的文件系统其实是 uImage 镜像中小文件系统(即 ramdisk 中的文件系统)。Linux启动后会出现这样的提示 “mmc1: tried to reset card”、“blk_update_request: I/O error, dev mmcblk1rpmb, sector 0”、“mmcblk1rpmb: timed out sendin...原创 2018-10-22 19:56:21 · 1817 阅读 · 0 评论 -
Linux上电自动挂载SD卡和文件系统的修改 - ZYNQ7021学习
参照黑金例程在ZYNQ开发板上移植好Linux系统后,默认是没有加载SD卡的。因此每次断电后,在Linux上的配置信息全部丢失,每次上电后都要重复配置,非常的不方便,经过死皮烂脸的求问和网上查资料之后,终于实现了这个功能,在这里分享一下我通过新建petalinux的开机自启 App 的方法,实现在ZYNQ7021开发板跑的Linux上开机自动挂载SD的过程。手动挂载SD卡要挂在SD卡,第一...原创 2018-10-17 21:06:50 · 6697 阅读 · 1 评论 -
ARM上Linux的TCP多线程通信(带select函数)例程 - ZYNQ7021学习
在我的另一篇博客中介绍了Linux下TCP的通信流程以及简单TCP通信实例的实现。在学习网络编程时,经常看到这样一句话:“只有使用了select函数才能写出像样的网络程序”,所以这篇博客分享一个带有select函数实现的TCP多线网络通信。服务器代码如下:#include <stdio.h>#include <stdlib.h>#include &l...原创 2018-08-03 16:35:19 · 1718 阅读 · 3 评论 -
ARM上Linux的TCP通信实例 - ZYNQ7020学习
这是在接触一段时间的Linux网络通信后回过来给自己重新熟悉一些基本函数功能,所以,这里不做任何代码注释,自己慢慢去查看每一个函数的原型、参数含义、返回值以及调用方式,这样才能真正学到东西。服务器代码:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <er...原创 2018-06-21 09:47:30 · 4366 阅读 · 0 评论 -
select函数详解与不同系统下的区别 - ZYNQ7021学习
重要区别 select函数在Linux和Windows下的区别主要是第一个参数“int n”,使用时需要特别注意。Linux下的“n”为所有设备描述符的最大值加一,即 n = fdmax +1,当然,这里 n 直接设置一个很大的值也行(比如1024);而Windows这个参数可以随意,默认赋值为 n = 0 即可。这里很容易理解,但是在Linux编程时混淆的话,后果还是很严重...原创 2018-06-14 22:32:28 · 535 阅读 · 0 评论 -
客户端断开导致服务器退出的解决方法 - ZYNQ7021学习
客户端断开导致服务器进程退出,其根本原因是由服务器端的 send 函数导致的。在 linux 下写 socket 的程序的时候,如果尝试 send 到一个 disconnected socket 上,就会让底层抛出一个 SIGPIPE 信号。这个信号的缺省处理方法是退出进程(send函数的flags参数设置为0),不会看到任何的提示。这里介绍两种解决方法。方法一 将...原创 2018-06-14 22:33:10 · 3677 阅读 · 0 评论 -
TCP服务器如何判断客户端Socket断开连接 - ZYNQ7021学习
ARM上基于Linux编写的 TCP 服务器,当客户端断开连接时,使用 select 函数的情况下,服务器仍然会接收到一个信号,在 select 函数会将这个设备描述符标记为可读/写,然后调用 recv 函数,若 recv 函数返回值为 0,则表示客户端已经断开,服务器需要将对应的 Socket 套接字关闭掉,让数据写回磁盘,并释放文件所占用的资源。第一步 判断多...原创 2018-07-01 00:02:42 · 6782 阅读 · 0 评论 -
通过共享文件夹高效调试ARM上Linux的C/C++程序 - ZYNQ7021学习
这是一篇博客主要讲如何使用windows和Ubuntu虚拟机联合高效调试ARM上linux的C/C++项目,是在做ARM上linux的C/C++应用程序开发的小总结。开发环境系统: Windows 10 Pro 64位 Ubuntu 16.04 64位软件: Microsoft Visual Studio 2010问题描述...原创 2018-06-07 00:17:11 · 1367 阅读 · 0 评论 -
Windows主机使用两个IP进行项目调试和上网 - ZYNQ7021学习
当你的电脑只有一个网卡却需要使用两个IP工作时,这篇博客应该可以对你有所帮助。特别是在做网络通信开发时,来回更改IP是一件很痛苦的事情,并且处于无法联网状态,各种诸多不便。这篇博客是在做ZYNQ的多以太网调试时的一个小总结,希望对有需要的人有所帮助。电脑系统版本 Windows 10 Pro 64位多IP配置说明 首先,说明一下当以太网的TCP/IPv4的属性为...原创 2018-06-05 15:30:52 · 2115 阅读 · 0 评论 -
搭建Win10与Ubuntu虚拟机的共享文件夹 - ZYNQ7021学习
在进行ZYNQ的linux的开发的时候,当程序代码很大的时候,Ubuntu下的编辑器不能随意跳转函数,这是一个很大的麻烦,软件调试修改时候非常不方便。如果将代码放在Windows下的VS进行编写,再利用Ubuntu环境进行编译,结合nfs网络文件系统进行调试,感觉这能大大提高了linux下开发的速率(菜鸟的自我感觉)。之前写过了nfs网络文件系统的安装与调试,这里补一个共享文件夹的搭...原创 2018-06-01 09:35:48 · 11543 阅读 · 1 评论 -
完美解决ARM上Linux 双/多网卡不能工作在同一网段的问题 - ZYNQ7021学习
首先,要抛出的一个问题,在多网口的ZYNQ开发板上,当五个网口处于同一个网段时,它们之间是完全能够相互ping通。关于同一网段的测试在网口测试报告中已做详细说明,接下来添加路由表后的测试结果。修改路由表: 在开发板上使用指令“route add -host 30.252.22.141 dev eth2”, 所有需要发往30.252.22.141地址的IP数据包,全...原创 2018-07-06 15:11:34 · 10716 阅读 · 13 评论 -
ZYNQ7020多网口不能工作在同一网段的问题与测试报告 - ZYNQ7021学习
测试环境 ZYNQ7020的开发板上一共有五个以太网网口,分别给PL端网口配置了同网段的四个IP。问题描述 从电脑上ping这四个网口时,都能收到回复,但是仔细检查发现,当拔掉三根网线后,仍然能够ping通原设定的其他网口的IP。测试结果 关于同一网段IP的测试结果,系统启动时按照附录脚本配置网口。首先将网口接在eth1上,在电脑上ping...原创 2018-05-15 22:16:51 · 4305 阅读 · 5 评论 -
ZYNQ7020在linux下UART0、UART1双串口的实现 - ZYNQ7021学习
基于黑金的多以太网进行的多串口实验,UART0和UART1都使用的是PS端的引脚,不需要进行引脚分配。首先我们先双击ZYNQ核勾选UART0的引脚如下图所示,其他配置均不用修改,点击OK完成。然后与正常的工程一样,点击Run Implementation --> 产上Bit流文件 --> 硬件导出 --> 打开SDK。将design_1_wrapper_hw_pl...原创 2018-05-06 19:37:00 · 11477 阅读 · 7 评论 -
ZYNQ7020在linux下双串口之EMIO实现UART0 - ZYNQ7021学习
基于黑金的多以太网进行的多串口实验,这里主要讲UART0的EMIO引脚实现,略过很多细节,具体相关的步骤请参考我的另一篇双串口博客https://blog.csdn.net/yishuicanhong/article/details/80213158。配置ZYNQ核首先我们先双击ZYNQ核,修改UART0的引脚。如图添加约束文件...原创 2018-05-14 09:43:51 · 5814 阅读 · 3 评论 -
Ubuntu下petalinux移植中设备树的修改 - ZYNQ7021学习
Device Tree是一种描述硬件的数据结构,由一系列被命名的结点(node)和属性(property)组成,而结点本身可包含子结点。所谓属性,其实就是成对出现的name和value。在Device Tree中,可描述的信息包括(原先这些信息大多被hard code到kernel中):CPU的数量和类别,内存基地址和大小,总线和桥,外设连接,中断控制器和中断使用情况,GPIO控制器和GPIO使用...原创 2018-05-06 11:55:01 · 10671 阅读 · 1 评论 -
vivado中简单testbench测试代码的编写 - ZYNQ7021学习
首先要明白测试代码的作用,这点其实很重要!测试代码其实就是通过代码模拟产生测试的环境,然后测试自己编写的模块代码是否正确。这可以指导我们在编写代码过程中决定某一些控制信号该如何产生,比如用于控制产生测试信号的控制信号,可以在一个 initial 模块里去改变这个值,而测试信号中的控制信号,应该在时钟下产生。1、 将测试代码模块命名为 sim_crc_to_ram, 并且不需要任何输入信号。...原创 2018-08-03 15:44:16 · 27603 阅读 · 0 评论 -
linux开发环境的搭建与petalinux的安装 - ZYNQ7021学习
参考:https://www.cnblogs.com/vacajk/p/6146146.html,针对遇到的问题作出解决。开发环境 Win10、VMware12、Ubuntu 16.04 64 bit、Vivado 2015.4。Step1:VMware Tools问题我在同时在台式机和笔记本上都配置过开发环境,都没有遇到这个问题,鉴于前人的经验,这里还是说明一下。VMware自动安装...转载 2018-04-14 22:18:29 · 2802 阅读 · 1 评论 -
ZYNQ开发板的NFS文件系统安装 - ZYNQ7021学习
这篇博客主要讲解NFS的安装和开发板与Linux虚拟机如何mount成功。重点讲解如何mount成功。NFS 文件系统的原理: 通过网络将 PC ubuntu Linux NFS server 上的文件,mount到开发板上,使得开发板操作这些文件,就像是操作使用本地文件一样。简单一点说,就是在 PC ubuntu Linux server的NFS 文件夹下,编译一个 Linux app 如...原创 2018-04-14 22:25:49 · 3302 阅读 · 4 评论 -
虚拟机安装Ubuntu及“二进制转换与此平台长模式不兼容”的解决 - ZYNQ7021学习
1、虚拟机的安装虚拟机的安装软件版本为 VMware-worksation-full 12.1.1,双击 “VMware-workstation-full-12.1.1-3770994.exe”,用户叧要按照默认安装项一直点"Next"键来进行安装。安装完成的最后一个界面里,我们需要选择许可证来输入一个VMware12 的安装密钥,在此给大家提供亲测可用的两个: GA1T2-4JF1P-481...原创 2018-04-14 22:11:37 · 2550 阅读 · 0 评论