宿州网站开发,爱用网站建设,晋城网站建设价格,上海网站建设咨询报价在实际开发中#xff0c;难免会遇到编译Micropython源码的情况#xff1a;比如当前固件损坏、固件版本升级、需要裁剪固件节省空间等。本文介绍在Linux环境中编译Micropython源码并下载到TPYBoard运行的流程。获取Micropython源码Linux环境下获取Micropython源码非常简单难免会遇到编译Micropython源码的情况比如当前固件损坏、固件版本升级、需要裁剪固件节省空间等。本文介绍在Linux环境中编译Micropython源码并下载到TPYBoard运行的流程。获取Micropython源码Linux环境下获取Micropython源码非常简单使用git clonegit clone https://github.com/micropython/micropython.git安装arm-none-eabi交叉编译器到 官网 下载arm-none-eabi安装包我使用的是gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2。解压tar jxvf gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2解压后生成目录gcc-arm-none-eabi-5_4-2016q3编译器指令在bin目录中。将交叉编译器加入环境变量在/etc/profile文件末尾添加export PATH/opt/mpy_compiler/gcc-arm-none-eabi-5_4-2016q3/bin:$PATH执行source /etc/profile输入arm-none-eabi-gcc -v验证编译器安装、设置结果能够成功返回编译器信息则表示安装成功。X86 Linux GCC版本约定我使用的centos默认gcc版本为4.4.7在编译mpy-cross过程中报错py/objdict.c:473: error: dereferencing pointer ‘o’ does break strict-aliasing rules原因是编译器版本太低因此将gcc编译器升级到4.8。升级步骤如下wget http://people.centos.org/tru/devtools-2/devtools-2.repomv devtools-2.repo /etc/yum.repos.dyum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c安装之后编译器指令路径为/opt/rh/devtoolset-2/root/usr/bin备份旧版本为编译器建立新的软链接mv /usr/bin/gcc /usr/bin/gcc-4.4.7mv /usr/bin/g /usr/bin/g-4.4.7mv /usr/bin/c /usr/bin/c-4.4.7ln -s /opt/rh/devtoolset-2/root/usr/bin/gcc /usr/bin/gccln -s /opt/rh/devtoolset-2/root/usr/bin/c /usr/bin/cln -s /opt/rh/devtoolset-2/root/usr/bin/g /usr/bin/g查看gcc版本[rootdonkey bin]# gcc --versiongcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)Copyright (C) 2013 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.编译mpy-crossmpy-cross是Micropython自身的交叉编译器编译固件之前需要先编译mpy-cross。cd mpy-crossmake编译完成生成命令mpy-crossCC main.cCC gccollect.cLINK mpy-crosstext data bss dec hex filename133582 784 872 135238 21046 mpy-cross编译stmhalstmhal为Micropython针对STM32的实现因此编译该目录的代码生成固件。目前Micropython支持STM32的多种型号这些型号的定义在目录/stmhal/boards中需要在Makefile中修改型号。本例中Makefile定义如下BOARD ? PYBV10进入stmhal目录进行编译cd stmhalmakeLINK build-PYBV10/firmware.elftext data bss dec hex filename321020 352 28088 349460 55514 build-PYBV10/firmware.elfCreate build-PYBV10/firmware.dfuCreate build-PYBV10/firmware.hex编译后生成.dfu和.hex固件[rootdonkey build-PYBV10]# pwd/opt/micropython/stmhal/build-PYBV10[rootdonkey build-PYBV10]# ls firmware*firmware0.bin firmware1.bin firmware.dfu firmware.elf firmware.hex firmware.map[rootdonkey build-PYBV10]# du -h firmware.dfu316K firmware.dfu下载固件下载方式有SWD ST-Link和DFU两种前者依赖ST-Link硬件因此建议通过USB使用DFU模式烧写固件该方法非常简便。安装DfuSedemo工具运行。将TPYBoard开发板的BOOT0和3.3V引脚短接BOOT0引脚即DFU。按下RST键释放RST键。断开BOOT0和3.3V。此时DfuSedemo工具左上角的Available DFU and compatible HID Devices会识别到开发板。点击Choose... 选择编译好的.dfu文件点击Upgrade进行固件烧写。提示Upgrade successful则固件烧写成功重启TPYBoard此时将运行新的固件。