【现在都流行用互联网方式开发单片机MCU应用程序吗?】比如LuatOS开发ESP32-C3 (RISC-V MCU)
本帖最后由 51MCU 于 2022-6-21 17:47 编辑近几年观察开发者,开始流行借助各种互联网面向对象的手段,比如解释器开发单片机MCU的硬件的应用程序,这些和以往的开发程序(C/C++)有明显区别。这些开发方式可能是对硬件使用的一种趋势!简单一句话,还是让人快速上手,快速实现自己的应用效果!
【1】前年流行有人用MicroPython开发STM32F405RG microcontroller(168 MHz Cortex M4 CPU),还诞生了一批板子名叫Pyboards;
也有Micro:bit这种板子(基于nRF51822或者nRF52833),一款由英国广播电视公司(BBC)推出的专为青少年编程教育设计的微型电脑开发板。2016年3月6月,micro:bit在英国全线铺开,BBC在线上线下配套了大量的项目教程资源和活动。BBC希望通过micro:bit驱动青少年参与到创造性的硬件制作和软件编程中去,而不是每天沉浸在各式的娱乐和消费中。微型电脑开发板Micro:bit支持Python,Java,JavaScript,c++和图形化编程。
Micro:bit有1.5和2.0的区别。2016年,BBC正式在英国范围内全面推出micro:bit编程计划,这款设备让学生拿起来插入电脑就可立即进行编程学习,在线上与线下,BBC为老师和学生配套了大量的项目教程资源和案例,以此鼓励孩子们学习简单的编程,激发新一代青少年创造力。
【2】早几年有人用.Net Micro Framework开发微控制器,总部设在瑞士的奥伯伦微系统公司将他们移植的微软.NET微框架(.NET Micro Framework,NETMF)贡献给了开放源码社区,它与NETMF本身遵循相同的许可证(Apache 2.0)。它以基于ARM Cortex-M3架构STM32微控制器。对应的开发板STM32 .Net MF开发板Netduino,用的工具:C#和Visual Studio,
案例文章1(使用C#编写STM32对接物联网平台IoTSharp发送遥测数据)
案例文章2(C#+STM32实现设备远程管理与IAP)
.Net的强大不用多说,简单介绍一下NETMF:
Microsoft .NET Micro Framework 2001年由微软研究院开始研发,并随后在其MSN Direct项目中使用该技术,2007年9月微软对外发布2.0,2008年10月 V3.0、2009年11月 V4.0、2010年5月 V4.1 beta,2009年并入.NET产品组,Digi、Atmel、飞思卡尔等半导体公司都先后为其推出了开发板,该技术可以应用到远程控制、智能家电、教育类机器、医疗电子、零售终端、Sideshow以及汽车电子等行业应用场景;此外由于.Net MF集成了各种接口,如串口、网口、Wifi、Zigbee、I2C、SPI、SDIO、USB等通信接口,加上其应用开发简便,所以在物联网时代,将大有作为。
Microsoft .NET Micro Framework 将 .NET 的可靠性和效率与 Visual Studio的高生产率结合起来,以针对价格较低、资源受限的小型设备开发应用程序,可帮助人们使用熟悉的 Visual Studio 工具来构建托管的嵌入式应用程序。2009年5月,.Net Micro Framework采用Apache 2.0 license,比Linux等开源软件更为彻底的方式实现了源代码完全开放。
1.哪些领域可以采用.NET Micro Framework技术?
.NET Micro Framework技术可以应用到:Sideshow、远程控制、智能家电、教育类机器、医疗电子、零售终端以及汽车电子等行业应用场景;此外由于.Net MF集成了各种接口,如串口、网口、Wifi、Zigbee、I2C、SPI、SDIO、USB等通信接口,加上其应用开发简便,所以在物联网时代,将大有作为。
2.NET Micro Framework与Window CE和Windows XP Embedded的区别?
.NET Micro Framework对存储器和处理器的要求更低。开发人员可以在低功耗、低成本的ARM7、ARM9、Blackfin和Cortex-M3处理器上使用该框架(不需要MMU支持),所开发出来的软件仅需要几百Kbytes的RAM或Flash/ROM存储空间。而Windows Embedded CE的托管代码环境需要约10~12Mbytes的存储空间,基于.NET的应用编程设备只需要较少的存储空间,降低了产品成本。
3.NET Micro Framework与其他.NET平台的区别?
作为.NET家族的一员,.Net Micro Framework是微软专门针对超轻量级平台设计的软件架构。与.Net Framework和.Net Compact Framework不同的地方是,.Net Micro Framework具有自启动的特性,并且在HAL层,微软将操作系统的必要特性引入,如:启动管理、中断处理、线程调度、内存管理等。.Net Micro Framework可以单独使用,不需要依托其它操作系统,因此占用空间很小。
【3】还有最近流行的PikaScript是一个完全重写的超轻量级python引擎,零依赖,零配置,可以在少于4KB的RAM下运行(如stm32g030c8和stm32f103c8),极易部署和扩展。
啥是 PikaScript?
PikaScript 可以为资源受限的 mcu 提供极易部署和拓展的 Python 脚本支持。不需要操作系统,能裸机运行,还不需要文件系统。
PikaScript 支持裸机运行,最低可运行于 RAM ≥ 4kB ,FLASH ≥ 32kB 的 mcu 中,推荐配置为 RAM ≥ 10kB, FLASH ≥ 64kB,像是 stm32f103c8t6、stm32g070RBT6 这些完全没有压力,甚至已经满足了推荐配置。而且支持 Keil、IAR、RT-Thread studio、segger embedded studio 等 IDE 开发,零依赖,零配置,开箱即用,极易集成进已有的 C 工程。
为了在 IOT、智能终端等嵌入式应用场景中,脚本开发是一个方便快捷的解决方案。说到嵌入式使用脚本语言开发,可能首先想到的就是 micropython , micropython 可以让工程师使用脚本语言 python 进行 mcu 开发,极大地降低了开发门槛。但是使用 micropython 开发能够直接使用的开发板并不多,为没有现成 micropython 固件的 mcu 移植 micropython 显然也是一件工程浩大且门槛很高的工作。而且 python 的运行效率较低,在资源紧缺的 mcu 中显得尤为明显,使用 python 开发也难以充分利用 mcu 的中断、 dma 等硬件特性。在高实时性的信号处理、数据采集、实时控制等应用中,python 难以成为真正落地于生产环境。
就目前而言,在 mcu 开发中,占80%左右的开发仍然是使用 c 语言,c++ 也仅占不到20%。
但是无疑脚本语言的便利性是非常明显的。服务器端的开发者往往熟悉 python 和 JavaScript 等支持面向对象的脚本语言,如果能够直接用脚本语言调用 mcu 的功能,将明显降低开发难度。 那么,如果使用 c 语言进行 mcu 嵌入式开发,又向上位机或者服务器提供面向对象的脚本语言调用接口,不就可以兼顾 mcu 运行效率和开发效率了吗?
本文介绍的 Pikasciprt 库正是可以起到这样的作用。
Pikascrpit 库可以为 c 语言开发的 mcu 工程提供面向对象的脚本语言调用接口。PikaScript 有以下几个特点:
支持裸机运行,可运行于内存 4Kb 以上的 mcu 中,如 stm32f103 ,esp32。
支持跨平台,可运行于 linux 环境。
代码可读性强,仅使用 C 标准库,尽可能的结构清晰(尽我所能),几乎不使用宏。
PikaScript开源项目遵守MIT开源协议;
源码使用遵循MIT协议,无需额外授权。
使用者在使用PikaScript源码时,不得有超越MIT开源协议的行为或者意图
【4】也有用LuatOS是一款针对嵌入式的脚本运行框架,可以极大提升开发效率。
使用Lua 5.3作为主要语言,针对资源较少的嵌入式环境进行了优化,极大提升了运行效率。
Powerful embedded Lua Engine for IoT devices, with many components and low memory requirements (16K RAM, 128K Flash)具体开发ESP32-C3流程参考合宙Wiki
【5】还有人用cJSON和单片机进行数据交互,序列化和反序列化......
An ultra-lightweight, portable, single-file, simple-as-can-be ANSI-C compliant JSON parser, under MIT license.Moved to https://github.com/DaveGamble/cJSON
现在开发者是越来越懒了,你们还有啥手段开发单片机呢,一起分享下,比如不用写代码,有个想法就可以告诉单片机去执行,你觉得如何呢?;P
页:
[1]