社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 6025|回复: 15

STM32F7DISCO 移植 micropython

[复制链接]

104

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-3-29 18:54:41 | 显示全部楼层 |阅读模式
看到 @dcexpert    最近一直在研究micropython , 我也决定凑凑热闹 。
首先声明, 此非我原创,我是根据micropython的github 源码移植的。


1.先做好准备工作:
(1)装一个linux系统的笔记本, 我用的是ubuntu14.04  32位, 64位有些不同
(2) 下载 micropython 源码
https://github.com/micropython/micropython     点 Download Zip 即可
(3)下载 arm-none-eabi
https://launchpad.net/gcc-arm-embedded/5.0/5-2015-q4-major/+download/gcc-arm-none-eabi-5_2-2015q4-20151219-linux.tar.bz2
解压
tar xvjf gcc-arm-none-eabi-5_2-2015q4-20151219-linux.tar.bz2  
输入以下命令:
vim ~/.bashrc
在文件末尾添加 PATH环境变量
$PATH = xxxx/gcc-arm-none-eabi-5_2-2015q4/bin:$PATH;
xxx为安装包解压后的文件路径,这里是想让系统直接能找到arm-none-eabi-gcc compiler
然后重新source 一下
source ./
注意这里如果是64位系统, 必须要先安装64位下可以执行32位的工具
sudo apt-get install ia32-libs
如果在shell输入 arm 双击tab可以出来 arm-none-eabi-gcc 等一系列工具,说明ok了
(4) 下载 st-link 源码
https://github.com/texane/stlink
解压之后, 先要安装依赖的包
sudo apt-get install libusb-1.0-0-dev pkg-config autotools-dev autoconf
然后进入解压文件,依次执行:
./autogen.sh
./configure
make
然后会出现一个st-flash文件,可以烧写bin到开发板,另外,它可以用于gdb调试,这个自己去探索吧
然后还是要添加PATH路径,不过这次要在所有用户都添加,因此选择 /etc/profile 文件
vim /etc/profile
在末尾添加 :
export PATH=xxxx/stlink:$PATH;   注: xxxx为文件路径,每个人都不同
然后重新source一下,验证方法和前面一样,如果在任何目录可以直接出来   st-flash
(4) 串口工具  minicom
sudo apt-get install minicom
至此,准备工作完成了


2. 编译
进入micropython 的stmhal目录(留心观察的网友可能会发现 总目录下有 cc3200 和 esp8266等目录,这些都是已经移植成功的板子,有这些板子的可以自己尝试一下)
cd stmhal
执行:
make BOARD=STM32F7DISC
如果会看 Makefile的可以看一下Makefile文件,里面开头源码如下:


  1. # Select the board to build for: if not given on the command line,
  2. # then default to PYBV10.
  3. BOARD ?= PYBV10
  4. ifeq ($(wildcard boards/$(BOARD)/.),)
  5. $(error Invalid BOARD specified)
  6. endif
复制代码
显然 BOARD指名的是 board子目录下的目录,
然后进入 board目录,发现有  NUCLE_F411RE . NUCLEO_F401RE,  STM32F439, STMF429DISC 等,其中就有 STM32F7DISC
因此指定不同的BOARD就可以编译不同的板子,有这些板子的也都可以 嗨起来了
如果之前的步骤没有错误的话,这次编译不会报错,出现  build-STM32F7DISC 目录
里面有我们要烧写的文件 :   firmware0.bin  和 firmware1.bin


(3)烧写
先将stm32f7和电脑连接
执行如下命令:
lsusb
目的是找到 stm32f7的usb bus和device
bruno@bruno-linux:~/git/micropython/stmhal$ lsusb
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 003: ID 1bcf:2883 Sunplus Innovation Technology Inc.
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 046d:c07e Logitech, Inc.
Bus 001 Device 012: ID 0483:374b STMicroelectronics ST-LINK/V2.1 (Nucleo-F103RB)
Bus 001 Device 011: ID 04d9:0024 Holtek Semiconductor, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


然后转到管理员 sudo -s
设置环境变量  :    export STLINK_DEVICE="001:012"  001是Bus , 012是Device
烧写:  make BOARD=STM32F7DISC deploy-stlink
如果一切顺利的话,其实非常不顺利,我第二次烧写出现了问题
出现如下错误:
  1. root@bruno-linux:~/git/micropython/stmhal# make BOARD=STM32F7DISC deploy-stlink
  2. Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
  3. Writing build-STM32F7DISC/firmware0.bin to the board via ST-LINK
  4. 2016-03-29T18:37:17 INFO src/stlink-usb.c: bus 001 dev 021
  5. 2016-03-29T18:37:17 INFO src/stlink-common.c: Loading device parameters....
  6. 2016-03-29T18:37:17 WARN src/stlink-common.c: unknown chip id! 0x10000
