12734|15

95

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

STM32F7DISCO 移植 micropython [复制链接]

 
 
看到 @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()
复制代码




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

最新回复

windows下也可以,但是麻烦一些。Linux下可以用虚拟机。  详情 回复 发表于 2018-6-23 16:14

赞赏

2

查看全部赞赏

点赞 关注(4)
 
 

回复
举报

6423

帖子

17

TA的资源

版主

沙发
 
有空试试,正好有F7

点评

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

回复

95

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
白丁 发表于 2016-3-29 19:55
有空试试,正好有F7

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

回复

1297

帖子

2

TA的资源

纯净的硅(中级)

4
 
很高大上的样子啊,赞一个
 
 
 

回复

940

帖子

0

TA的资源

纯净的硅(高级)

5
 
可否帮忙生成个401RE的BIN文件?
谢谢楼主,刚好有这个板子,可惜没有linux系统

点评

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

回复

1万

帖子

25

TA的资源

版主

6
 
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
 
 
 

回复

940

帖子

0

TA的资源

纯净的硅(高级)

7
 


好的,这个一定要试试。
 
 
 

回复

6107

帖子

4

TA的资源

版主

8
 
好,有空试试。这样很多板子都可以玩起来。
 
 
 

回复

940

帖子

0

TA的资源

纯净的硅(高级)

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

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

点评

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

回复

1万

帖子

25

TA的资源

版主

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

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

回复

39

帖子

0

TA的资源

一粒金砂(中级)

11
 
都F7了,我还f1呢
micorpython对硬件的最低要求是多少MHz? 多少Flash?多少ram?
 
 
 

回复

1228

帖子

0

TA的资源

纯净的硅(高级)

12
 
楼主会生成mpy-cross.exe吗,麻烦给发一个,414243901@qq.com 谢谢
个人签名

喝最烈的酒,..DIY最实用的东西

 
 
 

回复

1903

帖子

0

TA的资源

版主

13
 
stlink的驱动竟然装上了,真是牛人啊,不错,我是怎么努力,结果都是“0”“0”,是0000000000的,都抓狂了。
 
 
 

回复

413

帖子

7

TA的资源

一粒金砂(高级)

14
 
mask   
 
 
 

回复

482

帖子

0

TA的资源

纯净的硅(初级)

15
 
必须要linux操作系统吗?为这个还得单独安装个操作系统?win下可以吗?

点评

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

回复

1万

帖子

25

TA的资源

版主

16
 
kangkls 发表于 2018-6-23 15:58
必须要linux操作系统吗?为这个还得单独安装个操作系统?win下可以吗?

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

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表