Micropython移植烧录到stm32f407


前言

python语言拥有可读性强,兼容性高,面向对象,易于学习等优点,但是很长一段时间python只能用于x86平台,而arm开发则是C语言一家独大,于是人们诞生了利用python开发arm的想法,Micropython应运而生,Micropython提供了使用Python语言操控硬件设备的接口,把底层的C代码封装起来,让没有C语言基础的开发者也能很轻松实现项目。具体使用方法参考: Micropython文档


一、下载源码

从GitHub下载代码,链接: GitHub
在这里插入图片描述
下载完后解压进入目录,里面内容如下
```javascript
// An highlighted block
var foo = 'bar';

二、编译前准备

1、查看README.md

像GitHub上面的大型项目,一般都会有详细的编译说明写在README.md里面,我们要认真查看,不要惧怕英文

2、编译MicroPython cross-compiler

从README.md中这段可以知道很多开发板需要先编译好mpy-cross 然后才能成功编译Micropython

cd mpy-cross
make

在这里插入图片描述

3、选择最适合的芯片

在ports/stm32/boards下查看micropython支持的处理器
在这里插入图片描述
从命名上看VCC_GND_F407VE这个是和我自己开发板处理器最像的,所以复制VCC_GND_F407VE并重命名为MYBOARD,这样做是为了避免破坏了原来的代码

4、修改源码匹配自己开发板

修改晶振频率
打开MYBOARD目录下的mpconfigboard.h,这是板子接口配置文件,其中#define MICROPY_HW_CLK_PLLM (25)是把外部时钟25分频得到1MHz的时钟信号作为系统时钟,因为我用的是8M晶振,自然要改为8分频
在这里插入图片描述
修改LED引脚
把LED1改为我板子上的PD_12引脚
在这里插入图片描述

三、安装交叉编译工具并编译

从这段可以看出代码需要arm-none-eabi-gcc工具链进行编译,我们可以通过下面命令安装(文章结尾介绍什么是交叉编译工具)

sudo apt-get install arm-none-eabi-gcc

在这里插入图片描述
进入stm32目录通过以下命令将源码中的一些子模块submoudle下载下来

make submodules

最后在stm32目录下执行编译,生成我们所需要的HEX形式的固件。

make BOARD=MYBOARD

编译成功的固件在build-MYBOAR目录下。

四、烧录

使用STM32CubeProgrammer烧录: 下载地址
首先把开发板断电,按住boot0不放,接通电源,把开发板用usb线连接电脑,这时候电脑应该识别到一个usb设备,接下来按照下图顺序操作,选择firmware.hex固件后点击Download等待进度条跑完,复位开发板可以发现电脑识别到一个移动磁盘,这时候移植工作就完成了,下面开始测试。
在这里插入图片描述

五、测试

使用MobaXterm_Personal的串口连接开发板,输入以下命令,完美实现led的亮灭操作,其他的外设操作待以后更新
在这里插入图片描述

什么是gcc交叉编译

源文件需要经过编译才能生成可执行文件。在Windows下进行开发时,我们利用集成开发环境(比如Visual studio)已经将各种编译工具的使用封装好了。Linux下也有很优秀的集成开发工具,但是更多的时候是直接使用编译工具;
PC机上的编译工具链为gcc、ld、objcopy、objdump等,它们编译出来的程序是在x86平台上运行的。要编译出能在ARM平台上运行的程序,必须使用交叉编译工具xxx-gcc、xxx-ld等(不同版本的编译器的前缀不一样,比如arm-linux-gcc),所谓“交叉”的意思就是编译主机和运行主机是不同的架构

交叉编译工具链的命名规则

交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]

arch – 体系架构,如ARM,MIPS(通过交叉编译工具生成的可执行文件或系统镜像的运行平台或环境)
vendor – 工具链提供商
os – 目标操作系统(host主要操作平台,也就是编译时的系统)
eabi – 嵌入式应用二进制接口(Embedded Application Binary Interface)

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值