M5Stack(ESP32)学习笔记(9)—— 编译并烧写M5Stack的MicroPython固件

      UIFlow是个挺不错的编程环境,适合新手学习。它基于MicroPython(Lobo版本),也可以脱离UIFlow的IDE来用Python编程。但是把玩了几天后,我发现M5Stack的原配UIFlow/MicroPython有如下问题:

  1. 系统带的东西不少,启动后运行的东西比较多,也有很多令我不明白的地方,而且官方文档也没有说清楚
  2. 我的M5Stack Fire有16M的Flash ROM,但是UIFlow启动后只有700k左右 ( https://blog.csdn.net/zhufu86/article/details/91049171
  3. 没有支持PSRAM(M5Stack Fire自带4M的PSRAM),相信我,对于MicroPython来说4M的RAM和520K的RAM有天壤之别
  4. UIFlow不适合希望深入研究MicroPython的人,而且,没有UIFlow的纯MicroPython更适合生产环境

那么,我来自己编译一个可以发挥M5Stack Fire的优势的MicroPython版本吧。

编译环境

首先,需要有一个编译环境。 按照Lobo MicroPython的wiki的说法,编译环境用各种平台都可以。乐鑫也说可以在win系统下用MSYS2环境来编译。 然而我尝试了一圈(Win&macOS),似乎都不太顺利。算了,还是用Linux吧。因为我没有安装了Linux的主机,所以只能用虚拟机。 为了不让安装的Linux占太多空间,我选择了Debian 9.9。

在macOS下使用VirtualBox安装Debian 9.9

详细安装过程省略……

  • 下载debian-9.9.0-amd64-xfce-CD-1.iso
  • VirtualBox设置:
    内存设置2048MB
    硬盘设置为16GB
  • 安装过程
    选择文本安装界面
    语言选择英语
    国家选择中国
    locale选择en_US.UTF-8
    Use a network mirror? 选择No
    安装的组件,取消选择 Debian desktop environment 和 … Xfce,只选standard system utilities
  • 安装完成后,用root登录。为了避免权限问题,所有的命令都使用root登录执行
  • 为了方便执行命令,开启ssh-server
    apt-get install openssh-server
  • 修改sshd_config文件,命令为:vi /etc/ssh/sshd_config
  • 将#PasswordAuthentication yes的注释去掉
  • 将#PermitRootLogin prohibit-password的注释去掉,并把prohibit-password改为yes
  • 启动SSH服务,命令为:/etc/init.d/ssh start// 或者service ssh start
  • 已经启动的话,/etc/init.d/ssh resetart
  • 验证SSH服务状态,命令为:/etc/init.d/ssh status
  • 添加开机自启动 update-rc.d ssh enable应该不需要,系统已经把ssh设为自启动了
  • VirtualBox设置端口转发,把Host的2222端口转发到Guest的22端口
  • 这样就可以在macOS的命令行用ssh -p2222 root@127.0.0.1登录到Debian Linux了
  • 登录后修改apt源为国内源,参考:
    http://mirrors.ustc.edu.cn/help/debian.html
    http://mirrors.ustc.edu.cn/help/debian-security.html
下载MicroPython的源码

我选择了M5Stack放出的Lobo版本,地址在:
https://github.com/m5stack/M5Stack_MicroPython

点Clone or download直接下载zip包。 当然也可以git clone,但是我这边太慢。

下载完成后,从macOS拷贝到Debian Linux。

scp -P2222 M5Stack_MicroPython.zip root@127.0.0.1:/root/
准备编译环境
  • 安装必要的包
apt-get install git wget make libncurses-dev flex bison gperf python python-serial g++ libfuse-dev picocom unzip
  • 解压缩M5Stack_MicroPython.zip
unzip M5Stack_MicroPython.zip
  • 把M5Stack插入USB口,并且在USBSettings里面增加Filter,让VirtualBox自动捕捉Silcon Labs CP2104 USB to UART Bridge Controller连接到Debian Linux。

  • 在Debian里面查看M5Stack串口连接对应的设备名称

root@debian:~# ls /dev/ttyU*
/dev/ttyUSB0

多半可能是/dev/ttyUSB0

编译和烧写

编译
  • 执行如下命令,会进入配置界面
root@debian:~# cd M5Stack_MicroPython/MicroPython_BUILD/
root@debian:~/M5Stack_MicroPython/MicroPython_BUILD# ./BUILD.sh menuconfig
  • 其实我也没弄清所有的配置,以下是我觉得比较重要的地方:(如果发现编译烧写后不对,可以./BUILD.sh clean./BUILD.sh menuconfig重新配置)
  • Bootloader config
       —> Bootloader log verbosity设为Verbose
  • Serial flasher config
       —> Default serial port设置为(/dev/ttyUSB0
       —> Flash SPI mode (DIO)
       —> Flash SPI speed (80 MHz)
       —> Flash size (16 MB)
  • MicroPython
       —> (CST-8) Time zone
       —> System settings
          ------> (24) MicroPython stack size (KB)
          ------> (2560) MicroPython heap size (KB) (你需要先打开ESP32-specific -> Support for external, SPI-connected RAM,否则会无法设置)
       —> Modules
          ------> [*] Use Websockets
          ------> [*] Use Display module
          ------> [*] Use GSM module
          ------> [*] Use GPS module
          ------> [*] Use mDNS module
          ------> [*] Use requests module
          ------> [*] Use Curl module
          ------> [*] Enable TLS in Curl module (NEW)
          ------> [*] FTP support in Curl module
          ------> [*] Use SSH module
          ------> [*] Use Mqtt module
       —> File systems
          ------> Set internal filesystem type (SPIFFS)
       —> SD Card configuration
          ------> SD Card mode (SPI Mode)
          ------> [ ] Allow hispeed in SPI mode
          ------> (18) CLK pin
          ------> (23) MOSI pin
          ------> (19) MISO pin
          ------> (4) CS pin
  • Partition Table
       —> Partition Table (Custom partition table CSV)
       —> (partitions.csv) Custom partition CSV file (NEW)
  • Component config
       —> Bluetooth 打开
       —> ESP32-specific
          ------> [*] Support for external, SPI-connected RAM
          ------> SPI RAM config
             ---------> SPI RAM access method (Make RAM allocatable using heap_caps_malloc)
             ---------> Set RAM clock speed (40MHz clock speed) 设为80MHz会导致SD卡不能挂载,不知道为什么。
          ------> FAT Filesystem support
             ---------> OEM Code Page (Simplified Chinese (DBCS) (CP936))

其他未列出的,我保留默认了(其实是不知道怎么改。是时候深入学习一下ESP32了。)

  • Save然后Exit

  • 新建一个文件 partitions.csv ,文件内容如下:

# -------------------------------------------------------
# -    Partition layout generated by BUILD.sh script    -
# -------------------------------------------------------
# Name,         Type, SubType, Offset,  Size,       Flags
# -------------------------------------------------------
nvs,            data, nvs,     0x9000,  24K,
phy_init,       data, phy,     0xf000,  4K,
MicroPython,    app,  factory, 0x10000, 2304K,
internalfs,     data, spiffs,  0x250000, 12288K,
  • 运行 ./BUILD.sh编译,如果./BUILD.sh -v会打印出比较“啰嗦的”

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值