读懂 PetaLinux:让 Linux 在 Zynq 上轻松起“跑”(转)
对于Zynq这样一个“ARM+可编程逻辑”异构处理系统我们已经不陌生,其创新性大家也有目共睹。不过想要让更多的应用享受到这一“创新”带来的红利,让其真正“落地”则需要大量系统性的工作,去营造一个完善的生态系统。从之前几篇文章中,我们已经看到Xilinx在这方面做出的努力,特别是不断迭代的先进的硬件开发(Vivado)和软件开发(Xilinx SDK)工具。而在嵌入式开发中,还有一个非常重要的环节需要关注,这就是操作系统。
对于日益智能和复杂的嵌入式系统来说,通过一个嵌入式操作系统来统领软硬件资源的调度和控制是必然之选,如果需要更为全面的功能,开发者就要考虑嵌入式Linux这样体量更“大”更复杂的OS。而面对Zynq这样一个大家都想“尝鲜”的创新硬件处理平台,如果能有一种便捷的方式,让嵌入式Linux在它上面“跑”起来,当然是开发者的福利。
图1,基于Zynq平台的嵌入式系统结构
这样的事儿,Xilinx早已想到并着手布局了,最终呈现在开发者面前的就是Petalinux。PetaLinux是一个工具集,包括了Linux, u-boot的源代码、库,以及Yocto Recipes,可以让客户很方便地配置、Build以及Deploy Linux。PetaLinux支持Zynq UltraScale+ MPSoC、 Zynq-7000全可编程SoC,以及MicroBlaze,可与Xilinx硬件设计工具Vivado协同工作,大大简化了Linux系统的开发。
使用PetaLinux工具,开发人员可以定制u-boot、Linux内核或Linux应用,开发者还可以通过网络或JTAG在随附的全系统仿真器 (QEMU) 或物理硬件上添加新的内核、器件驱动程序、应用和库,以及启动并测试软件协议栈,完成从系统启动到执行的所有操作。在主机端提供的PetaLinux工具包括:
- 命令行接界面
- 应用、器件驱动程序、库生成器以及开发模板
- 可引导的系统镜像生成器
- 调试代理程序
- GCC工具
- 集成的QEMU全系统仿真器
- 自动化工具
- 支持Xilinx系统调试器
图2,Petalinux工具
值得一提的是,为了能够让PetaLinux这一“简便”工具的使用变得更为简便,Avnet在近日举办的MiniZed Speedway培训活动中,专门设置了一个培训模块,从如何安装PetaLinux开始,全方位讲解如何使用PetaLinux在MiniZed板上创建一个嵌入式Linux,并进行应用开发。培训中重点的知识点包括:
- Petalinux概览
- Petalinux设计流程介绍
- Yacto项目概述
- 设备树(Device Tree)基础
- Petalinux用户应用开发
- 定制化Petalinux
这次PetaLinux工具培训相关的实验环节,更突出实操性,学员可以学习到如何使用PetaLinux工具导入自己的FPGA硬件设计,集成用户应用程序,以及配置和定制化Linux。在实验中,还特别通过一个具体的物联网应用范例,指导用户使用范例提供的应用代码通过TE Connectivity的HTU21D I2C传感器获取数据,并将周期性发布的传感器数据利用MQTT协议将其传送至云端。通过实验,学员可以掌握的开发技能包括:
- 工具安装:安装虚拟机-VirtualBox、Ubuntu、Vivado、SDK和Petalinux
- 使用Petalinux创建、配置和创建最小化的Linux
- 使用MiniZed经过Wi-Fi链接至LAN
- 使用Xilinx SDK为MiniZed创建Linux应用
- IoT应用实例:将MQTT集成到一个Linux 应用中
可以说,PetaLinux为Zynq应用开发提供了有力的助推,“读”懂了TA,就可让Zynq去应对更多应用场景的需要,也让更多基于嵌入式 Linux的用户应用在Zynq上畅快地奔跑起来!
http://xilinx.eetrend.com/
读懂 PetaLinux:让 Linux 在 Zynq 上轻松起“跑”(转)的更多相关文章
- 在ZYNQ上裸机跑ARM程序的演示
今天给大家演示如何在ZYNQ上,裸机跑ARM程序,本测试用的是米尔Z-turn Board单板,测试代码用的XILINX官方的C语言测试程序,用于测试挂接在ARM总线上的设备是否正常,并在串口终端打印 ...
- 读懂系统负载(Load Avg)的含义 | Devops
有过运维Linux服务器的选手,想必对于系统平均负载(load averages)参数不会陌生吧,我们可以通过top, htop, uptime这些命令找到它们(如下图),那么我们又改如何理解它们呢, ...
- 一文读懂高性能网络编程中的I/O模型
1.前言 随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力.本文(和下篇<高性能网络编程(六):一文读懂高性能网络编程中的线程模型>)旨在为大家提供有用的 ...
- 读懂SAP Leonardo物联网平台
读懂SAP Leonardo物联网平台 https://blog.csdn.net/weixin_42137700/article/details/81903290 本文比较系统.全面地介绍了SAP ...
- 一篇文章,读懂Netty的高性能架构之道
一篇文章,读懂Netty的高性能架构之道 Netty是由JBOSS提供的一个java开源框架,是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架, ...
- 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?
本文引用了“蔷薇Nina”的“Nginx 相关介绍(Nginx是什么?能干嘛?)”一文部分内容,感谢作者的无私分享. 1.引言 Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡 ...
- 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别
1.引言 很多初涉网络编程的程序员,在研究Java NIO(即异步IO)和经典IO(也就是常说的阻塞式IO)的API时,很快就会发现一个问题:我什么时候应该使用经典IO,什么时候应该使用NIO? 在本 ...
- 一片非常有趣的文章 三分钟读懂TT猫分布式、微服务和集群之路
原文http://www.cnblogs.com/smallSevens/p/7501932.html#3782600 三分钟读懂TT猫分布式.微服务和集群之路 针对新手入门的普及,有过大型网站技 ...
- 每个程序员都可以「懂」一点 Linux
提到 Linux,作为程序员来说一定都不陌生.但如果说到「懂」Linux,可能就没有那么多人有把握了.到底用 Linux 离懂 Linux 有多远?如果决定学习 Linux,应该怎么开始?要学到什么程 ...
随机推荐
- ios初识UITableView及简单用法一
// // ViewController.m // ZQRTableViewTest // // Created by zzqqrr on 17/8/24. // Copyright (c) 2017 ...
- 使用golang编写prometheus metrics exporter
metrcis输出 collector.go package main import ( "github.com/prometheus/client_golang/prometheus&qu ...
- 莫烦tensorflow(1)-训练线性函数模型
import tensorflow as tfimport numpy as np #create datax_data = np.random.rand(100).astype(np.float32 ...
- ubuntu 安装php ,apache 问题总结
1.apache没有权限 修改log cd /var/www chmod -R 777 html/ 2. The bootstrap/cache directory must be presen ...
- SQL注入之Sqli-labs系列第二十九关(基于WAF防护的单引号报错注入)
开始挑战第二十九关(Protection with WAF) 0x1查看源码 (1)login.php页面存在防护,只要检测到存在问题就跳转到hacked.php页面(其他信息看备注) 0x2 for ...
- i.MX6 u-boot 怎么确定板级头文件
/********************************************************************** * i.MX6 u-boot 怎么确定板级头文件 * 说 ...
- TX2-static-dhcp-network
前言 之前是使用私有的镜像而不是按照nvidia官网中JetPack3.2套件的镜像对TX2板子进行刷机,刷机之后发现网络不能正常连接,即使已经连接了有线网口,经过大师的指点才终于明白了其中的一点点奥 ...
- dubbo AdaptiveExtension
AdaptiveExtension 自适应Extension,作者其实在使用Extension方和Extension之间插入AdaptiveExtension用来自适应,也可以说是适配. 所以,我们发 ...
- 九度OJ-1042-最长公共子序列(LCS)
题目1042:Coincidence 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4045 解决:2208 题目描述: Find a longest common subsequence ...
- Python 模块管理1
Python 模块管理 导入新的模块 创建一个 calculate.py 文件 print('ok') def add(x,y): return x + y def sub(x,y): retur ...