搜索
bottom↓
回复: 61

stm32 上跑python

  [复制链接]

出0入0汤圆

发表于 2016-5-21 07:47:11 | 显示全部楼层 |阅读模式
昨晚在F4Dis上试跑了一下micrypyton
编程方便哦
在EEWorld上有从度过,我也照搬过来的
官网:www.micropython.org
ee:http://bbs.eeworld.com.cn/thread-480606-1-1.html

在官网上直接提供了F4Dis的固件,可以直接下载体验


具体步骤如下:

先到ST官方下载STSW-STM32080,这是一个DfuSe USB device firmware upgrade (DFU)软件。因为MicroPython只提供了DFU文件,我们需要用它转换为HEX格式。软件的下载地址:
http://www.st.com/web/en/catalog ... 961/SS1533/PF257916
在MicroPython下载STM32F4 Discovery支持文件。
stm32f4disc-2016-01-08-v1.5.2-35-gadfe4ff.dfu
安装DfuSe_Demo软件,然后运行其中的Dfu file manager,将上面的dfu文件转换为HEX格式。
用STM32 ST-LINK Utility将转换的HEX文件写入STM32F4 Discovery开发板。
用microUSB线连接开发板的CN5,同时STLINK上的USB线还要保留,因为需要通过它供电。这时会安装两个设备:Flash和CDC。其中FLash磁盘会自动安装,而CDC驱动就在这个磁盘中。

import pyb

switch = pyb.Switch()
leds = [pyb.LED(i+1) for i in range(4)]
i = 0
while not switch():
     i = (i + 1)% len(leds)
     leds.toggle()
     pyb.delay(200)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入8汤圆

发表于 2016-5-21 07:58:38 | 显示全部楼层
可怜的我都不知道python是啥

出0入4汤圆

发表于 2016-5-21 07:59:20 | 显示全部楼层
同问 python 是什么

出0入0汤圆

发表于 2016-5-21 08:05:57 | 显示全部楼层
电工果然是电工呀

出0入0汤圆

发表于 2016-5-21 08:11:59 | 显示全部楼层
好玩,不过没有看到更多的用例来说明用python的好处啊。

出0入0汤圆

 楼主| 发表于 2016-5-21 08:17:00 | 显示全部楼层
xaofen 发表于 2016-5-21 07:59
同问 python 是什么

百度吧
我只能说用上python就不想用c的感觉

出0入0汤圆

 楼主| 发表于 2016-5-21 08:21:06 | 显示全部楼层
hexenzhou 发表于 2016-5-21 08:11
好玩,不过没有看到更多的用例来说明用python的好处啊。

http://docs.micropython.org/en/l ... board/quickref.html
官方网上有很多例程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2016-5-21 08:24:16 | 显示全部楼层
蓝蓝的恋 发表于 2016-5-21 07:58
可怜的我都不知道python是啥

先给你说好处吧
有这个东西,你把板子的usb连PC上会出现个U盘,直接把python代码考进去跑
还可以通过串口直接像shell一样登录板子控制硬件。
说不完,百度吧

出0入0汤圆

发表于 2016-5-21 08:41:29 | 显示全部楼层
worldsing 发表于 2016-5-21 08:24
先给你说好处吧
有这个东西,你把板子的usb连PC上会出现个U盘,直接把python代码考进去跑
还可以通过串口 ...

Python是解释型的,开发完怎么烧进芯片?

出0入0汤圆

 楼主| 发表于 2016-5-21 08:42:39 | 显示全部楼层
xiaodong.zhu 发表于 2016-5-21 08:41
Python是解释型的,开发完怎么烧进芯片?

这个我还没有研究明白

出0入0汤圆

发表于 2016-5-21 08:52:53 | 显示全部楼层
xiaodong.zhu 发表于 2016-5-21 08:41
Python是解释型的,开发完怎么烧进芯片?

芯片的内部Flash会被电脑识别成U盘,你把写好的Python程序放到这个U盘里面即可,其实就已经把程序烧到内部Flash里面了,更多资料可以参考如下链接:
http://www.embed-net.com/forum-63-1.html

出0入0汤圆

发表于 2016-5-21 08:54:27 | 显示全部楼层
买个树莓派多花不了多少钱吧

出0入0汤圆