复制代码
然后去github stlink上找解决办法,找了一会,终于找到了, 有人说长按 reset 键4-5秒,然后再次执行,就ok了,我试了一下,很靠谱
如果不能解决你们的问题的话,建议自己去github 上找一找
完美的话,提示如下:
  1. root@bruno-linux:~/git/micropython/stmhal# make BOARD=STM32F7DISC deploy-stlink
  2. Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
  3. Writing build-STM32F7DISC/firmware0.bin to the board via ST-LINK
  4. 2016-03-29T18:37:31 INFO src/stlink-usb.c: bus 001 dev 021
  5. 2016-03-29T18:37:31 INFO src/stlink-common.c: Loading device parameters....
  6. 2016-03-29T18:37:31 INFO src/stlink-common.c: Device connected is: F7 device, id 0x10016449
  7. 2016-03-29T18:37:31 INFO src/stlink-common.c: SRAM size: 0x50000 bytes (320 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 2048 bytes
  8. 2016-03-29T18:37:31 INFO src/stlink-common.c: Attempting to write 10084 (0x2764) bytes to stm32 address: 134217728 (0x8000000)
  9. EraseFlash - Sector:0x0 Size:0x8000
  10. Flash page at addr: 0x08000000 erased
  11. 2016-03-29T18:37:31 INFO src/stlink-common.c: Finished erasing 1 pages of 32768 (0x8000) bytes
  12. 2016-03-29T18:37:31 INFO src/stlink-common.c: Starting Flash write for F2/F4/L4
  13. 2016-03-29T18:37:31 INFO src/stlink-common.c: Successfully loaded flash loader in sram
  14. enabling 32-bit flash writes
  15. size: 10084
  16. 2016-03-29T18:37:31 INFO src/stlink-common.c: Starting verification of write complete
  17. 2016-03-29T18:37:31 INFO src/stlink-common.c: Flash written and verified! jolly good!
  18. Writing build-STM32F7DISC/firmware1.bin to the board via ST-LINK
  19. 2016-03-29T18:37:31 INFO src/stlink-usb.c: bus 001 dev 021
  20. 2016-03-29T18:37:31 INFO src/stlink-common.c: Loading device parameters....
  21. 2016-03-29T18:37:31 INFO src/stlink-common.c: Device connected is: F7 device, id 0x10016449
  22. 2016-03-29T18:37:31 INFO src/stlink-common.c: SRAM size: 0x50000 bytes (320 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 2048 bytes
  23. 2016-03-29T18:37:31 INFO src/stlink-common.c: Attempting to write 274300 (0x42f7c) bytes to stm32 address: 134348800 (0x8020000)
  24. EraseFlash - Sector:0x4 Size:0x20000
  25. Flash page at addr: 0x08020000 erasedEraseFlash - Sector:0x5 Size:0x40000
  26. Flash page at addr: 0x08040000 erased
  27. 2016-03-29T18:37:35 INFO src/stlink-common.c: Finished erasing 2 pages of 262144 (0x40000) bytes
  28. 2016-03-29T18:37:35 INFO src/stlink-common.c: Starting Flash write for F2/F4/L4
  29. 2016-03-29T18:37:35 INFO src/stlink-common.c: Successfully loaded flash loader in sram
  30. enabling 32-bit flash writes
  31. size: 32768
  32. size: 32768
  33. size: 32768
  34. size: 32768
  35. size: 32768
  36. size: 32768
  37. size: 32768
  38. size: 32768
  39. size: 12156
  40. 2016-03-29T18:37:38 INFO src/stlink-common.c: Starting verification of write complete
  41. 2016-03-29T18:37:39 INFO src/stlink-common.c: Flash written and verified! jolly good!
复制代码


然后现在就可以 玩 micropython啦, 先将 板子的usb fs和电脑连接起来,之前的st-link usb连接不能断,要供电,
连接后,会出来一个新的文件夹,放的就是我们熟悉的文件啦
boot.py   main.py  pybcdc.inf   README.txt


然后 lsusb | grep ttyACM
选择 ttyACM0
打开串口 ,先配置
sudo minicom -s
进入 Serial port setup
配置为  /dev/ttyACM0
115200 8N1
其他不变,回车
选择 Save setup as dfl
然后选择 Exit
ok ,一些就绪
进入熟悉的python环境了
尝试了一下:
  1. myled = pyb.LED(2)
  2. myled.on()
  3. myled.off()
  4. myled.toggle()
复制代码




不出意外,小灯果然点亮和熄灭了

评分

2

查看全部评分



回复

使用道具 举报

6752

TA的帖子

17

TA的资源

版主

Rank: 6Rank: 6

发表于 2016-3-29 19:55:39 | 显示全部楼层
有空试试,正好有F7

点评

我在帖子就说了 , 只要你有 stm32f7disc , stm32f429disc, stm32f411disc, nucleo f401re, nucleo f411re 这些板子 都是可以的  详情 回复 发表于 2016-3-29 20:05
training


回复

使用道具 举报

104

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2016-3-29 20:05:39 | 显示全部楼层
白丁 发表于 2016-3-29 19:55
有空试试,正好有F7

我在帖子就说了 , 只要你有 stm32f7disc , stm32f429disc, stm32f411disc,  nucleo f401re, nucleo f411re
这些板子 都是可以的


回复

使用道具 举报

1413

TA的帖子

2

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

测评达人

发表于 2016-3-29 21:34:04 | 显示全部楼层
很高大上的样子啊,赞一个


回复

使用道具 举报

1008

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2016-3-30 23:05:53 | 显示全部楼层
可否帮忙生成个401RE的BIN文件?
谢谢楼主,刚好有这个板子,可惜没有linux系统

点评

windows下应该也是可以的,只要安装arm-none-eabi-gcc  详情 回复 发表于 2016-3-30 23:12


回复

使用道具 举报

6769

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2016-3-30 23:12:35 | 显示全部楼层
wgsxsm 发表于 2016-3-30 23:05
可否帮忙生成个401RE的BIN文件?
谢谢楼主,刚好有这个板子,可惜没有linux系统

windows下应该也是可以的,只要安装arm-none-eabi-gcc

点评

这个不知道怎么用的 昨天试了一个晚上也没有生成Bin文件 有空请版主帮忙弄一个STM32F401RE的一个可用的bin来做micropython 试验 谢谢  详情 回复 发表于 2016-4-1 15:52
好的,这个一定要试试。  详情 回复 发表于 2016-3-30 23:22


回复

使用道具 举报

1008

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2016-3-30 23:22:23 来自手机 | 显示全部楼层


好的,这个一定要试试。


回复

使用道具 举报

2634

TA的帖子

1

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2016-3-31 09:42:33 | 显示全部楼层
好,有空试试。这样很多板子都可以玩起来。


回复

使用道具 举报

1008

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2016-4-1 15:52:01 | 显示全部楼层
dcexpert 发表于 2016-3-30 23:12
windows下应该也是可以的,只要安装arm-none-eabi-gcc

这个不知道怎么用的
昨天试了一个晚上也没有生成Bin文件
有空请版主帮忙弄一个STM32F401RE的一个可用的bin来做micropython 试验
谢谢

点评

我是编译后就停在中间不动了。  详情 回复 发表于 2016-4-1 16:34


回复

使用道具 举报

6769

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2016-4-1 16:34:50 | 显示全部楼层
wgsxsm 发表于 2016-4-1 15:52
这个不知道怎么用的
昨天试了一个晚上也没有生成Bin文件
有空请版主帮忙弄一个STM32F401RE的一个可用的 ...

我是编译后就停在中间不动了。


回复

使用道具 举报

39

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-5-13 23:00:44 | 显示全部楼层
都F7了,我还f1呢
micorpython对硬件的最低要求是多少MHz? 多少Flash?多少ram?


回复

使用道具 举报

1279

TA的帖子

0

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2016-8-17 14:47:22 | 显示全部楼层
楼主会生成mpy-cross.exe吗,麻烦给发一个,414243901@qq.com 谢谢
收(买)怡成血糖仪5D-1


回复

使用道具 举报

1181

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-1-9 15:47:54 | 显示全部楼层
stlink的驱动竟然装上了,真是牛人啊,不错,我是怎么努力,结果都是“0”“0”,是0000000000的,都抓狂了。


回复

使用道具 举报

271

TA的帖子

1

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2018-1-27 13:42:05 | 显示全部楼层
mask   


回复

使用道具 举报

229

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 前天 15:58 | 显示全部楼层
必须要linux操作系统吗?为这个还得单独安装个操作系统?win下可以吗?

点评

windows下也可以,但是麻烦一些。Linux下可以用虚拟机。  详情 回复 发表于 前天 16:14
http://www.jslaser.com高性价比激光测距传感器


回复

使用道具 举报

6769

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 前天 16:14 | 显示全部楼层
kangkls 发表于 2018-6-23 15:58
必须要linux操作系统吗?为这个还得单独安装个操作系统?win下可以吗?

windows下也可以,但是麻烦一些。Linux下可以用虚拟机。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-6-25 06:00 , Processed in 0.478824 second(s), 18 queries , Gzip On, Redis On.

快速回复 返回顶部 返回列表