早年,虽然Python是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言。遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼。本文引用地址:http://www.eepw.com.cn/article/201808/390003.htm

然而今时不同往日!

硬件圈同样非常关注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,其性能可以增长更多。

300afaffc08077797b1035334be2c3ba.png

Python软件实现和FPGA性能潜力的结合是一个非常有意义的工作,将会开创出一个类似于树莓派和Arduino的广大的开发者社区。Python+FPGA是一个广阔的未经勘察过的领域——一个全新的更加高效的开发空间——通过PYNQ开发环境将会吸引更多的系统开发者加入的领域。

日前在赛灵思OPENHW2017创新大赛暨教师峰会上,北京理工大学嵩天副教授《Python编程语言和PYNQ在中国》的演讲,科普了Python编程风靡全球的原因。

Python编程语言举例,只用了21行代码就完成了一个图像素描的处理,Python大大提升了开发效率。

c5061a7a55a9d0fd245f323e33ef61ae.png

bcb3dc5b5b5027e7cb182b53cfd3f70c.png

人工智能和机器学习走热,让 Python 从众多编程语言中脱颖而出。

91162612a74262e2e74ad70d974eabcd.png

944a641687c098cef4235445b888d271.png

4acb8450c88016fcb01e39267e80bf87.png

还等什么呢?

人生苦短,我用Python

附11大编程语言薪资排行榜

编程语言有很多,但并非每一种的需求或工资都相同。人工智能和机器学习走热,让 Python 从众多编程语言中脱颖而出。下文将综合各种信源,以不同编程语言在美国市场的相关薪资水平、人气和前景,为你提供一些参考。

薪资水平

使用国外招聘网站 Indeed.com 将编程语言的薪资水平划分为 9 档:基于这个结果,Ruby/Ruby on Rails 看起来会让你挣得最多,而 Python,C++,iOS 和 Java 也是体面的选择。如果薪资是你的主要关注点,那么也许 C,PHP 和 SQL 不是最理想的选择……

d5253b41a0499ecfb7ddbc45d6f70023.png

自学python单片机编程-用Python语言控制单片机相关推荐

  1. 自学python单片机编程-用Python语言控制单片机-可编程逻辑-与非网

    早年,虽然 Python 是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言.遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼. 然而今时不同 ...

  2. python游戏编程入门 免费-python游戏编程入门 python游戏编程入门课

    python游戏编程入门 python游戏编程入门课 什么是python游戏编程入门?首先我们需要认识什么是Python Python既是一个软件工具包,也是一种语言.Python软件包包含了一个名为 ...

  3. python在线编程平台-python在线编程

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! python并发编程的思维导图,原始文件请转到:processon链接查看 ? i ...

  4. python编程单片机_Micro Python:用Python语言控制单片机

    Arudino虽然在开源硬件领域非常流行,但是对于不懂C/C++编程语言的玩家来说,还是需要一段学习时间. 早些时候,我们在Kickstarter上看到一款相对特殊的开发板Espruino,他能让用户 ...

  5. led version 2.0 摇摇棒编程软件c 语言,基于单片机控制LED摇摇棒的解决方案 - 全文...

    摇摇棒本为开发套件,全部采用直插的器件.显示的LED采用了5mm超高亮30度聚光发光二极管,共 32只.控制芯片采用宏晶单片机STC11F03E,其内部有3K的程序存储空间,256字节的数据存储空间, ...

  6. python的编程模式-Python设计模式:为了整洁又时尚的代码

    关键时刻,第一时间送达! 作者ANDREI BOYANOV - 高级软件工程师 @TOPTAL 让我们再重申一下:Python是一种具有动态类型和动态绑定的高级编程语言.我将它描述为一个强大的高级动态 ...

  7. python基础编程语法-Python基础语法(Python基础知识点)

    Python与Perl,C和Java语言等有许多相似之处.不过,也有语言之间有一些明确的区别.本章的目的是让你迅速学习Python的语法. 第一个Python程序: 交互模式编程: 调用解释器不经过脚 ...

  8. python的编程模式-Python设计模式之状态模式原理与用法详解

    本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...

  9. python多线程编程(1): python对多线程的支持

    From: http://www.cnblogs.com/holbrook/archive/2012/03/01/2376408.html 前面介绍过多线程的基本概念,理解了这些基本概念,掌握pyth ...

最新文章

  1. simulink显示多个数据_Stateflow数据介绍(一)
  2. python模拟qq空间登录_模拟登录QQ空间
  3. IntelliJ IDEA创建web项目及异常问题解决
  4. jax-ws 生成soap_在Spring中记录JAX-WS SOAP消息
  5. 创建Maven源代码和Javadoc工件
  6. redis——旧版复制
  7. 【Prince2科普】P2七大主题之商业论证
  8. 获取Linux命令源代码的方法【ZT】
  9. H264--4--H264编码[7]
  10. android和emui的版本对应,同为Android 操作系统的小米MIUI和华为EMUI, 谁更优秀?
  11. 使用WinSCP命令上传文件到CentOS
  12. grid@m3#39;s password: Permission denied, please try again.
  13. Atitit 读取文件并处理目录1.1. 3. 以二进制读取 fread取代fgets 11.2. 4.将整个文件读入到一个字符串的方法 file_get_contents() 11.3.
  14. 【Qt-Camera】大华相机显示线程
  15. 习题5.4 找出4*5矩阵中值最小和最大元素,并分别输出其值及所在的行号和列号。
  16. 五年级上册计算机工作总结,小学五年级信息技术上册教学工作总结范文
  17. xupt2017 I 威尔逊的无底胃
  18. Win10 wsl-安装教程
  19. STM32 GPS悬停飞控 (三十五)树莓派 4g视频回传
  20. 我的spring入门级理解

热门文章

  1. python文案处理
  2. PAS 2050 英文/中文版PDF
  3. isc dhcp 服务器性能,isc-dhcp-server启动异常
  4. Unity开启摄像头并铺满屏幕
  5. Unity发布预审:检查出调用苹果禁用api: [dlopen, dlsym]
  6. 小米申请鸿蒙系统,小米暂时不可能加入鸿蒙的原因,对鸿蒙系统还是有顾忌的...
  7. Acer笔记本 Aspire 750 开机时长鸣的解决方法
  8. 梅科尔工作室-李庆浩 Django笔记
  9. forms builder (10g)配置之SysFader:iexplorer.exe应用程序错误
  10. 王珺:智能音箱语音技术分享