发表于 2016-5-21 09:08:37 | 显示全部楼层
STM32性能能抗下来的地方,为什么要上PI

出0入58汤圆

发表于 2016-5-21 09:11:29 来自手机 | 显示全部楼层
很多公司用python做网站后台,例如Citrix

出0入0汤圆

发表于 2016-5-21 09:33:20 | 显示全部楼层
这种方式相较于C语言的开发,效率如何?如果好的话,那我们这些只会写底层代码的人怎么办呀!

出0入0汤圆

 楼主| 发表于 2016-5-21 09:49:29 | 显示全部楼层
ywlzh 发表于 2016-5-21 09:33
这种方式相较于C语言的开发,效率如何?如果好的话,那我们这些只会写底层代码的人怎么办呀! ...

主要是成本和性能上权衡,开发效率应该是c高。

出95入8汤圆

发表于 2016-5-21 09:49:46 来自手机 | 显示全部楼层
这个有得玩了,python资源好多的,开发效率python高,运行效率就呵呵了

出0入0汤圆

发表于 2016-5-21 09:56:05 | 显示全部楼层
虽然用Py多年,但没想过这么玩。楼主感觉咋样?

出0入0汤圆

 楼主| 发表于 2016-5-21 10:35:15 | 显示全部楼层
styleno1 发表于 2016-5-21 09:56
虽然用Py多年,但没想过这么玩。楼主感觉咋样?

我也刚入手,开发效率高,是c没法和python比的。
于对性能来说,肯定没有c的高了,毕竟mcu架一个
python的解释器,不过我觉得普及之后可以裁剪。

ps: java的性能与C比怎么样?比家都知道这个结果。
但是为什么安卓会这么火呢?
因为用它开发出来的东西在体验上和开发效率上,人
们忍了它的性能。

以前51的flash都8k都了不起,现在32位机动不动都是MByte
了,所以随意硬件成本的下降,micropython应该有它生存的
空间,而且用python的人都是会喜欢上它。

这个是性能和效率之间取舍的问题,没有对错。

出0入0汤圆

发表于 2016-5-21 10:36:48 | 显示全部楼层
感觉很咸蛋啊  为啥不在跑系统的板子上跑?

出0入0汤圆

发表于 2016-5-21 10:42:02 | 显示全部楼层
这板子我也有,有空也玩一下

出0入0汤圆

 楼主| 发表于 2016-5-21 10:43:26 | 显示全部楼层
举个例子在pyb里点个灯就一行
pyb.LED(0).on()


led = pyb.LED(0)
led.on()

用C来写要几行大家都知道
也可能有人说,C也可以这么简单的实现。
是的,如果c写也可以实现,那是是封装了
一层,但那得你自己来写。

要封装都得牺牲性能的,而且python的最大好处之一就是,那来就用,不用自己写。
我不是说python多么好,而是因为python的方便,有些地方我可以忍受它的不足。

出0入0汤圆

 楼主| 发表于 2016-5-21 10:46:23 | 显示全部楼层
nome 发表于 2016-5-21 10:36
感觉很咸蛋啊  为啥不在跑系统的板子上跑?

我不觉得系统的mcu就是好的
像keil下使用的ucos,增加删除一个任务能动态吗?

出0入0汤圆

 楼主| 发表于 2016-5-21 10:53:36 | 显示全部楼层
micropython固件
http://micropython.org/resources ... 2016-05-04-v1.8.dfu

dfu文件需要转换一下

下面这个是我转换成hex之后的固件


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入169汤圆

发表于 2016-5-21 14:40:56 | 显示全部楼层
我想知道自己做个板,怎么移植,怎么做驱动。

出0入0汤圆

发表于 2016-5-21 15:09:43 | 显示全部楼层
本帖最后由 yu_studio 于 2016-5-21 15:46 编辑

前段时间自己画了块PYBOARD,引脚和布局做了些改动,但功能没变,做板回来玩了两天,后来就没玩了。没觉得多好玩,也可能是我还不太熟悉python的原因吧。



编辑一下,原图片太大,改小一点

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-5-21 15:16:57 | 显示全部楼层
记号,我看看

出0入0汤圆

发表于 2016-5-21 15:22:35 来自手机 | 显示全部楼层
人参苦短 我用Python

