打印
[STM32F7]

在NUCLEO_F767ZI上移植MicroPython

[复制链接]
3800|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shaoziyang|  楼主 | 2016-8-1 11:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MicroPython是近年来非常火热的开源项目,它是英国剑桥大学教授Damien George发明,可以在嵌入式系统中使用python语言进行编程,降低了用户使用的难度,让一般的用户也可以快速使用,开发者不用在关注硬件的底层,可以将更多精力放在主要功能和算法上。MicroPython让嵌入式编程变得充满乐趣,不再是枯燥的各种函数调用和代码调试,它比Arduino功能更强,使用更方便。关于MicroPython的介绍,大家可以到网上搜索,也可以去MicroPython中文社区看看,这里就不重复了。

MicroPython可以在多个平台上运行,如STM32F4/STM32L4/STM32F7、CC3200、ESP8266、XMC4700、dsPIC33等,官方也提供了许多移植好的模板和编译好的固件,但是还没有提供NUCLEO_F767ZI。所以要在NUCLEO_F767ZI上跑MicroPython,就需要自己修改和编译。官方已经提供了STM32F7DISC开发板的支持,它使用了STM32F746ZG控制器,和NUCLEO_F767ZI上的STM32F767ZI很接近,所以我们从STM32F7DISC开发板的模板开始。首先要下载MicroPython的源码,最新稳定版本的下载地址是:
http://micropython.org/resources/micropython-master.zip

当然也可以在github上下载开发板源码,作者更新很快,基本每天都会更新。如果从github上下载,推荐使用git软件克隆,这样可以随时和官方代码同步。
https://github.com/micropython/micropython

下载源码后,展开到一个目录,然后进入/stmal/board目录,新建一个NUCLEO_F767ZI目录,并将STM32F7DISC目录下的文件复制过来。
先打开文件stm32f7xx_hal_conf.h,将  #define HSE_VALUE   后的数字从25000000改为8000000。因为NUCLEO_F767ZI上使用的时钟频率是8MHz。

再打开文件mpconfigboard.h,修改部分配置,主要修改内容有(只列出主要部分):

#define MICROPY_HW_BOARD_NAME       "NUCLEO_F767ZI"
#define MICROPY_HW_MCU_NAME         "STM32F767"

#define MICROPY_HW_HAS_SDCARD       (0)

#define MICROPY_HW_CLK_PLLM (8)

#define MICROPY_HW_UART3_PORT       (GPIOD)
#define MICROPY_HW_UART3_PINS       (GPIO_PIN_8 | GPIO_PIN_9)

#define MICROPY_HW_UART_REPL        PYB_UART_3

#define MICROPY_HW_I2C4_SCL         (pin_F14)
#define MICROPY_HW_I2C4_SDA         (pin_F15)

#define MICROPY_HW_USRSW_PIN        (pin_C13)

#define MICROPY_HW_LED1             (pin_B0)   // green
#define MICROPY_HW_LED2             (pin_B7)   // blue
#define MICROPY_HW_LED3             (pin_B14)  // red

编译源码前,需要安装arm-none-eabi-gcc编译器,编译器在https://launchpad.net/gcc-arm-embedded,大家可以根据自己的操作系统选择合适的版本安装。

安装编译器后,就可以在stmhal目录下,输入make进行编译了。在windows下,如果没有安装过make,还需要安装msys或者其他带有make工具的环境。推荐在Linux下编译代码,因为编译速度比Windows下快很多。如果在widnwos下编译,可以使用多线程编译,比默认的单线程也要快一点。如:make BOARD=NUCLEO_F767ZI -j8

编译后,就会在stmhal目录下产生一个build-NUCLEO_F767ZI目录,里面包含有编译的中间文件和最终二进制文件。

用STM32 ST-LINK Utility或者其他软件,加载编译后的firmware.hex文件,通过STlink下载固件到NUCLEO_F767ZI开发板,就可以体验MicroPython了。可以通过STlink的串口或者NUCLEO_F767ZI开发板的macroUSB(CN13)连接到终端软件,连接时将波特率设置为115200。如果通过macroUSB(CN13)连接,会自动安装一个pybflash虚拟磁盘,还会安装一个虚拟串口,这个串口的驱动就在pybflash磁盘上。



