MCU嵌入式開發-硬件和開發語言選擇
引入 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 工具和教程:
http://www.rzrgm.cn/MysticBoy/p/13159648.html
http://www.rzrgm.cn/MysticBoy/p/13153333.html
https://github.com/nanoframework/nanoframework.github.io/blob/pages-source/content/architecture/index.md
http://www.rzrgm.cn/hejiale010426/p/15798425.html
http://www.rzrgm.cn/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.

浙公網安備 33010602011771號