mcusir的笔记 https://bbs.21ic.com/?264797 [收藏] [复制] [RSS]

日志

图(LabVIEW)文(Python)并茂嵌入编程展望

已有 455 次阅读2017-3-13 17:19 |个人分类:LabVIEW|系统分类:嵌入式系统| LabVIEW, Python, 嵌入编程, LabVIEW, Python


世界上的编程语言,发展至今,应该诞生有2000种左右,徜徉在书城,知名知姓的不会超过20种,在学校首先接触的是汇编语言,那种学术穷理性的安排,现在纷纷下架,“吾爱吾师,吾更爱真理”的情结越来越碎片飘摇化,随着科学越来越技术化,随着思想越来越平俗化,随着大学越来越走向应用,但IT和半导体应用领域的,从象牙塔出来蓦然发现知识技能遂成断代史,几乎每位这行当的不仅在努力工作还在努力自学着,大厦里加班的也是这些人的身影,为何会酿成这种折磨压抑自身的怪圈?

 

以此我想到要么路标距离估错,要么导航不对,要么工具不好使,再要么就是被上级或客户耍了,或被社会舆论送到风口浪尖上去了。这里我仅对嵌入编程所选择的两款工具展开说说,一是LabVIEW图形化编程语言,另一是Python脚本化解释性编程语言。嵌入编程领域,我们特指除桌面PC机编程和云端服务和客户端的编程以外,众多其它的电子产品编程,这领域90%以上还是C/C++编程语言雄霸着,选择LabVIEWPython来进行嵌入编程,多多少少会被公众意识判为异类,但公众意识一般都是滞后意识。

 

LabVIEW1986年面世的,基于数据流的图形化编程语言,发展至今可说是唯一款运作成功较完善的图形化编程语言,其根植于数据采集和测试测量工程领域,活跃于试验室和科学家阵营,这些都是资本运作的圈定,我们现把它拉下神坛,服务嵌入编程领域已经没有什么壁垒受限了,原先高昂的价位也已亲民化了。我们先通过一冒泡排序算法瞅瞅这门语言的概貌,这里要忠告下编程者,不要一上手就开始写代码,先要把思路画出来,我见过绝大多数的都自以为是,跨过这一步,弄得程序代码东拼西凑,不仅不严谨,也不紧凑,更甭提美观了。现在知识碎片太芜杂,连中小学生都知道通过思维导图加以整理。一个程序在应用领域,简单地按照过程来弄就是一个状态机;稍复杂点的,套用下编程模式,还是一个个状态机和算法交互组合而成。冒泡排序算法用流程图画出来后,LabVIEW程序基本按照这思路填空而已,相关图例如下:


关键是LabVIEW打造了那么几十年,生态圈已经形成,从NI官网公布的周边软件库有367个,更多的VI工具包可切换到VIPM上去查找,首先我们可在VIPM中下载这个“Arduino Compatible Compiler for
LabVIEW
”工具包,它可用于8位、32位单片机的嵌入设计开发,更多入门技术细节指南可参照下面这本书:



能够支持的单片机芯片类型和板件,可参照下图择选:



论坛链接:www.linxview.com

 

上面所述的单片机芯片一般主频较低,FLASH和内存资源比较紧张,应用编程大多不使用操作系统,直接裸机编程,偶尔会考虑小巧的多线程调度。

 

时下针对Linux操作系统的硬件板成本也较低廉,如俯拾可淘到的开源硬件板Raspberry Pi 123BeagleBone Black,它们也可通过LabVIEW来进行嵌入编程,还是通过VIPM搜索下载LINX工具包来实现,具体安装实施可参照下面PDF链接文档:

http://forums.ni.com/ni/attachments/ni/3044/3328/1/Install%20Guide%20for%20RPi+LabVIEW+MakerHub.pdf



Linux领域是开源思想主打,所以LINX工具包也是免费开放的,除了使用上面说到的这些板件,用户完全可根据本国行情,挑选全志、瑞芯微等国产芯片,从而使得产品更具价格竞争力。

 

如果这些应用编程针对解决你的具体问题还是欠佳,那么就要考虑用上FPGA芯片的嵌入编程了,因为它可完成很多并行硬实时性的要求,NI RIO系列硬件全部是FPGA芯片,支持软件包链接:

http://sine.ni.com/nips/cds/view/p/lang/zhs/nid/11834



倒向LabVIEW的忠诚用户,都是经过一番曲折摸索后,用上又见效较满意的,与众不同的是其本身附带的VI库就拥有众多的数学分析和信号处理功能函数,另外就是各种波形展示强项,还有内存方面使用根本没有C/C++语言那般要全盘兼顾到,相当省心好多。除了这些,我们看好的是相关机器人库,它包括了那些繁琐复杂多自由度的运动学、动力学计算的Vis,还开源公布了OpenCV机器视觉算法库,重要的是有个Python集成工具包,开源Python下的那些人工智能库就可挪为LabVIEW用户使用:


     