出0入0汤圆

发表于 2016-5-21 15:25:05 来自手机 | 显示全部楼层
MicroPython

出0入10汤圆

发表于 2016-5-21 15:29:13 | 显示全部楼层
我想知道几块钱的STM32可以跑起这个东东,然后,还剩下多少资源跑应用?

出0入0汤圆

发表于 2016-5-21 16:08:46 | 显示全部楼层
STM32跑lua比python更有实用意义吧

出0入0汤圆

发表于 2016-5-21 16:30:13 来自手机 | 显示全部楼层
这个确实把底层编程简单了,节约时间。

出0入0汤圆

发表于 2016-5-21 17:33:47 | 显示全部楼层
类似arduino?

出0入0汤圆

发表于 2016-5-21 18:25:12 | 显示全部楼层
肯定不好玩,python的魅力在库多,不是语言本身
这种精简版,估计没啥好用的库,想玩基本不用想了,找虐而已
要玩,直接WINDOWS下玩就好了,想软硬结合就树莓派

出0入0汤圆

发表于 2016-5-21 18:58:19 | 显示全部楼层
很久很久以前看过一下python,没想到能在stm32上跑

出0入0汤圆

发表于 2016-5-21 19:59:24 | 显示全部楼层
保密性怎么解决?

出0入8汤圆

发表于 2016-5-21 20:01:50 | 显示全部楼层
我有一个自己做的stm32的板子能直接用吗?
不能吧,LED放在哪一个引脚都不一样,是不是还得写py对应的库啊

出0入0汤圆

发表于 2016-5-21 20:26:52 | 显示全部楼层
树莓派跑python还是比较爽的,现在3B也才两百多一点而已,集成wifi和蓝牙,非常方便。
树莓派我从一代B+开始玩起,之后2B上市又添了个2B,感觉提升了一个层次。本来觉得2B和3B没多大的区别(主要是CPU升了一下,对于我这种忽略wifi和蓝牙),前几天手痒没忍住,就又买了3B,明显3B运行要快很多,只是目前这个室温已经明显感觉发热了,但是还能接受(已经加了散热片,3B经典款塑料外壳)。
想研究python的电工,还是建议用树莓派之类的入手方便。

出5入8汤圆

发表于 2016-5-21 22:56:07 | 显示全部楼层
电工们失业的前奏

出0入4汤圆

发表于 2016-5-21 23:09:15 | 显示全部楼层
ywlzh 发表于 2016-5-21 09:33
这种方式相较于C语言的开发,效率如何?如果好的话,那我们这些只会写底层代码的人怎么办呀! ...

效率当然是C,python就解释型的,你也可以把python认为是脚本。
个人觉得这种编程可能会成为趋势,MCU运行速度快了,资源多了,也就不在乎那点性能,就像汇编比C性能高,但现在还有多少用汇编的?

出0入0汤圆

发表于 2016-5-21 23:11:36 | 显示全部楼层
micropython用来跑小脚本还是不错的,用记事本就能写
日常用还是推荐pc或rpi  就为了pypi的库~

出0入0汤圆

发表于 2016-5-22 10:20:50 | 显示全部楼层
sniper.q 发表于 2016-5-21 23:09
效率当然是C,python就解释型的,你也可以把python认为是脚本。
个人觉得这种编程可能会成为趋势,MCU运 ...

汇编这个东西,与中断跳转,任务调度是不可分割的,

出0入0汤圆

发表于 2016-5-22 10:33:50 来自手机 | 显示全部楼层
我用了,但是感觉不如用树莓派,编译出错,不报警,太麻烦407还是用c吧

出0入0汤圆

发表于 2016-5-22 17:22:16 | 显示全部楼层
python不是树莓派的语言吗?

出0入0汤圆

发表于 2016-5-24 09:22:52 | 显示全部楼层
STM32跑这玩意,意义不大吧,Python本来就是解释语言,耗资源;加上解释器和库我就感觉STM32装不下,可能提供的功能很辣鸡。上位机玩玩Python是不错的,最近也在玩;恩应该是Python为了推广出的东西

出0入0汤圆

发表于 2016-5-24 09:29:30 | 显示全部楼层
sniper.q 发表于 2016-5-21 23:09
效率当然是C,python就解释型的,你也可以把python认为是脚本。
个人觉得这种编程可能会成为趋势,MCU运 ...

