python能做嵌入式吗

Python010

python能做嵌入式吗,第1张

近些年来Python非常流行,Python是一种面向对象的解释型计算机程序设计语言,Python语法简洁清晰,易读性以及可扩展性,Python具有丰富和强大的库,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起,常被称为胶水语言,可以应用在图形处理,数学处理,Web编程,多媒体应用等领域。定位(推荐学习:Python视频教程)

在过去的这么长时间里,在嵌入式开发领域中开发语言以C/C++为主,如今基于Python的MicroPython已经涉入到该领域中,MicroPython是一位叫Damien George的工程师,基于ANSI C(C语言标准),然后在语法上又遵循了Python的规范,主要是为了能在嵌入式硬件上(这里特指微控制器级别)更易于的实现对底层的操作,MicroPython官方提供的硬件开发板叫PyBoard,除了官方提供的开发板外,还有一些嵌入式硬件也被成功移植了MicroPython,例如:Esp8266,WiPy,Espruino Pico,STM32F4 Discovery等。

MicroPython pyboard是一个紧凑的电子电路板,在裸机上运行MicroPython,为您提供一个低级Python操作系统,可用于控制各种电子项目。

MicroPython包含许多高级功能,如交互式提示,任意精度整数,闭包,列表理解,生成器,异常处理等。然而它非常紧凑,可以在256k的代码空间和16k的RAM内运行。

MicroPython旨在尽可能与普通Python兼容,以便您轻松地将代码从桌面传输到微控制器或嵌入式系统。

pyboard是官方的MicroPython微控制器板,完全支持软件功能。硬件有:

STM32F405RG单片机

具有硬件浮点的168 MHz Cortex M4 CPU

1024KiB闪存ROM和192KiB RAM

Micro USB连接器,用于电源和串行通信

Micro SD卡插槽,支持标准和高容量SD卡

3轴加速度计(MMA7660)

带可选备用电池的实时时钟

左侧和右侧边缘为24 GPIO,底行为5 GPIO,底部有LED和开关GPIO

3个12位模数转换器,16引脚,4个模拟地屏蔽

2x 12位数模转换器(DAC),可在引脚X5和X6上使用

4个LED(红色,绿色,黄色和蓝色)

1个复位和1个用户开关

板载3.3V LDO稳压器,能够提供高达250mA的电压,输入电压范围为3.6V至16V

ROM中的DFU引导加载程序,可轻松升级固件

Python本来就是非常容易入门的语言,同时也是应用广泛的语言,MicroPython将这用容易学习和使用的语言带到了嵌入式开发中,可以直接操作硬件,并且不需要编译和下载,可以快速的看到程序的结果,这是非常好的体验。PyBoard精致小巧是一块漂亮的开发板,可以方便的学习和开发,另外MicroPython也支持更多的平台,例如:STM32F4 Discovery Board,NUCLEO-F401RE Board,NUCLEO-F767ZI Board,ESP8266,WiPy等,以上的这些开发板都可以支持MicroPython,在开发板内刷上固件就可以使用了。MicroPython带来了全新的开发体验,有兴趣的同学可以试试。

更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python能做嵌入式吗的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

由于Python在ARM上开发网络程序很高效,所以就移植了Python和Json。

(亲测) 适用开发板:FriendlyARM tiny/mini 6410 和 FriendlyARM mini2440,其他板子自己试下。

(亲测)适用内核:Linux- 2.6.28  Linux- 2.6.32  Linux- 2.6.38

arm-linux-gcc版本为4.3.2的板子

步骤

下载移植包:

1.

将bin12.02.tar传送到arm板上,并将其解压到arm板上操作系统的bin目录下,命令为:tar -xvf bin12.02.tar -C /

2.

将lib12.02.tar传送到arm板上,并将其解压到arm板上操作系统的lib目录下,命令为:tar -xvf lib12.02.tar -C /

3.

在/etc/profile文件的最后添加如下三条语句:

export PYTHONHOME=/lib/python2.5

export PYTHONPATH=.:$PYTHONHOME:$PYTHONHOME/site-packages:$PYTHONHOME/lib-dynload

