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

移植 编译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扩展软件包
关注我们
st-img 微信公众号
st-img 手机版