MCU嵌入式开发-硬件和开发语言选择

发布时间 2023-07-02 12:32:17作者: harrychinese

引入 RTOS的考虑因素

主要考虑以下方面来决定是否需要RTOS支持:

  • 需要实现高响应时的多任务处理能力
  • 需要实现实时性能要求高的任务
  • 需要完成多个复杂的并发任务

NanoFramework

具备满足工控系统实时性要求的各项功能特性。通过它提供的硬件库、线程支持、中断支持等,可以完全控制微控制器的各个外设,实现复杂的实时控制逻辑。当然,与传统的 C/C++ 开发相比,由于MANAGED代码的运行时开销,NanoFramework 的实时性表现可能略差。但对大多数工控应用来说,已经可以接受。但对于某些硬实时性要求极高的系统,Native C/C++ 开发仍可能更加合适。

NanoFramework 自身是一个运行时(Runtime),它不依赖任何RTOS。NanoFramework 本身不需要RTOS支持,但可以与主流RTOS集成,实现多任务支持, 对于需要RTOS支持的项目,NanoFramework 提供以下两种方式:

  • 使用NanoCLR,它集成了FreeRTOS,可以提供RTOS任务调度支持。
  • 使用外部RTOS,通过RTOS的HAL API与NanoFramework集成。NanoFramework支持与 FreeRTOS、MQX等主流RTOS集成。

主要考虑以下方面来决定是否需要RTOS支持:

  • 需要实现高响应时的多任务处理能力
  • 需要实现实时性能要求高的任务
  • 需要完成多个复杂的并发任务

NanoFramework 官方支持的固件镜像:

  • ChibiOS for STM32 targets,
  • FreeRTOS for NXP
  • TI-RTOS for TI targets

NanoFramework 支持的硬件包括:

  • STM32系列
  • ESP32
  • nRF51/52系列
  • Mbed NXP LPC
  • MCU的Arduino开发板等

NanoFramework 工具和教程:

https://www.cnblogs.com/MysticBoy/p/13159648.html
https://www.cnblogs.com/MysticBoy/p/13153333.html
https://github.com/nanoframework/nanoframework.github.io/blob/pages-source/content/architecture/index.md
https://www.cnblogs.com/hejiale010426/p/15798425.html
https://www.cnblogs.com/hejiale010426/p/15848574.html
https://blog.csdn.net/sD7O95O/article/details/128517317
https://blog.csdn.net/sD7O95O/article/details/131179223
https://blog.csdn.net/sD7O95O/article/details/125630690
https://docs.nanoframework.net/content/building/build-stm32.html
https://www.hackster.io/nanoframework

MicroPython

MicroPython 优点:

  • 通过 MicroPython 实现硬件底层的访问和控制,不需要了解底层寄存器、数据手册、厂家的库函数等,即可轻松控制硬件。
  • 外设与常用功能都有相应的模块,降低开发难度,使开发和移植变得容易和快速。
  • 通过 MicroPython 提供的库和函数,开发者可以快速控制 LED、液晶、舵机、多种传感器、SD、UART、I2C 等,实现各种功能,而不用再去研究底层硬件模块的使用方法,翻看寄存器手册。这样不但降低了开发难度,而且减少了重复开发工作,可以加快开发速度,提高开发效率。以前需要较高水平的嵌入式工程师花费数天甚至数周才能完成的功能,现在普通的嵌入式开发者用几个小时就能实现类似的功能。
  • MicroPython 代码更加简洁, 对于需要编写大量代码的项目有利。

MicroPython 适合场景:

MicroPython 比较适合工业过程控制, 使用它做工业控制系统可以降低初始和运行成本。
但对于运动控制这类精度要求较高和实时性要求较高的系统来讲, MicroPython 局限性比较明显.

  • 缺少对多线程的原生支持, 一般运动系统需要高效的多线程实现.
  • 无法实现很高的时钟频率, 而运动控制系统需要很高的测量和控制频率.
  • 运行效率较低, 而运动控制系统需要有高效的执行速度, 实时性要求较高.
  • 缺少专业的运动控制算法库.
  • 无法完全控制硬件, 而运动控制需要完全控制硬件实现PWM和ADC功能.

支持的固件

从 MicroPython 官网可以看到有非常多的板子支持,比较有名的有 stm32, esp8266, esp32, rp2040 等
Https://micropython.org/download/
MicroPython兼容的类库可以在 pypi.org 官网搜索

Raspberry Pico 工具

套件购买: https://i-item.jd.com/10051366266823.html#crumb-wrap , https://i-item.jd.com/10051366266821.html#crumb-wrap
微雪有Raspberry Pico 专用的插线板
软件模拟器: https://wokwi.com/projects/new/pi-pico
微雪网站的快速入门教程: https://www.waveshare.net/wiki/Raspberry_Pi_Pico
目前全网最详细的树莓派 Pico入门指南! https://zhuanlan.zhihu.com/p/359823300

MicroPython 教程:

https://docs.micropython.org/en/latest/esp32/tutorial/pwm.html
https://randomnerdtutorials.com/getting-started-thonny-micropython-python-ide-esp32-esp8266/
https://randomnerdtutorials.com/projects-esp32-esp8266-micropython/
https://randomnerdtutorials.com/getting-started-thonny-micropython-python-ide-esp32-esp8266/

结论

作为一个爱好者, 没有时间和精力完成太底层的系统学习, 只能选用支持快速上手的技术, 所以, 我选择Raspberry Pico+MicroPython.