export PATH=$PATH:$PYTHONHOME:$PYTHONPATH

Json文件解压时应拷到/lib/python2.5/下

如果import time有问题,一般是路径设置有问题

查看$PATH,如果其值不是如下的值

如果不是上图所示的值

在/etc/profile文件的最后添加如下三条语句:

export PYTHONHOME=/lib/python2.5

export PYTHONPATH=.:$PYTHONHOME:$PYTHONHOME/site-packages:$PYTHONHOME/lib-dynload

export PATH=$PATH:$PYTHONHOME:$PYTHONPATH

使更改后的环境变量生效(多种方式

执行 source /etc/profile

再次查看$PATH,确保其值改变,如果没法改变,结果如下图:

简单粗暴有效的办法就是将:/lib/python2.5/site-packages和/lib/python2.5/lib-dynload下的所有文件拷到/lib/python2.5/下

编程语言主要分为编译型和解释型,静态语言和动态语言,强类型和弱类型,混合语言等。

编译型语言:通过编译器把源代码编译(compile)成机器语言,在经过链接(linker)将源代码中所使用的库串联起来生成可执行二进制文件,这样运行时    计算机可以直接以机器语言来运行程序。优点:运行效率高。缺点:编译之后如果需要修改代码需要重新编译整个模块。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件,代表语言:C,C++,object-C等。

解释型语言:不需要编译,只在程序运行时才逐条翻译成机器语言。优点:跨平台支持比较好,缺点:程序运行效率会比较慢。如:python,php,Perl等。

动态语言:动态类型语言,是指数据类型,结构(如对象,函数)的检查是在运行时做的。用动态类型语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部记录数据类型,结构。在运行代码时可以根据某些条件改变变量的数据类型,结构。也就是说在运行时代码 可以根据某些条件改变自身结构,数据类型。代表语言:python,PHP,C#等。

静态语言:静态类型语言,是指数据类型,结构的检查是在运行前(如编译阶段)做的,运行时结构不可变。代表语言:C,C++等。

强类型语言:如果某个变量的数据类型不经过强制转换,该变量类型是不会改变的。

弱类型语言:变量可以根据赋值类型调整自身的数据类型。

混合型语言:既然编译型和解释型各有缺点就会有人想到把两种类型整合起来,取其精华去其糟粕。就出现了半编译型语言。比如C#,C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了中间语言运行库运行中间码,中间语言运行库类似于Java虚拟机。.net在编译成IL代码后,保存在dll中,首次运行时由JIT在编译成机器码缓存在内存中,下次直接执行。Java先生成字节码再在Java虚拟机中解释执行。严格来说混合型语言属于解释型语言。C#更接近编译型语言。

由此可知python语言是一门解释,动态,弱类型语言。

相关推荐:《Python视频教程》

python语言的优点:

1、python的定位是“优雅”、“明确”、“简单”,所以python程序看上去总是简单易懂,对于初学者容易入门。

2、开发效率高,python有非常强大的第三方库,基本上你想通过计算机实现任何功能,python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上进行开发,大大降低开发周期,避免重复造轮子。

3、高级语言,当使用python语言编写程序时,无需考虑如何管理内存等底层细节。

4、可移植性,由于它开源的本质,python已经被移植在许多平台上,如果你小心的避免使用依赖于系统特性,那么你的所有python程序无需修改就几乎可以在市场上所有的系统平台运行。

5、可扩展性,如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,可以把部份程序用C或C++编写库,然后用python调用。

6、可嵌入式,可以把python嵌入到C/C++程序,从而向你的程序用户提供脚本功能。

python语言的缺点:

1、速度慢,由于是解释型所以运行速度相比编译型语言要慢,跟Java相比也要慢一些。

2、代码不能加密,因为python是解释型语言,它的源码都是以明文形式存放的,所以如果项目要求源代码必须保密或者加密,那一开始就不应该考虑用python来实现。

3、强制缩进,单行语句不用写分号对于习惯了C/C++用户可能不是太习惯。

4、Python2与 Python3不兼容,因为Python没有向后兼容,给所有的Python工程师带来了烦恼。