
MicroPython
文章平均质量分 86
MicroPython内核开发、在微控制器上的移植,以及一些有趣的小研究。
suyong_yq
屌丝程序员:喜欢乒乓球,喜欢听歌,喜欢写程序,喜欢吃零食,喜欢睡觉。
展开
-
基于Pico和MicroPython点亮ws2812彩色灯带
在github上开源的micropython-ws2812项目的基础上,新增了指定SPI_SOUT引脚的实例化参数,实现了基于Pico电路板和MicroPython点亮ws2812b彩色灯带的效果。调试过程在Step Pico电路板上验证成功。原创 2024-06-22 23:30:02 · 1607 阅读 · 0 评论 -
Cache技术在星辰处理器中的应用
本文从修复MicroPython启动程序在MM32F5微控制器上比较慢的问题,体验了星辰处理器中Cache的作用。简单介绍了Cache的工作原理和机制,重点介绍了使用Cache可能存在的风险,并进一步探讨了如何能用到Cache高速存取的同时避免数据不一致的情况。原创 2023-06-15 21:26:52 · 745 阅读 · 0 评论 -
MicroPython应用基础-使用Thonny IDE
Thonny是由爱沙尼亚的Tartu大学开发,非常适合初学者和教学的一款轻量级IDE,提供可视化的编程界面,并可一步一步地调试运行Python程序。其中显著的特性是,提供了多种方式逐步执行代码,可以逐步求表达式的值,对调用堆栈可视化,便于用来解释引用内存和直接在堆中分配内存的概念。特别适合用来支持教育和研究工作。它可以被免费下载和使用,并可由用户在开放的框架中自行开发扩展功能。原创 2023-06-01 23:57:48 · 4463 阅读 · 2 评论 -
MicroPython应用基础-准备MicroPython开发板
基于ICAR-F5270开发板,准备硬件、软件,然后编译MicroPython固件下载到MM32F5270微控制器上,最后基于MicroPython在微控制器上开始运行第一句Python脚本。原创 2023-05-26 23:13:05 · 1225 阅读 · 0 评论 -
在MicroPython中启用基于spiflash的LFS挂载文件系统
自顶向下逐步启用mpy-cross编译,将Python程序集成到固件中自底向上逐步添加sfud组件并启用lfs合龙,创建mm32f3.flash模块,封装sfud,并由集成到固件中的Python程序调用mm32f3.flash模块。原创 2022-07-30 22:42:32 · 1039 阅读 · 0 评论 -
手工打造基于MM32F5微控制器的MicroPython开发板
在本文中,将讲述如何自己动手制作基于MM32F5微控制的最小系统板,并获取与之配套的预先编译好的MicroPython固件,以及使用图形界面开发环境Thonny IDE在MM32F5微控制器上使用Python进行开发的基本用法。帮助MicroPython的开发者自己动手制作一块基于微控制器的开发板。...原创 2022-07-21 10:24:16 · 1177 阅读 · 1 评论 -
使用DAP-Link单独下载可执行文件到MM32F5微控制器
单独下载可执行文件到MM32F5微控制器suyong_yq,2022年5月文章目录单独下载可执行文件到MM32F5微控制器引言借用Keil工程使用Ozone引言使用Keil MDK或者IAR等使用图形界面的开发环境,可以在图形界面环境下编译源码工程,并下载编译生成的可执行文件到目标微控制器中。但若使用ARMGCC等命令行工具链,需要额外的下载工具,才能将编译生成的可执行文件下载到目标微控制器中。若使用SEGGER J-Link调试器,可以搭配SEGGER Ozone软件或者J-FLASH、J-FL原创 2022-05-30 10:23:58 · 5272 阅读 · 0 评论 -
MicroPython中I2C模块的设计与实现(1) - machine_i2c框架的机制
MicroPython中I2C模块的设计与实现(1) - machine_i2c框架的机制苏勇,2022年3月文章目录MicroPython中I2C模块的设计与实现(1) - machine_i2c框架的机制IntroductionAlgorithmImplementationinit()transfer_single()ConclusionIntroductionMicroPython在extmod目录下提供了machine_i2c的实现框架,并附带了一个GPIO模拟I2C的实现实例SoftI2C原创 2022-03-29 23:09:03 · 1413 阅读 · 0 评论 -
解决MicroPython执行SD卡中的main.py文件中的死循环出不来的问题
解决MicroPython执行SD卡中的main.py文件中的死循环出不来的问题苏勇,2022年3月文章目录解决MicroPython执行SD卡中的main.py文件中的死循环出不来的问题IntroductionAlgorithmImplementationExperienmentConclusionIntroduction前文(尚未发布)提到,我目前已经启用Thonny对接KE18F/F3270上的MicroPython,但如果把main.py写成死循环(在实际开发时,必须写成死循环,否则程序执行原创 2022-03-23 01:48:21 · 3136 阅读 · 3 评论 -
ARM GCC 快速参考指南
ARM GCC 快速参考指南文章目录ARM GCC 快速参考指南概述命名使用命令参数`flags`编译命令` arm-none-eabi-gcc`链接命令 `arm-none-eabi-ld`查询储存空间占用信息命令`arm-none-eabi-size`导出`*.bin` 命令`arm-none-eabi-objcopy`调试程序命令`arm-none-eabi-gdb`反汇编命令`arm-none-eabi-objdump`概述GCC在最初指GNU C Compiler,作为GNU计划中相当重要的原创 2022-01-26 11:51:42 · 6148 阅读 · 1 评论 -
在mm32f3270上为MicroPython启用Signal模块
在mm32f3270上为MicroPython启用Signal模块文章目录在mm32f3270上为MicroPython启用Signal模块IntroductionTracingIntroduction原本以为放开在machine的类清单中对Signal类型的定义就能通,虽然能够通过编译,但在实测中并不能操作引脚。测试MM32F3277中的MicroPython的Signal功能想想也是,还没搞清楚Signal同Pin的绑定关系,只是心存侥幸就启动测试。实在对不住卓老师还高兴了一晚上。Signa原创 2021-11-30 12:51:57 · 325 阅读 · 0 评论 -
在mm32f3270上为MicroPython启用Timer模块
在mm32f3270上为MicroPython启用Timer模块文章目录在mm32f3270上为MicroPython启用Timer模块RequirementsImplementationApplication昨天阅读micropython的材料时,特别注意了这个名字的写法,官方正式使用的是“MicroPython",确实有两个字母是大写的。我在这个项目的开发过程中一直秉承继承原汁原味的原生风格,自然也要使用“正确”的名字。后面的笔记中,均使用“MicroPython”这个名字。Requirement原创 2021-11-29 22:15:37 · 1349 阅读 · 0 评论 -
# 在mm32f3270上为micropython创建PWM模块(2)
在mm32f3270上为micropython创建PWM模块(2)文章目录在mm32f3270上为micropython创建PWM模块(2)Architect共用时基的问题实例化传参freq和duty应用场景使用两个TIM组合Architect上文提到, 参考esp系的实现模型. 但具体几个问题还要想明白才能动手.共用时基的问题原本想着时基初始化之后, 后面新创建别的通道就不能再动基础频率的. 但再想这样也不合理, 如果不让后面的通道动基础频率, 本身这个通道也改不了基础频率, 因为它们使用同样的原创 2021-11-18 13:50:14 · 194 阅读 · 0 评论 -
在mm32f3270上为micropython创建PWM模块(1)
在mm32f3270上为micropython创建PWM模块(1)文章目录在mm32f3270上为micropython创建PWM模块(1)RequirementsPS: 对于以英文作为主要编码工具的软件工程师, 即使在中文编辑环境写文档, 使用英文标点符号还是比较方便的.Requirementsmicropython的开发手册中提供了关于PWM模块的API参考设计规范, 见:https://docs.micropython.org/en/latest/library/machine.PWM.ht原创 2021-11-18 12:55:02 · 403 阅读 · 0 评论 -
在mm32f3270上为micropython创建SPI模块
在mm32f3270上为micropython创建SPI模块文章目录在mm32f3270上为micropython创建SPI模块IntroductionArchitectureextmod/machine_spi.c软件SoftSPI硬件SPIports/xx/machine_spi.cIntroduction在machine中实现SPI,我看各家的代码都引用了extmod/machine_spi.c中的模型,看来我也跑不掉,那就不要自创武功,随大流就好。大体看了一下代码,预计工作量会在三个方面:原创 2021-11-17 13:22:57 · 1118 阅读 · 2 评论 -
在mm32f3270上为micropython创建ADC模块(2)
在mm32f3270上为micropython创建ADC模块(2)苏勇,2021年10月文章目录在mm32f3270上为micropython创建ADC模块(2)前情回顾实现启动ADC转换器的思路实现ADC API的回调函数实现ADC的实例化函数adc_find()make_new()其它常规实现函数一些收尾工作实际执行前情回顾在上文中,我根据micropython开发文档中的约定,设计了machine.ADC模块的接口,并分析了ADC模块的传参方式,并确定了ADC模块先启动转换器,再向转换序列中添原创 2021-10-26 13:14:32 · 390 阅读 · 0 评论 -
在mm32f3270上为micropython创建ADC模块(1)
在mm32f3270上为micropython创建ADC模块苏勇,2021年10月文章目录在mm32f3270上为micropython创建ADC模块micropython中对ADC模块的接口定义设计实现F3270片上资源micropython中对ADC模块的接口定义ADC是模拟到数字转换器。micropython的官方说明文档中,有明确的对ADC模块的接口定义,见:https://docs.micropython.org/en/latest/library/machine.ADC.htmlA原创 2021-10-19 17:47:56 · 521 阅读 · 0 评论 -
为micropython启用文件系统(4)
为micropython启用文件系统(4)文章目录为micropython启用文件系统(4)还是不能导入模块?后记还是不能导入模块?中间遇到了各种问题,最后调到这种程度了。经过测试,都已经可以通过open()函数读SD卡上的readme.txt文件了,为啥还是不能import hello.py ?网上搜搜python 的“OSError:2”,对应是“没有这样的文件或目录”,但是直接在repl打开SD卡中同hello.py同目录下的readme.txt是OK的啊。而且通过打桩分析发现,在执行impo原创 2021-09-30 00:33:39 · 463 阅读 · 0 评论 -
为micropython启用文件系统(3)
为micropython启用文件系统(3)文章目录为micropython启用文件系统(3)启用oofatfs将sd卡访问函数框架注册到vfs在main.c中调用vfs在machine_sdcard中调用sdcard_sdio启用oofatfsoofatfs的代码已经存在于micropython的代码仓库中,但是需要在makefile中把相关的编译选项打开。extmod/extmod.mk文件中包含了extmod目录下很多组件的编译配置代码段,其中也包含了oofatfs的部分:# VFS FAT F原创 2021-09-30 00:28:09 · 804 阅读 · 0 评论 -
为micropython启用文件系统(2)
为micropython启用文件系统(2)文章目录为micropython启用文件系统(2)进入micropython代码目录之前参考了一篇帖子进入micropython代码目录之前首先,要准备一些代码SDIO驱动、SD卡读写代码、fatfs的移植。在lib/mm32f3270/mm32/drivers 目录下放置hal_sdio.h/.c文件,SDIO HAL驱动在ports/mm32/boards/MB_F3270 目录下放置sdcard_sdio.h/c文件,SD卡访问函数在ports/原创 2021-09-30 00:15:42 · 668 阅读 · 0 评论 -
为micropython启用文件系统(1)
为micropython启用文件系统(1)文章目录为micropython启用文件系统(1)描述需求描述需求实现REPL之后,可以在终端中输入python脚本逐行运行。但对于需要重执行的语句,每次都手动输入实在麻烦。我希望把脚本保存在文件中,然后通过执行文件的方式运行脚本。实际上,只有实现到这种程度,才能复用python算法库(包含在pyhton脚本文件中)。具体来说,就是要实现python语句中的“import”来自文件系统中的脚本文件。大体的思路是:先将一个具体的存储介质(例如SD卡)接入到原创 2021-09-30 00:11:29 · 819 阅读 · 0 评论 -
在mm32f3270为micropython移植utime模块
在mm32f3270为micropython移植utime模块苏勇,2021年8月Introductionutime模块的主要函数在“extmod”目录下的utime_mphal.h和utime_mphal.c文件中实现。当仍需要在ports目录下补完部分底层函数。需要具体硬件实现的函数如下:void mp_hal_delay_ms(uint32_t ms)void mp_hal_delay_us(uint32_t us)mp_uint_t mp_hal_ticks_ms(uint原创 2021-08-23 22:54:49 · 318 阅读 · 0 评论 -
在mm32f3270为micropython创建Pin模块(4)
在mm32f3270为micropython创建Pin模块(4)苏勇,2021年8月最后,就是为了给Pin初始化的时候增加一个af的关键字typedef enum{ ... PIN_INIT_ARG_AF,} machine_pin_init_arg_t;STATIC mp_obj_t machine_pin_obj_init_helper ( const machine_pin_obj_t *self, /* machine_pin_obj_t类型的变量,包含硬件信息原创 2021-08-23 20:37:32 · 281 阅读 · 0 评论 -
在mm32f3270为micropython创建Pin模块(3)
在mm32f3270为micropython创建Pin模块(3)文章目录在mm32f3270为micropython创建Pin模块(3)Introductionvalue()print()Introduction书接上文,本节继续完成Pin类的其余实例化方法的实现。value()value()函数内部调用的是call(),也就是说,在REPL中可以用pin0.value(),也可以用pin0()来返回值,同时,可以通过pin0.value(val)和pin0(val)写入值。STATIC mp_原创 2021-08-23 20:11:53 · 336 阅读 · 0 评论 -
在mm32f3270为micropython创建Pin模块(2)
在mm32f3270为micropython创建Pin模块(2)文章目录在mm32f3270为micropython创建Pin模块(2)Introductionmake_new()pin_low()和pin_high()Introduction上文书说,已经搭建了一个基本的能够在REPL中引用到的Pin模块。为了规避Hardfault的问题,暂时屏蔽了history的功能。勉强已经可以用起来了。本文将要打通python对底层硬件的操作,进一步完成Pin模块。本文可能会涉及到引脚表的设计问题mak原创 2021-08-23 18:50:12 · 487 阅读 · 0 评论 -
在mm32f3270为micropython创建Pin模块(1)
在mm32f3270为micropython创建Pin模块(1)文章目录在mm32f3270为micropython创建Pin模块(1)Requirements代码框架Requirements最终期望实现的效果是,在REPL界面能运行如下脚本:from machine import Pinpin0 = Pin(22)UART0 = Pin(pin0, af=PIN_AF_1)pin1 = Pin(23, mode=PIN_MODE_1, drive=PIN_DRIVE_1)pin1.h原创 2021-08-22 23:45:42 · 666 阅读 · 0 评论 -
阅读micropyton源码-添加C扩展类模块(4)
阅读micropyton源码-添加C扩展类模块(4)苏勇,2021年8月文章目录阅读micropyton源码-添加C扩展类模块(4)没有输入参数的pin.on() & pin.off()有输入参数的pin.init()有返回值的pin.value()小结make_new()函数实现的相当于初始化一个类实例的操作。初始化之后,用户就可以使用类实例调用函数执行功能。此处再看一遍实现功能函数的写法。没有输入参数的pin.on() & pin.off()在“ports/mimxrt/mac原创 2021-08-18 22:54:12 · 350 阅读 · 0 评论 -
阅读micropyton源码-添加C扩展类模块(3)
阅读micropyton源码-添加C扩展类模块(3)苏勇,2021年8月文章目录阅读micropyton源码-添加C扩展类模块(3)从make_new()函数开始pin_find()函数helper()函数排除万难,终于讲到函数实现了。python中通过类实例化一个对象,在实例化过程中,首先“无中生有”搞出一块内存存放对象,然后实现传参,将实例化参数传入内部对象实体,最后调用相关初始化操作,为后续类方法正常工作创造运行环境。“无中生有”的内存来自于gc_pool,但在哪个环节搞出来的内存,这是一个需原创 2021-08-18 21:44:55 · 479 阅读 · 0 评论 -
阅读micropyton源码-添加C扩展类模块(2)
阅读micropyton源码-添加C扩展类模块(2)苏勇,2021年8月文章目录阅读micropyton源码-添加C扩展类模块(2)看看machine_pin_type实例的定义特别说明看看machine_pin_type实例的定义回到ports/mimxrt/machine_pin.c文件,同machine_pin_type并列定义的还有“machine_pin_af_type”,在“pin.h”和“ports/mimxrt/boards/mimxrt_prefix.c”文件中有所涉及,关于指定引原创 2021-08-18 13:32:52 · 373 阅读 · 1 评论 -
阅读micropyton源码-添加C扩展类模块(1)
阅读micropyton源码-添加C扩展类模块(1)苏勇,2021年8月文章目录阅读micropyton源码-添加C扩展类模块(1)Introduction在python内核中注册machine模块包含的Pin模块小结Introduction在前文《为micropython添加模块(2)-类模块》中,我按照源代码排列的顺序,大体阅读了micropython添加C扩展模块的编程方式及其源代码。在通读micropython源码之后,我认为使用自顶向下的方式阅读和描述这部分更有助于开发者理解和编程。经年之原创 2021-08-17 22:12:05 · 756 阅读 · 0 评论 -
移植micropython最小工程到mm32f3270微控制器
移植micropython最小工程到mm32f3270微控制器苏勇, 2021-08文章目录移植micropython最小工程到mm32f3270微控制器Introduction初试micropython v1.6增加MM32的移植为新移植创建Makefile附件Introductionmicropython v1.6发布已经有一段时间, 相比于之前的v1.3, 在内核中增强了一些功能并修复了一些bug, 支持的芯片也多了一些. 特别注意的是, micropython除了对STM32继续投入主要支持原创 2021-08-10 18:20:40 · 1468 阅读 · 0 评论 -
阅读micropython源码-内存管理组件GC
阅读micropython源码-内存管理组件GC苏勇,2021年8月文章目录阅读micropython源码-内存管理组件GC初探micropython中的内存管理机制分析指定的内存相关参数通用Python的GC垃圾收集机制从main.c入手分析micropython中的gc组件gc_init()gc_collect()gc_sweep_all()结论相关源文件:ports/mimxrt/main.cpy/gc.hpy/gc.clib/utils/gchelper.hlib/utils/gc原创 2021-08-08 22:56:15 · 1491 阅读 · 0 评论 -
移植micropython最小工程(补充)-移除frozentest.mpy
在最小移植中移除对frozentest.mpy的依赖过年回家继续写micropython的开发笔记. 原来开发用的电脑没带在身边, 就在家里的电脑重新搭建micropython的开发环境. 自然还会遇到很多老代码中显式使用"python3"的情况. 在调试过程中发现, build过程中对mpy-tool.py有依赖, 但怎么改都绕不过去, 不记得在原来的开发主机上怎么改通的, 只好换个思路再看看.分析makefile文件发现, mpy-tool.py是要处理frozentest.mpy文件的. 之前在做原创 2021-02-17 00:24:04 · 522 阅读 · 0 评论 -
为micropython添加模块(2)-类模块
这篇是我早年学习micropython的学习笔记.当时关于micropython的开发文档资料相当匮乏, 我自己很多开发的思路都是通过研读代码, 连蒙带猜一点一点摸索出来的. 这篇<移植mpy:向模块中添加类>的文档成文之后, 一直存放在我的一个私有代码仓库里, 作为我近几年学习micropython的知识基础重要组成部分, 为我研究和应用micropython提供重要的依据.最近看到大家对micropython的关注度又有所提高, 因此我把陈年的私藏开放出来, 与同行们共勉, 以此也希望原创 2021-02-16 22:14:00 · 1301 阅读 · 0 评论 -
为micropython添加模块(1)-全局模块
使用官方文档的方式为micropython添加一个全局模块文章目录使用官方文档的方式为micropython添加一个全局模块概述根据官方描述步骤创建一个led模块为新模块创建一个源文件逐层封装在Makefile文件中更新SRC_C和SRC_QSTR进一步调试在mpconfigport.h文件中注册新模块总结概述官方提供的开发指导文档中, 描述了一个最简单的增加模块的样例:http://docs.micropython.org/en/latest/develop/porting.html#adding原创 2021-02-16 21:34:37 · 1670 阅读 · 4 评论 -
移植micropython的最小工程到lpc5500微控制器
移植micropython的最小工程到lpc5500微控制器文章目录移植micropython的最小工程到lpc5500微控制器概述修改Makefile,替换芯片相关文件调整linker文件将常规SRAM分成两块增大栈的大小添加micropython需要引用的变量调整必要的代码整理main()函数对接硬件UART串口驱动初始化MCU硬件的board_init()函数使用Ozone配合JLink调试器下载程序到板子上关于lpc55s69芯片的一些问题及解决方案后记概述micropython目前主要支持的原创 2021-02-09 00:49:36 · 1343 阅读 · 0 评论 -
基于Windows系统搭建micropython原生开发环境
基于Windows系统搭建micropython原生开发环境苏勇,suyong_yq@126.com,2021-01文章目录基于Windows系统搭建micropython原生开发环境引言下载资料安装msys2在msys2中安装make工具在msys2中安装gcc编译器在msys2中安装python3在msys2中安装arm-gcc-none-eabi编译器编译micropython中的minimal工程验证工具链编译mpy-cross编译器编译minimal工程参考资料引言micropython的原创 2021-01-18 23:39:32 · 4479 阅读 · 3 评论 -
CircuitPython获取代码,编译及下载运行
本文内容部分引用Adafruit官网提供的build指南.https://learn.adafruit.com/building-circuitpython/build-circuitpython官方创建的pdf版本文档可供下载:https://cdn-learn.adafruit.com/downloads/pdf/building-circuitpython.pdfBuild Circ...原创 2020-02-09 17:49:07 · 955 阅读 · 0 评论 -
CircuitPython准备开发工具链
CircuitPython准备开发工具链虽然CircuitPython官方发布平台说也可以支持Windows操作系统平台的编译, 但考虑到CircuitPython原生开发平台就是Ubunut, 我希望遵循开发者的操作流程, 从而避免一些由于跨平台而带来的不必要的麻烦.电脑还是运行在Windows操作系统平台上(办公电脑上统一安装Windows, 不能为了这一个项目,放弃了对IAR, Keil...原创 2020-02-09 17:18:24 · 1180 阅读 · 0 评论 -
CircuitPython vs MicroPython
CircuitPython vs MicroPython(本文内容部分翻译自CircuitPython项目的readme文档)CircuitPython基于MicroPython, 由Adafruit赞助, 并为Adafruit出品的教育开发板进行了移植.个人感觉CircuitPython对MicroPython进行了进一步的规范,毕竟是在前人的基础上进行开发, 又有商业公司提供赞助, 考虑...原创 2020-02-09 14:56:11 · 5236 阅读 · 0 评论