你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

移植 编译MicroPython到自己的板子

[复制链接]
codysafe 发布时间:2018-7-24 13:52
记录下为自己的板子编译MicroPython的过程。

1、搭建环境
下载msys2,安装完更新下。具体操作可以百度。记住安装位置,我是直接安装到D盘根目录。
下载gcc-arm-none-eabi,
在home\Administrator 下建立新目录tools,解压gcc到tools下。用记事本打开.bashrc文件,最后一行添加
export PATH="D:\msys32\home\Administrator\tools\gcc-arm-none-eabi-7\bin"PATH
保存,重新打开msys2.exe使配置生效。

下载源码。$ git clone --recursive http://github.com/micropython/micropython.git
完成时如下


打开D:\msys32\home\Administrator (换成自己的目录)
会多出一个micropython 的文件夹,里面就是所有源码了。

2、移植
打开micropython下 ports/stm32/boards,新建目录F407,拷贝STM32F4DISC下所有文件到F407下。删掉staccel.py。

mpconfigboard.h 中是板子的配置文件,pins.csv 中是引脚定义。
#define MICROPY_HW_BOARD_NAME       "F407"
#define MICROPY_HW_MCU_NAME         "STM32F407"

#define MICROPY_HW_HAS_SWITCH       (1)
#define MICROPY_HW_HAS_FLASH        (1)
#define MICROPY_HW_ENABLE_RNG       (1)
#define MICROPY_HW_ENABLE_RTC       (0)
#define MICROPY_HW_ENABLE_DAC       (1)
#define MICROPY_HW_ENABLE_USB       (1)
#define MICROPY_HW_HAS_SDCARD       (1)

// HSE is 8MHz
#define MICROPY_HW_CLK_PLLM (25)
#define MICROPY_HW_CLK_PLLN (336)
#define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)
#define MICROPY_HW_CLK_PLLQ (7)

// UART config

// A9 is used for USB VBUS detect, and A10 is used for USB_FS_ID.
// UART1 is also on PB6/7 but PB6 is tied to the Audio SCL line.
// Without board modifications, this makes UART1 unusable on this board.
#define MICROPY_HW_UART1_TX     (pin_A9)
#define MICROPY_HW_UART1_RX     (pin_A10)

#define MICROPY_HW_UART2_TX     (pin_A2)
#define MICROPY_HW_UART2_RX     (pin_A3)

#define MICROPY_HW_UART3_TX     (pin_D8)
#define MICROPY_HW_UART3_RX     (pin_D9)


// NOTE: A0 also connects to the user switch. To use UART4 you should
//       set MICROPY_HW_HAS_SWITCH to 0, and also remove SB20 (on the back
//       of the board near the USER switch).
#define MICROPY_HW_UART4_TX     (pin_A0)
#define MICROPY_HW_UART4_RX     (pin_A1)

// NOTE: PC7 is connected to MCLK on the Audio chip. This is an input signal
//       so I think as long as you're not using the audio chip then it should
//       be fine to use as a UART pin.


// I2C busses
#define MICROPY_HW_I2C1_SCL (pin_B6)
#define MICROPY_HW_I2C1_SDA (pin_B7)


// SPI busses
#define MICROPY_HW_SPI1_NSS  (pin_A4)
#define MICROPY_HW_SPI1_SCK  (pin_A5)
#define MICROPY_HW_SPI1_MISO (pin_A6)
#define MICROPY_HW_SPI1_MOSI (pin_A7)
#define MICROPY_HW_SPI3_NSS  (pin_A15)
#define MICROPY_HW_SPI3_SCK  (pin_B3)
#define MICROPY_HW_SPI3_MISO (pin_B4)
#define MICROPY_HW_SPI3_MOSI (pin_B5)

// CAN busses
#define MICROPY_HW_CAN1_TX (pin_B9)
#define MICROPY_HW_CAN1_RX (pin_B8)


// USRSW is pulled low. Pressing the button makes the input go high.
#define MICROPY_HW_USRSW_PIN        (pin_C0)
#define MICROPY_HW_USRSW_PULL       (GPIO_NOPULL)
#define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_RISING)
#define MICROPY_HW_USRSW_PRESSED    (1)

// LEDs
#define MICROPY_HW_LED1             (pin_E0) // red
#define MICROPY_HW_LED2             (pin_E1) // green
#define MICROPY_HW_LED3             (pin_E2) // orange
#define MICROPY_HW_LED4             (pin_E3) // blue
#define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))
#define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))

// USB config
#define MICROPY_HW_USB_FS              (1)
//*************end  mpconfigboard.h

pins.csv 用记事本打开修改。
缺少PB3 ,按格式添加。
最后的LED SW对应mpconfigboard.h 的引脚修改。

接下来是修改sd卡的文件,因为我的板子没有检测sd卡插入引脚。
打开stm32文件夹下的sdcard.c,
注释掉163行 引脚初始化。
检测函数直接返回1。

bool sdcard_is_present(void) {
    return 1;
    //return HAL_GPIO_ReadPin(MICROPY_HW_SDCARD_DETECT_PIN->gpio, MICROPY_HW_SDCARD_DETECT_PIN->pin_mask) == MICROPY_HW_SDCARD_DETECT_PRESENT;
}


modules下有几个py文件,是软连接的,msys2下有问题。从micropython\drivers 下复制对应的文件覆盖掉。

3、编译
msys2 进入到ports/stm32目录,执行 make BOARD=F407


收藏 4 评论11 发布时间:2018-7-24 13:52

举报

11个回答
codysafe 回答时间:2018-7-24 18:30:29
图片都没了 补上编译OK的

SD卡问题纠结了好久,还是不能从sd卡启动,但是可以使用

ok.jpg
OK1.jpg
MrJiu 回答时间:2018-7-24 16:33:37
牛逼,膜拜一个!!!
夏明smile 回答时间:2018-7-26 16:17:12
大赞!!
Veiko 回答时间:2018-7-27 15:52:03
厉害
buddy_wwq 回答时间:2018-7-27 16:18:54
厉害,蹭点热度,下载需要金币
annqian 回答时间:2018-7-30 16:46:19
我想问一下 MicroPython 这个工具具体是做什么用的?和集成开发环境keil 、IAR相比,有什么优势?
any012 回答时间:2018-7-31 10:39:05
annqian 发表于 2018-7-30 16:46
我想问一下 MicroPython 这个工具具体是做什么用的?和集成开发环境keil 、IAR相比,有什么优势? ...

不应该和keil,iar相比了。是实现在单片机上用python语言编程。
python相对c来说语法更简单更易学。
我也没接触过micropython,不知道说的对不对。
酱哒哒 回答时间:2018-7-31 14:05:37
annqian 发表于 2018-7-30 16:46
我想问一下 MicroPython 这个工具具体是做什么用的?和集成开发环境keil 、IAR相比,有什么优势? ...

micro python 类似python语法,如果配置好了单片机和micro python之间的过渡层,就可以直接用python的方式操作单片机。但这并不意味着万能!micropython毕竟只是一个类似于语法解释器的东西(这个可以参考原子大神的usmart组件,一个道理),如果要实现的功能在单片机上并没有对应的执行函数,也就没有任何用。

这种解释性的语法,目前比较多,vsf,micro python,nodemcu下面的lua,c语言解释器pico c等。

annqian 回答时间:2018-8-1 08:38:51
主要是针对哪个系列芯片的? 有无总括性的说明资料。
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版