读懂 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,应该怎么开始?要学到什么程 ...
随机推荐
- Python 基础关于编码
一.编码的种类: 1 acsic码 基本不用 不同编码之间互用会产生乱码, 2unicode A 字母 4个字节 00000000 00000000 00100100 01000 ...
- array_udiff_uassoc
PHP array_udiff_uassoc 函数 一.函数功能: 计算出第一个数组与其他数组的差集(考虑键名和键值,对键名和键值的比较都使用自定义函数).比较两到多个数组,找出第一个数组中不包含在其 ...
- ubatu 安装nodejs npm liveserver
更新ubuntu软件源 sudo apt-get update sudo apt-get install -y python-software-properties software-properti ...
- Spring Boot 揭秘与实战(二) 数据缓存篇 - Guava Cache
文章目录 1. Guava Cache 集成 2. 个性化配置 3. 源代码 本文,讲解 Spring Boot 如何集成 Guava Cache,实现缓存. 在阅读「Spring Boot 揭秘与实 ...
- A记录和CNAME记录的区别
1.什么是域名解析? 域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程.IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址.域名的解 ...
- Django之模型层-多表操作
多表操作 数据库表关系 一对多:两个表之间的关系一旦确定为一对多,必须在数据多的表中创建关联字段 多对多:两个表之间的关系一定确定为多对多,必须创建第三张表(关联表) 一对一:一旦两个表之间的关系确定 ...
- 牛客OI赛制测试赛2
A题: https://www.nowcoder.com/acm/contest/185/A 链接:https://www.nowcoder.com/acm/contest/185/A来源:牛客网 题 ...
- jQuery 中json字符串与对象互转
json字符串转json对象:jQuery.parseJSON(jsonStr); json对象转json字符串:JSON.stringify(jsonObj);
- run
和配置块不同,运行块在注入器创建之后被执行,它是所有AngularJS应用中第一个被执行的方法运行块通常用来注册全局的事件监听器.例如,我们会在.run()块中设置路由事件的监听器以及过滤未经授权的请 ...
- Java中double转BigDecimal的注意事项
先上结论:不要直接用double变量作为构造BigDecimal的参数! 线上有这么一段Java代码逻辑: 1,接口传来一个JSON串,里面有个数字:57.3. 2,解析JSON并把这个数字保存在一个 ...