我不赞成你这种说法,MCU有自己的特点,它的出生就不是拿来做解释性语言的,还有你说不用汇编,这个我就更不占成了,那个的芯片的入口启动函数不是汇编写的,没有汇编你起不来。还有不是说主频上去了就快,解释性语言,是执行前才编译,这个过程MUC的资源就吃不消。很辣鸡的功能肯定是能实现的,功能稍微庞大的的就想都不用想。

出0入0汤圆

发表于 2016-5-24 09:30:16 | 显示全部楼层
python能科普一下不?还不知道啥东西呢,应用和优点有哪些啊

出0入0汤圆

发表于 2016-5-24 09:59:48 | 显示全部楼层
性能高的片子才能跑python

出0入4汤圆

发表于 2016-5-24 22:02:59 | 显示全部楼层
yoyotansa 发表于 2016-5-24 09:29
我不赞成你这种说法,MCU有自己的特点,它的出生就不是拿来做解释性语言的,还有你说不用汇编,这个我就 ...

我说的是趋势,没错目前的入口还是汇编,但用C通过编译一样可以达到目的。不管C还是汇编都要转为目标代码在链接为可执行文件。
就拿PC来说,最早期CPU需要汇编来提高效率、空间占用,CPU资源丰富了,如果再全部用汇编开发效率低,而且提升的运行效率不明显,也就有了C、C++,再后来JAVA、C#也不说运行效率低了,最近几年LUA、python这些脚本话的语言也兴起来了。原因很简单,硬件性能高了,只要执行速度用户能接收,不管什么语言,开发效率更重要。
MCU也是一样的,早期51存储空间小运行速度慢,用汇编是最好的选择,C往往要特别优化编译过程才行。51频率高了、Flash空间大了,虽然C的运行效率、程序大小比不上汇编,但开发效率高,C成了主流。现在M系列价格便宜了,除非特殊情况为了开发快,有库用库,也不嫌库慢了,为了开发速度跑个OS也无所谓了。如果以后A系列便宜到几块几块(或者M系列的性能达到现在A系列的性能),你还觉得吃不消吗?脱离了底层、可以跨硬件(MCU)平台,开发速度快、移植方便,你选谁?
以前的嵌入式软件开发还需要懂电路,现在嵌入式软件工程师你找不懂电路的PC软件工程师沟通下也可以做,对他来说不过调用的库不同而已。

出0入0汤圆

发表于 2016-5-25 08:22:59 | 显示全部楼层
是不是用来分析引力波数据的python

出0入89汤圆

发表于 2016-5-25 08:49:22 | 显示全部楼层
玩玩可以,真的不可以用在产品中的

出0入0汤圆

发表于 2016-5-25 09:04:08 | 显示全部楼层
sniper.q 发表于 2016-5-24 22:02
我说的是趋势,没错目前的入口还是汇编,但用C通过编译一样可以达到目的。不管C还是汇编都要转为目标代码 ...


M和A系列在系统组成上就不一样好不?MCU如果都和A系列一样挂个大flash和DDRAM,那就不叫MCU了,那就是一个ARM核的PC;A系列的不说跑Python了,只要有能力你把PC软件搬过来都行。

出0入0汤圆

发表于 2016-5-25 13:12:12 | 显示全部楼层
worldsing 发表于 2016-5-21 10:43
举个例子在pyb里点个灯就一行
pyb.LED(0).on()

你这也是封装过的。

出0入93汤圆

发表于 2016-5-25 14:06:38 | 显示全部楼层
yoyotansa 发表于 2016-5-24 09:29
我不赞成你这种说法,MCU有自己的特点,它的出生就不是拿来做解释性语言的,还有你说不用汇编,这个我就 ...

事实上,现在很多片子已经不需要汇编引导了,这都是编译器所做的事,编译器做好了,程序员就不用管了。
比如STM8 Cosmic,整个工程中就见不到汇编。如果你要较真觉得他的启动文件还是汇编搞成的库的话,完全可以不用启动文件,复位直接跳转到main函数,我就这样干过,自己初始化RAM就是了,这样带来的局限就是所有全局变量和静态变量都搞成0了,原来的初始值都不起作用了。

