单片机学习小组
登录
直播中
偶是糕富帅
11年用户
788经验值
私信
关注
ARM架构优缺点是什么?
开启该帖子的消息推送
单片机
python
ARM架构优缺点是什么?
MicroPython项目怎么移植?
回帖
(1)
盛越熊
2022-1-17 14:14:35
原先一直在ARM架构下编写Cpython,先来说说ARM架构优缺点:
1、系统资源足够,虽然python的性能不怎样,但完全不用担心运行效率,愉快的编写逻辑就可以了
2、有现成的操作系统,所以一些比如联网,维护等工作不用操心
3、硬件成本高,IO不够充足,对硬件底层一些控制力不够好,这也是我想换平台的原因
ESP32这款芯片不多做介绍了,网上资料很多,主要是低功耗,低成本,还自带WIFI和蓝牙,完全符合我项目的要求。
micropython是一个固件(小系统),其语言是Python的精简版,经过优化可在微控制器和受限环境中运行,最初支持的是pyboard这个硬件平台,后来作者把这个固件不断更新,得以支持不同单片机芯片,例如STM32,ESP8266,ESP32等等
连接UART,板子启动看到信息,首先是bootload,ESP-IDF信息,随即进入熟悉的python命令行模式
从cpy移植到mpy很轻松,语言基本不变,mpy支持的基本模块也挺多的,比如json之类,只要重写联网、IO控制这一块代码,这些mpy官方接口文档都有很好的说明,对照用就可以了,社区也有很多案例,这就是开源的好处,我只用了一天就把项目移植好了,用的开发工具是mu-editor,支持文件管理。但是接下的事情让我很痛苦。。。爆内存了
然后分析原因,ESP官方称设计RAM有520K,除去系统需要留给mpy可用的最多100多K了,实际项目运行后空余内存不足20K,但项目有个超大的Dict表用来存储采集的数据,运行到这里内存就不足了,一般python程序员不太会关心硬件内存问题,至于什么heap,stack区的区别,还有如何把常量编译后存储在flash rom上以节省内存,这些也都是我后面把项目改成arduino后才慢慢明白的
又花了一天时间尝试区优化mpy的程序,甚至于在运行时把采集数据直接写入本地文本,都以失败告终,这个项目用UART1这个口采集数据(UART0被系统占用作为调试用了,esp32有3个UART可用)在项目中使用了两组硬件定时器(1个从serial缓存收集数据,一个处理和存数数据),为什么要用machine Timer这个是因为速度快,之前python中直接使用Thread,while是不行的,本身现在mpy硬件都不支持多线程,很容易跑程序跑死。
继续查阅资料,MicroPython官方文档有说明,RAM优化方案 1、使用mpy-cross产生mpy文件 2、把程序编译到固件,都尝试后发现改善不多,所以只能暂时放弃,最近已经把项目移植到了arduino上,在同样的硬件平台,运行良好。
近期发现: 原来ESP32有一款带SPIRAM的(8M,16M…),就是扩展了外部RAM,而且MicroPython官方固件已经支持了SPIRAM的使用,具体型号是:ESP32WROVER 但手上没有这款芯片,等到了以后再做测试吧。
原先一直在ARM架构下编写Cpython,先来说说ARM架构优缺点:
1、系统资源足够,虽然python的性能不怎样,但完全不用担心运行效率,愉快的编写逻辑就可以了
2、有现成的操作系统,所以一些比如联网,维护等工作不用操心
3、硬件成本高,IO不够充足,对硬件底层一些控制力不够好,这也是我想换平台的原因
ESP32这款芯片不多做介绍了,网上资料很多,主要是低功耗,低成本,还自带WIFI和蓝牙,完全符合我项目的要求。
micropython是一个固件(小系统),其语言是Python的精简版,经过优化可在微控制器和受限环境中运行,最初支持的是pyboard这个硬件平台,后来作者把这个固件不断更新,得以支持不同单片机芯片,例如STM32,ESP8266,ESP32等等
连接UART,板子启动看到信息,首先是bootload,ESP-IDF信息,随即进入熟悉的python命令行模式
从cpy移植到mpy很轻松,语言基本不变,mpy支持的基本模块也挺多的,比如json之类,只要重写联网、IO控制这一块代码,这些mpy官方接口文档都有很好的说明,对照用就可以了,社区也有很多案例,这就是开源的好处,我只用了一天就把项目移植好了,用的开发工具是mu-editor,支持文件管理。但是接下的事情让我很痛苦。。。爆内存了
然后分析原因,ESP官方称设计RAM有520K,除去系统需要留给mpy可用的最多100多K了,实际项目运行后空余内存不足20K,但项目有个超大的Dict表用来存储采集的数据,运行到这里内存就不足了,一般python程序员不太会关心硬件内存问题,至于什么heap,stack区的区别,还有如何把常量编译后存储在flash rom上以节省内存,这些也都是我后面把项目改成arduino后才慢慢明白的
又花了一天时间尝试区优化mpy的程序,甚至于在运行时把采集数据直接写入本地文本,都以失败告终,这个项目用UART1这个口采集数据(UART0被系统占用作为调试用了,esp32有3个UART可用)在项目中使用了两组硬件定时器(1个从serial缓存收集数据,一个处理和存数数据),为什么要用machine Timer这个是因为速度快,之前python中直接使用Thread,while是不行的,本身现在mpy硬件都不支持多线程,很容易跑程序跑死。
继续查阅资料,MicroPython官方文档有说明,RAM优化方案 1、使用mpy-cross产生mpy文件 2、把程序编译到固件,都尝试后发现改善不多,所以只能暂时放弃,最近已经把项目移植到了arduino上,在同样的硬件平台,运行良好。
近期发现: 原来ESP32有一款带SPIRAM的(8M,16M…),就是扩展了外部RAM,而且MicroPython官方固件已经支持了SPIRAM的使用,具体型号是:ESP32WROVER 但手上没有这款芯片,等到了以后再做测试吧。
举报
更多回帖
rotate(-90deg);
回复
相关问答
单片机
python
单片机/FPGA/DSP/ASIC/
ARM
9有哪些
优缺点
?
2021-11-05
2445
LED技术的
优缺点
2021-01-01
1930
常见的物联网通讯技术有哪些
优缺点
?
2021-06-15
1744
直流无刷永磁电机的单相导通有什么
优缺点
2021-09-10
2545
交流伺服电机和直流伺服电机的
优缺点
分别是什么?
2021-06-28
5780
闭环式马达有哪些
优缺点
呢
2021-10-25
2217
ARM
指令集
架构
的特点是什么
2021-03-03
3073
什么是RISC
架构
?RISC
架构
的优点与
缺点
2023-02-27
407
伺服电机有哪两大类别?
优缺点
是什么?
2021-09-27
1184
什么是可编程片上系统?有什么
优缺点
?
2021-06-21
1433
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分