早年,尽管Python是一款比较简略上手的脚本言语,而且有强壮的社区支撑,一些非核算机专业范畴的人都选它作为入门言语。惋惜的是,它不能完结一些十分底层的操控,所以在硬件范畴并不起眼。
可是今时不同往日!
硬件圈相同十分重视Python!
说到Python用于硬件开发。许多人或许想到的是树莓派等支撑linux体系的(树莓派和Arduino运用Python的的比方实在是多,比方,运用Raspberry Pi的硬件和Python言语来完结一个机器人制造。),可是现在Python现已完全能够脱离体系,直接进行单片机的开发了。
用Python言语操控单片机
MicroPython是在单片机上能够跑的Python,你能够经过Python脚本言语开发单片机程序。MicroPython根据ANSI C,语法跟Pyton 3根本共同,具有自家的解析器、编译器、虚拟机和类库等。现在它支撑根据32-bit的ARM处理器,比方STM32F405、STM32f407等,也便是说ARM处理器STM32F405上直接可运转Python言语,用Python言语来操控单片机。
凭借Micro Python,用户完全能够经过Python脚本言语完结硬件底层的拜访和操控,比方说操控LED灯泡、LCD显示器、读取电压、操控电机、拜访SD卡等。
下面这篇美国EDN发布的文章,介绍了Python在实时嵌入式体系中扮演的人物:Python's role in developing real time embedded systems。
Python具有杰出的跨渠道性,比方Linux和Windows,或是比方Raspberry Pi等单板核算机。不过,跟着Python的日益遍及,人们或许会问,在实时嵌入式体系中是否也有Python的一席之地。答案是必定的。下面是开发人员发现Python在实时嵌入式体系开发中有或许扮演的五个首要人物。
效果# 1设备调试和操控
在嵌入式软件开发过程中,开发人员常常需求剖析总线通讯量,如USB、SPI或I2C。有的剖析仅仅是出于调试意图,但有时则需求操控总线剖析仪并发送信息至嵌入式体系。许多总线剖析仪和通讯东西都有友爱的用户接口,能够用来操控东西。他们一般还供给一种方法来开发脚本,也能够用来操控东西。Python是一种遍及支撑的脚本言语,有时则是一些东西的接口,或是用来操控东西。
效果# 2–自动化测验
经过Python操控东西在嵌入式体系中发送和接纳音讯的才能,使得运用Python构建自动化测验(包含回归测验)成为或许。Python脚本能够设置嵌入式体系进入不同的状况,设置装备文件,并测验一切或许的搅扰以及体系与外部环境的相互效果。运用Python开发自动化测验的长处是,回归测验能够开发继续测验并练习体系。任何的代码变化导致的bug或不合格的成果都将被实时的检测出来。
效果# 3–数据剖析
经过Web简略地查找Python库,你会发现,有许多免费强壮的Python库都能够用来开发运用程序。Python能够用来接纳十分重要的嵌入式体系数据,然后存储到数据库或是本地进行剖析。开发者还能够运用Python开发实时可视化功用来展示临界参数,或是存储这些参数用于后续剖析。运用Python进行数据剖析的长处之一是当根底性作业完结之后,新功用的植入会显得比较简略。
效果# 4–实时软件
Python现已证明了自己的强壮性和易运用性,乃至发现它是作为一门编程言语进入实时嵌入式体系。是的,嵌入式软件自身便是用Python写的而不是C/C++。用于实时软件最广泛的Python版本是MicroPython,大多是规划在ARM Cortex-M3/4微操控器上运转。MicroPython并不孤立。Synapse和OpenMV公司在嵌入式体系中既运用MicroPython也运用他们自己的Python port。对MicroPython感兴趣的读者或许对DesignNews(EDN的姐妹组织)的继续教育课程也感兴趣。
效果# 5–学习面向对象编程
Python是一门免费的编程言语,能够跨多个渠道运用,关于学生和非编程人员而言比较简略。该言语与C言语不同,它也是现代式的,而且能够在自在形状的脚本类型中结构化,或是作为一个杂乱的面向对象的体系结构。Python自身也很灵敏。乃至还有这种情形:没有编程经历的电气工程师能够运用Python写出有用的测验脚本或用最少的时刻施行电板查看。
Python的学习曲线并不峻峭,了解Python学习曲线的开发人员发现,当你有了其它言语的根底之后,学习Python比学习恣意其他的编程言语都要简略。出于这些原因,当开发人员看到Python扮演着编程孵化器人物,并吸收其它缺乏经历的工程师对宜早不宜迟的规划周期做出奉献时,不应该感到惊奇。
什么?Python+FPGA!?
夏宇闻教师几个月前在微信上引荐了一个帖子,说的是有人用Digilent的PYNQ-Z1板卡完结了超强的加快功用。
早年,关于FPGA的开发都是根据硬件描绘言语,从开端的VHDL到现在更为盛行的Verilog,软件运用也从由最开端的汇编言语开展到现在的c/c++完结,这些都是现在为大多数FPGA开发者所了解的FPGA开展旅程。上个月,IEEE收录了一篇关于运用Python开发FPGA运用的论文。
在美国纳帕举办的第25届关于可编程核算机器范畴IEEE世界评论会上,一篇名为“评价经过Python快速开发异构处理器FPGA运用功用”的短篇论文获得了最佳短篇论文奖。这篇论文首要评论了Python开发FPGA运用的优势和功率,论文中针对Digilent的PYNQ-Z1板卡(内部集成一个Xilinx Zynq SoC),经过支撑Python编程和Jupyter Notebooks结构的PYNQ开发环境,运用Python对此板卡进行开发编程,并终究评价开发成果的优势和功率。值得一提的是,宣布这篇论文的作者都是业界大佬,包含高档核算机科学家AndrewG.Schmidt、核算机科学家Gabriel Weise以及来自美国南加州大学工程技术科学协会的研讨室主任Matthew French。在论文中,Matthew French教授首要就运用PYNQ开发环境,运用Python言语对Xilinx Zynq器材进行编程运用开发时对FPGA器材的影响、功用成果以及瓶颈影响进行了评价。此外,各位教授就根据Python的开发成果与现已存在的根据C言语的开发及手动开发成果进行了比较剖析。
在论文中,各位教授还对PYNQ开发环境的优缺点进行了论述:
首要来说,PYNQ运用开发结构是一个开源的开发环境,供给了规范的能够束缚芯片I/O引脚的“Overlay”比特流,一起,开发人员能够在此开发环境中,运用Python对FPGA进行快速编程开发。此外,PYNQ开发环境内部集成规范的编程范式,支撑HDMI和视频流的输出输出,一起具有两组12pin的PMOD衔接器和一个兼容Arduino的衔接器(能够衔接或装备为Arduino系列板卡)。其间,默许的overlay中实例化了多个能够驱动多I/O接口的微Blaze处理器核,也能够装备一些支撑图画滤波功用和实验SIMT(单指令,多线程)编程软逻辑GPU的overlay。一起,PYNQ也供给了支撑比特流编程的API和可扩展的通用Python库和包,而且能够经过存储映射I/O(MMIO)直接寻址可编程逻辑单元,别的还支撑DMA买卖(不需求经过器材驱动和核模块之间的不断握手承认)。
其次,就现在来说,PYNQ还不支撑任何高档的归纳,也无法将Python运用直接移植到FPGA中。这就意味着,开发者仍然原型有必要运用FPGA来创立一个规划,即当PYNQ供给一个支撑板卡IO接口的Overlay结构以时,任何用户逻辑仍然有必要由开发者亲身创立并归纳。不过,开发者仍然能够运用高档归纳东西或上面说到的Python-to-HDL工程来完结这个使命,可是终究,开发者仍然需求根据此规划并创立一个整合了Python代码比特流文件。
也正是因为PYNQ存在这方面的缺点,论文的作者并没有简略依靠现存的PYNQ API接口和overlay,他们开宣布一个根据Redsharc项意图特定运用程序内核进行研讨。
成果怎么呢?论文最终,作者对给出了Python开发Zynq运用的各项评价成果。成果中给出了经过c/c++完结这项研讨的一般图画处理管道功用,以及定制的硬件加快器和Python完结的功用成果(下图所示),协助咱们更好地舆解了Python + FPGA开发环境的功用和能。表中能够看出,成果十分显着,经过PYNQ完结较c完结速度提高了30倍之多,更甚者,从成果中能够看出,当Python完结时有愈加有用的可用库时,比方OpenCV,其功用能够增加更多。
Python软件完结和FPGA功用潜力的结合是一个十分有意义的作业,将会开创出一个类似于树莓派和Arduino的宽广的开发者社区。Python+FPGA是一个宽广的未经勘测过的范畴——一个全新的愈加高效的开发空间——经过PYNQ开发环境将会招引更多的体系开发者参加的范畴。
日前在赛灵思OPENHW2017立异大赛暨教师峰会上,北京理工大学嵩天副教授《Python编程言语和PYNQ在我国》的讲演,科普了Python编程风行全球的原因。
Python编程言语举例,只用了21行代码就完结了一个图画素描的处理,Python大大提升了开发功率。
人工智能和机器学习走热,让 Python 从许多编程言语中锋芒毕露。
还等什么呢?
人生苦短,我用Python
附11大编程言语薪资排行榜
编程言语有许多,但并非每一种的需求或薪酬都相同。人工智能和机器学习走热,让 Python 从许多编程言语中锋芒毕露。下文将归纳各种信源,以不同编程言语在美国商场的相关薪资水平、人气和远景,为你供给一些参阅。
薪资水平
运用国外招聘网站 Indeed.com 将编程言语的薪资水平划分为 9 档:根据这个成果,Ruby/Ruby on Rails 看起来会让你挣得最多,而 Python,C++,iOS 和 Java 也是面子的挑选。假如薪资是你的首要重视点,那么或许 C,PHP 和 SQL 不是最理想的挑选……