micropython固件源码_Micropython加速物联网开发7 - Micropython源码编译与固件更新

在实际开发中,难免会遇到编译Micropython源码的情况:比如当前固件损坏、固件版本升级、需要裁剪固件节省空间等。本文介绍在Linux环境中编译Micropython源码并下载到TPYBoard运行的流程。

获取Micropython源码

Linux环境下获取Micropython源码非常简单,使用git clone:

git 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.repo

mv devtools-2.repo /etc/yum.repos.d

yum 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.7

mv /usr/bin/g++ /usr/bin/g++-4.4.7

mv /usr/bin/c++ /usr/bin/c++-4.4.7

ln -s /opt/rh/devtoolset-2/root/usr/bin/gcc /usr/bin/gcc

ln -s /opt/rh/devtoolset-2/root/usr/bin/c++ /usr/bin/c++

ln -s /opt/rh/devtoolset-2/root/usr/bin/g++ /usr/bin/g++

查看gcc版本:

[root@donkey bin]# gcc --version

gcc (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 NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

编译mpy-cross

mpy-cross是Micropython自身的交叉编译器,编译固件之前需要先编译mpy-cross。cd mpy-crossmake编译完成生成命令mpy-cross:

CC main.c

CC gccollect.c

LINK mpy-cross

text data bss dec hex filename

133582 784 872 135238 21046 mpy-cross

编译stmhal

stmhal为Micropython针对STM32的实现,因此编译该目录的代码生成固件。

目前Micropython支持STM32的多种型号,这些型号的定义在目录/stmhal/boards中,需要在Makefile中修改型号。本例中Makefile定义如下:

BOARD ?= PYBV10

进入stmhal目录进行编译:

cd stmhal

make

LINK build-PYBV10/firmware.elf

text data bss dec hex filename

321020 352 28088 349460 55514 build-PYBV10/firmware.elf

Create build-PYBV10/firmware.dfu

Create build-PYBV10/firmware.hex

编译后生成.dfu和.hex固件:

[root@donkey build-PYBV10]# pwd

/opt/micropython/stmhal/build-PYBV10

[root@donkey build-PYBV10]# ls firmware*

firmware0.bin firmware1.bin firmware.dfu firmware.elf firmware.hex firmware.map

[root@donkey build-PYBV10]# du -h firmware.dfu

316K 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,此时将运行新的固件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小鹏汽车吴新宙:要做全国第一 | 人物志

戳蓝字“CSDN云计算”关注我们哦!人物志:观云、盘点、对话英雄。以云计算风云人物为核心,聚焦个人成长、技术创新、产业发展,还原真实与鲜活!在国内自动驾驶汽车领域,成立于2014年的小鹏汽车,因…

验证布局中控件的父窗口

验证布局中的控件的父窗口概述示例开发环境项目运行结果结论番外概述 平时在创建一个窗口类的子空间时,一般需要先创建布局,将子控件添加到窗口的布局中。子控件没有显示的指定父窗口时,那么这个布局中的控件的父窗口是布局还是这个窗口类呢…

Centos6.8安装Nginx+域名转发

2分钟搭建企业轻量级反向代理服务器 文章目录一、linux 环境 安装nginx二、需求分析下载/解压/启动tomcat2.1 需求分析2.2 Linux环境下载和配置Tomcat三、nginx域名转发场景13.1 编辑nginx配置文件3.2 创建配置文件中的目录3.3 创建一个配置文件四、编辑配置文件添加映射信息4.…

手机有一个时钟的标志_STM32F7系统配置控制器(SYSCFG)及复位和时钟控制(RCC)...

这篇文章带大家看一下STM32F7的系统配置控制器。系统配置控制器主要用于:1、 选择以太网PHY接口;2、 交换FMC SDRAM存储区域与NOR/PSRAM存储区域;3、 管理GPIO外部中断线连接;在系统控制寄存器里有一个bit位来选择使用哪个选项字定…

Nignx负载均衡

2分钟搭建企业轻量级负载均衡服务器 文章目录一、启动2个tomcat端口为8080和8081二、在/usr/local/nginx/conf/vhost创建static.imooc.com.conf文件一、启动2个tomcat端口为8080和8081 二、在/usr/local/nginx/conf/vhost创建static.imooc.com.conf文件 内容如下:…

qt中QDoubleSPinBox设置其指定的样式及带单位

概述 本文旨在记录使QDoubleSpinBox呈现出行编辑器QLineEdit的效果,又不使其失去鼠标选中当前的QDoubleSpinBox后滚轮滚动增加减少其值的特性。这里选中的控件还是QDoubleSPinBox,在样式设置上使其呈现行编辑的效果,功能上继续保持滚轮滚动的时候数值增…

IEEE 回应禁止华为系审稿人;WiFi联盟、蓝牙联盟已恢复华为成员资格;中国计算机学会:暂时中止与IEEE通信学会合作……...

戳蓝字“CSDN云计算”关注我们哦!嗨,大家好,重磅君带来的【云重磅】特别栏目,如期而至,每周五第一时间为大家带来重磅新闻。把握技术风向标,了解行业应用与实践,就交给我重磅君吧!重…

VM安装CentOS6.8虚拟机

1分钟安装CentOS6.8虚拟机 文章目录1. 检查BIOS虚拟化支持(可以先执行第二步,如果不支持再回来设置)2. 新建虚拟机3. 新建虚拟机向导4. 创建虚拟空白光盘5. 安装Linux系统对应的CentOS版6. 虚拟机命名和定位磁盘位置7. 处理器配置,看自己是否是双核、多核…

cbrt c语音_C语言有哪些鲜为人知的特性?

本文由 伯乐在线 - Lingfeng Ai 翻译自 Quora。未经许可,禁止转载!欢迎加入:技术翻译小组,或分享原创到伯乐头条。译注:本文摘编自 Quora 的一个热门问答贴。 请在linux系统下测试本文中出现的代码switch语句中的case …

QString中文字符串中指定字符的查找

中文字符串指定字符查找场景示例运行环境示例代码代码讲解难点重点场景 在一个QString类型的中文字符串中查找一个指定的中文字符串,找到该指定的中文字符串后,返回其找到的下标位置,判断下标位置向前一位的字符是否为指定的字符。 示例 运…

强强联手 SAP Ariba与苏宁易购共建中国企业智慧采购

2019年5月30日,南京讯— SAP Ariba(采购云)联合苏宁易购共同宣布达成战略合作关系,苏宁易购成为SAP Ariba Spot Buy(零星采购)业务在中国大陆地区的合作伙伴。双方将利用SAP与苏宁集团的全业态资源&#xf…

Lombok快速入门

Lombok快速入门 文章目录一、Lombok介绍:1.1 Lombok优点:1.2 lombok 依赖引入1.3 lombok 插件安装二、常用注解2.1 Getter and Setter2.2 ToString2.3 EqualsAndHashCode2.4 NoArgsConstructor2.5 AllArgsConstructor2.6 Slf4j2.7 Builder、2.8 Data2.92…

图片夹_各种变调夹的优缺点、原理和使用方法

变调夹(capo)是吉他弹奏中很重要的一部分,演奏者可以用它来很方便的调整吉他的音调,在民谣弹唱中,如果吉他为标准调弦(EADGBE),当弹唱比较常见的D调的歌曲如《成都》时,只需用变调夹夹在二品,演奏者就可以用…

double类型的变量与0的对比

double类型变量与0比较概述实现double类型概述 日常总是会遇到double类型变量与0之间的比较。非严格情况下直接与0比较了,但实际上这是一种错误的写法。double为双精度类型,其一般保留15为小数。而Flaot单精度类型一般保留6为小数。故而不能直接与0进行…

朋友,你实现荔枝自由了吗? | Alfred数据室

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!作者: AlfredWu转自:Alfred数据室Alfred已经有四年没有在广东生…

tomcat9控制台中文乱码

1、找到${CATALINA_HOME}/conf/logging.properties2、找到java.util.logging.ConsoleHandler.encoding UTF-83、 修改为java.util.logging.ConsoleHandler.encoding GBK 3、重启tomcat。

一个事物两个方面的对比举例_作比较的句子大全简短-对比的句子什么比什么重要-什么和什么做比较的句子...

对比是修辞方法,就是把两种不同事物或者同一事物的两个不同方面放在一起相互比较的一种辞格。 对比的句子你能举出两个这样的例子吗?这样写有什幺好 鳕鱼一次产卵竟达千万粒,真正能变成幼鱼的卵可能还不到1%。 列数字:准确,有科学根据 打比方:天上的星星像一颗颗宝石。 作…

idea控制台输出乱码

2分钟搭建企业轻量级负载均衡服务器 文章目录1. 修改配置文件2. tomcat启动参数:3. 统一编码格式1. 修改配置文件 打开IntelliJ IDEA本地安装目录中bin文件夹下的idea.exe.vmoptions和idea64.exe.vmoptions这两个文件 分别在这两个文件内容的末尾添加:…

数据可视化图表,你选对了吗?

戳蓝字“CSDN云计算”关注我们哦!Photo by Jason Coudriet on Unsplash文 | 邻川来源 | 阿里巴巴中间件程序员懂画图,一宝变三宝。继上期「阿里程序员小技巧」中,阿里巴巴技术专家三画分享了他关于《如何画好架构图》的经验,本期&…

使用IDEA 1分钟搭建运行SpringMVC项目

使用IDEA 1分钟搭建运行SpringMVC项目 文章目录一、项目搭建1.1. 新建项目1.2. 选择maven项目构建1.3. 设置组织名和模块名称1.4 . 选择本地maven仓库1.5 . 项目名和存放的位置1.6 . 开启自动下载依赖1.7. 搭建项目完成!!!二、项目运行2.1. 显…