【MicroPython】MicroPython实现分析与移植【3CANNON蓝牙小钢炮移植】

guo8113   2016-4-21 21:58 楼主
Linux下编译比较简单,而且如果经常用Linux编译的话相信你可以很快搞定,因此只分享下windows下的编译: micropython源码tool下面提供了dfu.py会将.bin转换成dfu格式文件,用于dfu方式下载。 后面我会移植到canoon蓝牙小钢炮板子上。目前可参考版主的帖子:https://bbs.eeworld.com.cn/thread-487758-1-1.html 但里面有一些错误更正后过程如下:
  • 新建一个CANNON目录,将NUCLEO_F401RE下的文件复制到CANNON目录下
  • 如果GNU Tools for ARM已经添加到系统路径,就可以跳过此步,直接编译:打开 stmhal 下的 makefile 文件,修改 CROSS_COMPILE = arm-none-eabi- 这一行,在 arm-none-eabi- 前添加编译器的实际路径
  • 打开 stmhal\boards\CANNON目录,先修改文件stm32f4xx_hal_conf.h
找到#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator 将数字8000000改为16000000,因为小钢炮使用了16M的外部时钟 打开文件 mpconfigboard.h 找到#define MICROPY_HW_CLK_PLLM (8) 将数字8改为16 修改#define MICROPY_HW_HAS_SWITCH (1) . 将1改为0,因为小钢炮上没有用户按键 修改#define MICROPY_HW_LED1 (pin_A5) // Green LD2 LED on Nucleo 将pin_A5改为pin_B3,因为两个板子的LED使用不同的GPIO 修改#define MICROPY_HW_LED_ON(pin) (pin->gpio->BSRRL = pin->pin_mask) 将BSRRL改为BSRRH 修改#define MICROPY_HW_LED_OFF(pin) (pin->gpio->BSRRH = pin->pin_mask) 将BSRRH改为BSRRL,这是因为两个板子的LED驱动方式不同 添加下面RTC的定义 // The pyboard has a 32kHz crystal for the RTC #define MICROPY_HW_RTC_USE_LSE (1) #define MICROPY_HW_RTC_USE_US (0) #define MICROPY_HW_RTC_USE_CALOUT (1) 添加sdcard的定义 ,因为小钢炮支持TF(macroSD)卡。如果不想改线,或者不需要使用TF卡,可以忽略这一步和下面一步。 #define MICROPY_HW_HAS_SDCARD (1) // SD card detect switch #define MICROPY_HW_SDCARD_DETECT_PIN (pin_A15) #define MICROPY_HW_SDCARD_DETECT_PULL (GPIO_PULLUP) #define MICROPY_HW_SDCARD_DETECT_PRESENT (GPIO_PIN_RESET) 小钢炮开发板没有做TF卡的插入检测,所以需要自己飞一根线。开发板上A15(50)和B4(56)是空脚,我选择了A15,因为它更容易焊接一些。如果不想改线,可以修改sdcard.c中的sdcard_is_present函数,让它总是返回true,但是这样就不能检测卡是否插入了。 打开文件pins.cvs,这里预定义了GPIO的名称
  • 修改LED的GPIO为PB3
  • 其他引脚待研究
4. mingw32-make.exe BOARD=CANNON 编译 ret.JPG 5. 用DFU模式下载固件 使用ST DFUSe Demo时 在upgrade or varifacation里选择固件后,要点击upgrade才会烧写到MCU里。 本帖最后由 guo8113 于 2016-4-23 00:04 编辑

回复评论 (10)

在windows下编译时,经常卡在文件pt\emitinlinethumb.c下不动,在linux下没有问题。
点赞  2016-4-21 22:46
不知道楼主有没有描述错误,将mingw32-make.exe所在路径加入环境变量
点赞  2016-4-22 08:21
引用: michael_llh 发表于 2016-4-22 08:21
不知道楼主有没有描述错误,将mingw32-make.exe所在路径加入环境变量

描述不明确? 一般是x:\MinGW\bin这个目录,也就是mingw32-make.exe所在的目录啊。
点赞  2016-4-22 10:07
引用: guo8113 发表于 2016-4-22 10:07
描述不明确? 一般是x:\MinGW\bin这个目录,也就是mingw32-make.exe所在的目录啊。

不是,我想说的是这个exe文件可以在linux底下运行??
点赞  2016-4-22 10:09
引用: dcexpert 发表于 2016-4-21 22:46
在windows下编译时,经常卡在文件pt\emitinlinethumb.c下不动,在linux下没有问题。

是py/emitinlinethumb.c吧? 我这边没有遇到这个问题。是不是PC python软件问题。
点赞  2016-4-22 10:09
引用: guo8113 发表于 2016-4-22 10:09
是py/emitinlinethumb.c吧? 我这边没有遇到这个问题。是不是PC python软件问题。

是py/emitinlinethumb.c这个文件,感觉与工具链有关,代码本身没有问题。
点赞  2016-4-22 10:14
引用: dcexpert 发表于 2016-4-22 10:14
是py/emitinlinethumb.c这个文件,感觉与工具链有关,代码本身没有问题。

我是在git bash里执行的,估计还是缺什么编译所需的组建
点赞  2016-4-22 10:38
引用: michael_llh 发表于 2016-4-22 10:09
不是,我想说的是这个exe文件可以在linux底下运行??

开篇就注明了:
“Linux下编译比较简单,而且如果经常用Linux编译的话相信你可以很快搞定,因此只分享下windows下的编译”
看到。exe首先想到肯定是windows,
你非要在linux下运行.exe也不是不可以的奥,可以用wine,linux可以模拟出windows的运行环境的。开源的强大之处。但不是所有.exe都可以在linux的wine里运行。
点赞  2016-6-3 09:59
引用: guo8113 发表于 2016-6-3 09:59
开篇就注明了:
“Linux下编译比较简单,而且如果经常用Linux编译的话相信你可以很快搞定,因此只分享下 ...

sorry,看到了,谢谢分享!
点赞  2016-6-3 10:05
E10K{(A(`SW`L7E%)}KC7N0.png 按照你的步骤编译之后,出现了这样的问题,是怎么回事?
点赞  2018-1-8 15:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复