为了方便大家,这里也提供编译好的固件(v1.8.2-12-gad9b9c7),可以直接写入开发板。
firmware_NUCLEO_F767ZI.zip (481.28 KB)


沙发
yinhaix| | 2016-8-1 17:49 | 只看该作者
看看,,,,,,,,,,,

使用特权

评论回复
板凳
mmuuss586| | 2016-8-1 19:39 | 只看该作者
支持下;

使用特权

评论回复
地板
静海惊天| | 2016-8-22 15:03 | 只看该作者
MARK!

使用特权

评论回复
5
serialworld| | 2016-8-23 20:06 | 只看该作者
好帖!!!

使用特权

评论回复
6
serialworld| | 2016-8-23 20:44 | 只看该作者
ADC可以用吗?我试了试不行呀。

使用特权

评论回复
7
shaoziyang|  楼主 | 2016-8-23 21:41 | 只看该作者
serialworld 发表于 2016-8-23 20:44
ADC可以用吗?我试了试不行呀。

ADC功能没有测试,我明天抽空试试。

使用特权

评论回复
8
shaoziyang|  楼主 | 2016-8-24 10:40 | 只看该作者
serialworld 发表于 2016-8-23 20:44
ADC可以用吗?我试了试不行呀。

使用ADCALL(),只能将参数设置为10,设成8或12都不行。

可以使用ADC(Pin('A0'))。需要更新一下固件,新固件修正了ADC的引脚。
build-NUCLEO_F767ZI.zip (481.65 KB)

使用特权

评论回复
9
any012| | 2016-8-24 10:54 | 只看该作者
有没有可能支持cortex m3或m0?

使用特权

评论回复
10
shaoziyang|  楼主 | 2016-8-24 21:45 | 只看该作者
any012 发表于 2016-8-24 10:54
有没有可能支持cortex m3或m0?

M0应该不会支持,Flash太小,M3不清楚。目前的MicroPython需要至少512K的Flash,其中固件占用260K以上,其它作为内部磁盘。

M4现在的价格也降低了,和M0/M3的差距在逐步缩小。

使用特权

评论回复
11
绝影| | 2016-8-25 09:21 | 只看该作者
mark

使用特权

评论回复
12
any012| | 2016-8-25 09:24 | 只看该作者
shaoziyang 发表于 2016-8-24 21:45
M0应该不会支持,Flash太小,M3不清楚。目前的MicroPython需要至少512K的Flash,其中固件占用260K以上, ...

在另一个论坛看到说,micropython支持ESP8266了,那个好象是M0内核。

使用特权

评论回复
13
shaoziyang|  楼主 | 2016-8-25 09:47 | 只看该作者
any012 发表于 2016-8-25 09:24
在另一个论坛看到说,micropython支持ESP8266了,那个好象是M0内核。

ESP8266不是ARM内核的,是另外RISC的。ESP8266的确可以运行MicroPython,我们正在搞MicroPython的学习活动。

使用特权

评论回复
14
tabshi| | 2016-11-21 14:18 | 只看该作者
漏出能不能提供完整的修改源码啊。麻烦了。

使用特权

评论回复
15
netlhx| | 2016-11-21 15:11 | 只看该作者
好,支持一个,楼主牛X

使用特权

评论回复
16
tabshi| | 2016-11-21 17:42 | 只看该作者
楼主能不能提供完整的修改源码啊。麻烦了

使用特权

评论回复
17
shaoziyang|  楼主 | 2016-11-21 21:11 | 只看该作者
tabshi 发表于 2016-11-21 17:42
楼主能不能提供完整的修改源码啊。麻烦了

照着做就出来了,很容易的,也没有保留什么。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:https://www.micropython.org.cn/

30

主题

313

帖子

6

粉丝