好了,现在我们可以聊聊Python那些事,既然我们看到LabVIEWPython已联姻,但不对等,因为LabVIEW嵌入编程编译后的是机器码,而Python嵌入编程编译后的是字节码,运行时要通过产品上的虚拟机去解释执行,这就导致程序运行速率慢,内存无端占用太多,以此那些8位单片机芯片的资源不太可能用得起Python编程。既然有这么严重的弊端,为何还要介绍Python

 

因为Python开源,利用了互联网人人为我,我为人人的思潮,壮大强化了Python开发工具包和周边应用库,下图为2016年世界编程语言流行度的排名,其排第二名:


 


JAVA遥遥领先,因商业运作,抢占了很多WEB标准,否则甲骨文公司也不会花74亿美元收购SUN公司的。这里我们不探讨使用Python语言进行WEB前端和后台的开发,只提下现在可直接在WEB客户端用Python开发,编译成WebAssembly语言,绕过JAVA那些标准。

 

有朋友会质疑,现在开源编程语言很多种,为何独独推崇Python?大概是其宣扬了一套编程哲学,告诫程序要写得优雅轻巧,程序员们寄望于这种优雅完美向往。但具体现实并非英国人个个都绅士,法国人个个都浪漫,中国人个个都中庸。我们还是欣赏下这套禅语忠告:



怎么样,记住了没?我们再简化一下,KISS原则!有没弄错?没,双关一下:KISS——Keep it simple, stupid ——代码保持简单傻瓜化——黄蓉妹妹会KISS上靖哥哥。

 

Python程序员族群阵容已经那么庞大了,尽管真理不在多数人手里,有点可能是掌握在LabVIEW那班阔少手上。有人就有江湖,有江湖就有政治和商机,Python的生态圈是可以踏入很快收割到果实的。理工科的聪明头脑总是喜欢追究原理,总是纠结在所谓的技术含量。你要知道打字最快的并不懂得什么ASCII字符码表,尽管汇编和C语言对应硬件芯片管脚寄存器那么贴切,但Python语言将硬件抽象对象化了,这样的应用程序才可跨平台,即原先使用的CPU发生停产,你都不必惊慌,能兼容上Python的都能替代。你的学识经验技能不是跟着CPU走,而是让CPU跟着你走;我们不跟着金钱跑,而要让金钱跟着我们跑!

 

尽管学校学加减乘除,要列竖式计算,考试也如此,但社会上应用加减乘除都是敲敲计算器键盘或拨拨算盘子的,我们享受着并且要善用这种工具。同样我们介绍Python作为嵌入编程,是因为针对具体CPU芯片有高人搭好了虚拟机这么个工具平台,我们做应用编程只须掌握Python编程技巧,不要太多纠结于这个虚拟机的工作原理。



上面两块板的Python虚拟机发源地为:

http://www.micropython.org/

国内售服链接:

http://www.micropython.net.cn/

IoT一体化解决编程工具平台:

https://www.zerynth.com/

 

STM32系列芯片是嵌入工程师钟爱的一类MCU,当然也可通过LabVIEW来搭建编程,详文链接:

https://bbs.21ic.com/blog-264797-163064.html

 

第二板主芯片ESP8266是内嵌WIFI32MCU,国产的,便宜,但销路响彻国际,厂家去年在此基础上推出ESP32芯片(WIFI与蓝牙二合一)。同理LabVIEW也可对其嵌入编程,VIPM中可搜索Programmable Wireless StampPWS)下载VI功能库:



树莓派板编程官方是推荐使用Python语言的,且虚拟机打造得相当好了,使用的是高效即时编译的PyPy虚拟机



应用开发时涉及UI界面可选用Qt,从而不会象安卓系统慢腾腾地弹出。OpenCV机器视觉Python库也搭建好了:



Python编程语言的一些库跟LabVIEW有相当部分重叠,比如数据分析、科学计算库等。



当前人工智能、深度学习炒得很火,美国汤姆叔叔已经把这些库做出来了,我们就没必要陷入那些数学原理中去,因为我们仅是应用,重要的话再重复次:我们只做应用!神经元网络人工智能领域,可通过NumPy/SciPy库来方便使用Python解决。它是机器学习的很棒的入口,不需要成为那些所谓的专家。



通过Python来编程FPGA芯片也是可能的,我们只需把它看作HDL硬件描述语言即可,著名的网站是:http://www.myhdl.org/


FPGA编程实现机理架构,我们还是满足下好奇心吧:



我们知道LabVIEWPython已联姻,*.py文件可被LabVIEW加以调用,而*.vi文件可被Python加以调用吗?回答是肯定的。这里麻省理工用了种方法:

https://github.com/ni/python_labview_automation


当然还有其它同胞试用其它C语言等方法完成这种文件转换,这样我们就可绕过NI原有的专利方法,但还是用LabVIEW编程FPGA,并且不局限于Xilinx一家的芯片,有种曲线救国的战略,你是不是感到很激动?!我只能提点到这了,你的未来还是得由你的行动来决定——



路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)