现在的MCU在很多场合性能严重过剩,这时用用那些过剩的性能跑个脚本完全不是问题,尤其对于动态的程序打补丁。
现在MCU的解释器仍有两种,一种无需编译直接源码丢进来,LZ的应该也是这种情况;另一种还是要编译的,但是MCU上搞了虚拟机;当然也有像LUA一样两种都支持的。

出0入0汤圆

发表于 2016-5-25 15:39:46 | 显示全部楼层
yu_studio 发表于 2016-5-21 15:09
前段时间自己画了块PYBOARD,引脚和布局做了些改动,但功能没变,做板回来玩了两天,后来就没玩了。没觉得 ...

楼主打的空板打了几个,能否转手一个

出0入13汤圆

发表于 2016-5-25 16:59:36 | 显示全部楼层
看来玩玩学习下还是不错的

出0入0汤圆

发表于 2016-5-25 17:08:23 | 显示全部楼层
同问 python 是什么

出0入0汤圆

发表于 2016-5-26 18:14:30 | 显示全部楼层
takashiki 发表于 2016-5-25 14:06
事实上,现在很多片子已经不需要汇编引导了,这都是编译器所做的事,编译器做好了,程序员就不用管了。
...

不用汇编,性能过剩我也是理解的,我的意思是说microPython这种方式不好,现在的解释器也是别人给的一个二进制文件,控制控制IO数字接口;当需要完成复杂功能时,它有可能就没戏了;其实这玩意就和那个什么阿基诺差不多,就像你说的要么在上位机用脚本语言编译好了下下去,要么直接搞个解释器进去,然后直接读取脚本源码执行。汇编虽然很多奇葩编译器会隐藏掉,但是这个东西最近是不会消失的呀,牵扯到操作系统难免会来几句汇编上下文切换。我也不是抨击这些东西,只是现在不是时候而且这个模式的效率并不高,这些只能玩玩,MUC还是得老老实实用强类型语言。

出0入0汤圆

发表于 2016-5-26 18:25:48 | 显示全部楼层
worldsing 发表于 2016-5-21 08:17
百度吧
我只能说用上python就不想用c的感觉

硬件驱动还是要用C写Python扩展。

出0入0汤圆

发表于 2016-5-26 18:46:16 | 显示全部楼层
takashiki 发表于 2016-5-25 14:06
事实上,现在很多片子已经不需要汇编引导了,这都是编译器所做的事,编译器做好了,程序员就不用管了。
...

你搞混了

楼主的用单片机解释python(或 basic) 文本代码执行 ,就好象PC上的BASIC一样, 增强速度的就是PLC,解释PLC代码 ,属于解释执行


而你说的是 用basic(或python 等等各种语言)编写代码,用basic编译器编译成 机器码 ,让单片机执行,跟 C编译器编译C代码一样,都是编译执行

完全不同的东西


就算是安卓,虽然还是java编写代码,

以前版本的APK都是运行在 解释器上 Dalvik模式

到了安卓5以后,ART模式是默认的,

运行速度变快, 带来的副作用是因为需要编译,所以安装过程变慢了。

===
在启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升

出0入93汤圆

发表于 2016-5-27 08:50:29 | 显示全部楼层
Magicfjpg 发表于 2016-5-26 18:46
你搞混了

楼主的用单片机解释python(或 basic) 文本代码执行 ,就好象PC上的BASIC一样, 增强速度的就 ...

我没有搞混吧。

直接文本模式的,单片机直接执行,这当然是解释执行
但是像Java、.NET之类的需要编译为虚拟机代码的,虽然经过编译了,但是并不是机器码而是所谓什么字节码,对于单片机虚拟机来说,仍然是解释执行的。
区别仅仅是一个是文本一个是二进制罢了,大概二进制的效率稍微搞那么一点点因为省去了语法分析。

真正编译的,那还是直接在单片机中预留API接口出来,用原有的开发工具去搞,比如Keil、IAR之类的。

出0入0汤圆

发表于 2016-5-27 13:20:45 | 显示全部楼层
takashiki 发表于 2016-5-27 08:50
我没有搞混吧。

直接文本模式的,单片机直接执行,这当然是解释执行

你还是搞混了,android 的ART模式就是本地代码,不是字节码了.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 19:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表