从0到1教你制作网络数字变化时钟

发布者:upsilon30最新更新时间:2024-07-08 来源: elecfans关键字:Bootloader  OTA升级 手机看文章 扫描二维码
随时随地手机看文章

提前声明:本项目是基于芯片之家的[开源]从0到1教你制作网络数字变化时钟的项目代码进行修改,增加Bootloader和OTA升级的。


一、前期准备

硬件准备:

1. 一块LED电子数字时钟屏

2. 一根microusb线(安卓线)

3. 一个下载器(ST-Link或者Jlink 等)

软件准备:

4. MDK5软件

5. RT-Thread的ENV工具

6. LED电子时钟屏源项目工程代码

7. RT-Thread OTA打包工具

8. WebServer工具


等待airkiss配网


airkiss配网成功


正确显示日期和时间

二、主要说明

在本次操作中的LED电子数字时钟屏采用的主控芯片是STM32F401RCT6,FLASH为256K,焊接了一个外置SPI接口的 flash芯片;在添加bootloader功能前需要设计分区,对于分区操作有一定的要求说明,暂且不细说,参考RT-Thread官网的说明如下,可以对Boot有一定的了解。

img

img

功能说明

Bootloader 的主要功能是更新 app 分区中的固件。

分区表介绍

通用 Bootloader 中的分区表包含如下三个分区:

通用 Bootloader 中的分区表包含如下三个分区:

升级固件功能

当系统需要升级固件时,Bootloader 将从 download 分区将固件搬运到 app 分区,主要功能流程如下所示:

Bootloader 启动时检查 download 分区和 app 分区中的固件版本。

如果两个固件版本相同,则跳转到 app 分区,Bootloader 运行结束。

固件版本不同则将 download 分区中的固件搬运到 app 分区。

在搬运的过程中 Bootloader 可以对固件进行校验、解密、解压缩等操作。

搬运完毕后,删除 download 分区中存储的固件。

重启系统跳转到 app 分区中的固件运行,Bootloader 运行结束。

Bootloader 工作过程如下图所示:

恢复固件功能

当系统中的固件损坏,Bootloader 将从 factory 分区将固件搬运到 app 分区,主要功能流程如下所示:

Bootloader 启动时检查触发固件恢复的引脚是否为有效电平。

如果有效电平持续超过 10S 则将 factory 分区中的固件搬运到 app 分区中。

如果有效电平没有持续超过 10S 则继续进行 2.2 小节中介绍的启动步骤。

在搬运的过程中 Bootloader 可以对固件进行校验、解密、解压缩等操作。

搬运完毕后,保持 factory 分区中的固件不变。

重启系统跳转到 app 分区中的固件运行,Bootloader 运行结束。

以上资料来源:RT-Thread官方文档,详细可以参考:https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/

三、操作流程

分区说明:基于使用的STM32F401RCT6的内部Flash为256K,开源LED电子时钟屏的源程序的固件大小为124k,在设计分区的时候一般APP和download区是采用1:1的方式,还有bootloader分区一般设计为16K到32K,显然这样256K的内部FLASH不能满足要求,所以需要使用外部FLASH,设计分区表为:内部flash的前32K为bootloader分区,剩余的内部FLASH (256-32 = 224)224K为APP分区,download分区设在外部flash区。

在设计好分区表后,需要在原项目代码中添加spi的驱动,烧录boot,修改分区表,修改连接地址,添加ota_downloader的功能组件。

1.在源程序项目代码中配置添加spi——flash驱动。

(1)在项目代码的目录下,通过ENV工具进入命令行,在命令行中输入menuconfig,如下图1所示:

图1 menuconfig配置界面

进入RT-Thread Components目录下的Device Drivers下选中Using generic GPIO device drivers和Using SPI Bus/Device device drivers 和Using Serial Flash Universal Driver 和Using auto probe flash JEDEC SFDP parameter 和Using defined support flash chip information tatble,如下图2所示:

img

添加配置后,返回到主界面,修改CS的引脚号为20.

图2 配置SPI驱动和GPIO驱动

保存并退出,在env命令行下输入scons --target=mdk5 重新编译生成工程。

再用mdk5打开编译的项目工程,编译烧录到板子上,在启动信息可以判断外置flash已经添加驱动了,如下图3所示:

图3 启动打印spi flash芯片信息

(2) 添加ota_downloader和FAL_Packages软件包还有SFUD的配置。

在env工具的命令行中,输入menuconfig 进入配置界面,进入RT-Thread online packages 目录下的Iot - internet of things 目录下选中[]ota_downloader,进入ota_downloader目录下选中[] Enable OTA downloader debug和[]Enable HTTP/HTTPS OTA(并且配置默认的URL为本机的ip地址的路径)和[] Enable Ymodem OTA,如下图4和图5所示

图 4 添加ota_downloader软件包

图5 配置ota_downloader软件包添加ymodem_ota和http_ota

通过ESC按键返回到RT-Thread online packages 目录下system packages目录下选中fal: Flash Abrstraction layer…,如下图6所示

图6 添加FAL 软件包

进入选中该项 fal目录下,选中FAL partition table config has defined on ‘fal_cfg,h’和FAL uses SFUD driver,并且修改name 为flash0 具体配置如下图7所示

图 7 配置fal 软件包

然后保存并退出。在ENV工具的命令行中输入 pkgs --update 软件更新的指令,等下载完成后,就可以输入:scons --target=mdk5 重新编译生成新的工程。

(3) 添加fal_cfg.h和fal_flash_stm32f4_port.c和更新SFUD的驱动文件

由于原项目代码版本的问题,需要在新版的RT-Thread的源代码中复制两个文件到现工程代码中。把fal_cfg.h和fal_flash_stm32f4_port.c这两个文件复制到现代码项目中的driver目录下,并且把这两个文件添加到项目工程中;更新SFUD的驱动文件,对比新版git库中rt-thread/components/drivers/spi/spi_flash_sfud.c和rt-thread/components/drivers/spi/spi_flash_sfud.h的文件,可以直接复制覆盖这两个文件的内容。

(4) 烧写boot.bin文件,boot.bin文件可以是烧录附件中的boot.bin文件,也可以是RT-Thread官网上通过网页生成的boot.bin,下面主要使用附件中的boot.bin文件的使用。烧录boot.bin文件主要使用ST-Link Utility工具。

步骤1:打开STM32 ST-LINK Utility工具,打开附件中的bootloader.bin文件,如下图8所示

图8 使用ST-Link Unitity 工具烧录boot.bin

然后,选择菜单栏上的烧录按钮,设置start address 为0x08000000为默认地址,然后选择start按钮,开始烧录,如下图9所示。

图 9 设置boot.bin的起始地址

烧录完成后,在串口中会打印boot的信息,如分区表的信息等,如下图10所示

图 10 烧录boot.bin后启动

由于APP固件的启动地址还没有修改,所以会提示找不到APP分区,到此bootloader已经成功启动了,下面开始APP固件的启动地址进行修改。

(5) APP固件分区的的启动地址修改

步骤1:在main.c中添加FAL 初始化代码和修改中断向量跳转地址,添加版本打印信息,具体操作如下图11所示。

图 11

步骤2:修改APP启动地址为0x08008000,如下图12所示。

图 12

步骤3 :添加屏蔽中断向量跳转到默认地址的语句,如下图13所示

图 13

(6)分区表fal_cfg.h的修改

步骤参考,如下图14所示:

图 14

到此为止,bootloader和ota升级功能已经添加完成,重新编译工程,下载到板子上即可看到程序正常运行。板子启动打印的信息如下图所示,验证了bootloader已经正常工作,而且成功跳转到了app固件分区中,如下图15所示。

图15

而且在程序的命令行中也看到了ymodem_ota和http_ota的指令,如下图16所示。

图 16

四、功能验证

1.ymodem_ota升级功能验证。

操作步骤:

(1)采用在项目代码目录下面的packagesota_downloader-latest oolsota_packager文件夹下双击运行rt_ota_packaging_tool.exe,如下图17所示

图 17

在软件中的配置如下图18所示,点击选择固件,指定项目工程代码编译生成的rtthread-stm32f4xx.bin文件,采用不加密不压缩的方法,固件分区名为”app”,固件版本为数字序号以区分不同的版本,然后点击开始打包,即可在固件目录下生成一个rbl后缀的文件。

图 18

打包生成的rbl文件,如下图19所示。

图 19

(2)在板子的串口终端中输入:ymodem_ota 命令,如下图20所示

图 20

然后,利用串口终端的Ymodem传输工具发送,方法为在Xshell串口终端中,鼠标右键选择传输,再选择YMODEM,再选择YMODEM发送,指定发送的rbl文件即可。

接下来就会自动进入下载程序到板子上进行升级,部分过程图如下图21所示。

img

img

img

图 21

到此,ymodem_ota升级完成,重启后会进入等待配网界面,airkiss配网完成后就可以显示正确的日期时间。

2.http_ota升级功能验证。

操作步骤:

(1)把板子和pc连接在同一个局域网,在给电子时钟airkiss配网的时候配置和pc同一个局域网即可。

(2)在PC上搭建web_server服务器,这里使用MyWebServer V3.6.21 Unicode工具,打开该软件,设置服务器的根目录,然后启动。点击浏览按钮指定rbl文件的路径目录,然后点击启动,如下图22所示。

图22

在板子的串口终端中的命令行操作,输入http_ota url 指定rbl的地址 的命令,就会进入下载个更新app固件,如下图23所示,

图 23

固件下载完成后,开始更新app固件,如下图24所示。

图 24

到此,让电子时钟跑起BootLoader和支持OTA升级的功能就完成了。


关键字:Bootloader  OTA升级 引用地址:从0到1教你制作网络数字变化时钟

上一篇:基于ESP8266 WIFI网络控制和机智云的智能家居管控
下一篇:基于MPU6050的老年人跌倒监测系统设计

推荐阅读最新更新时间:2026-03-24 11:17

Neuralink首例受试者:无需手术升级脑机接口 类似特斯拉OTA更新
1月19日消息,据媒体报道,全球首例Neuralink侵入式脑机接口受试者诺兰·阿博(Nolan Arbaugh)近日透露,其植入的脑机芯片已能够通过OTA(空中下载技术)方式进行远程升级,更新模式类似特斯拉汽车的OTA更新。 阿博介绍,目前Neuralink脑机接口系统主要通过三种途径进行更新:一是通过名为“心灵感应”(Telepathy)的专用应用程序进行软件更新。该应用允许患者在手机或电脑上以意念操控外部设备,并会像普通App一样定期接收云端更新。 二是植入体固件本身的无线升级。脑机芯片搭载的固件支持OTA更新,这意味着无需二次手术,即可持续提升系统在速度、精度、信号处理及可靠性等方面的表现。 阿博举例称,其植入初期曾遭遇约
[医疗电子]
余承东:ADS 3.0现在还不是L3 鸿蒙智行的OTA通过5G技术升级
余承东和马东直播过程中,马东提问余承东,激光雷达是必要的吗? 余承东表示,我们坚持激光雷达,是因为激光雷达的安全性。只用摄像头方案没用激光雷达方案的,摄像头致盲就完蛋了。 有些东西,摄像头是没办法的,摄像头有极限。包括毫米波雷达,车厂都应该用。因为在雨天大雾天,摄像头不好用。 此外,余承东还表示,鸿蒙智行ADS 3.0,把车位到车位的功能加强了。华为ADS 3.0我们加了一个保底,万一AI出错了,我们的安全底线判断不能走,那么会根据安全底线来。 不过,他也坦言,ADS 3.0现在还不是L3,是按照L3的标准去进行设计的,因为现在国家还在制定L3相关的标准。 余承东强调,他带领的团队,我们自己把自己变成用户,去深
[嵌入式]
新增连续语音识别/悬架记忆调节等功能 星途瑶光推送OTA升级
日前,我们从星途汽车官方获悉,旗下中型SUV 星途瑶光 ( 参数 | 询价 ) 开启了最新的OTA升级推送,此次升级包括新增连续语音识别、悬架记忆调节以及手机遗忘提醒等功能。不过本次OTA升级仅限瑶光燃油版车型,不包括瑶光C-DM(插电混动版)车型。具体OTA升级详情如下: 新增语音流式识别功能,即发出语音连续指令时无需停顿,系统能够边识别边执行; 新增悬架记忆调节,该功能可以记忆你的驾驶习惯,自动调节悬架设定; 新增手机遗忘提醒功能; 新增氛围灯联动碰撞预警,在紧急情况下,氛围灯瞬间变为红色,以提醒驾驶者注意安全。 此外,在本次OTA升级中,瑶光车型还优化了部分功能的使用体验,具体优化详情如下:
[汽车电子]
新增连续语音识别/悬架记忆调节等功能 星途瑶光推送<font color='red'>OTA</font><font color='red'>升级</font>
Mobileye携手极氪通过OTA升级开启高级驾驶辅助新篇章
OTA升级为极氪001用户带来顶级的驾驶安全性和舒适性 上周, Mobileye和极氪通过OTA升级的方式向数万名极氪001车主交付了全球领先的高速公路驾驶辅助软件包。 极氪001配备了7个800万像素高清摄像头和4个泊车摄像头,可提供360°的感知能力,以及两个7nm的EyeQ® 5 High系统集成芯片。 现在,硬件已经到位,用户只需一键操作就可以完成这次重要的功能更新。这次OTA升级不仅体现了安全驾驶辅助系统的未来发展趋势,也展示了智能汽车如何通过软件更新获得功能上的升级。值得一提的是,此次升级距离我们宣布与吉利集团开展SuperVision™的合作还不到两年的时间。 堪比人类驾驶员的高速公路驾驶辅助
[汽车电子]
Mobileye携手极氪通过<font color='red'>OTA</font><font color='red'>升级</font>开启高级驾驶辅助新篇章
超高写入速度的QspiNAND:汽车OTA升级新选择
作者:华邦电子(美洲)技术总监Anil Gupta 近日,宝马集团宣布将对全球逾75万辆汽车进行OTA(Over-The-Air Technology)升级,将车内的宝马7.0操作系统升级到最新版本。升级内容涉及数字化服务、驾驶辅助、电气、底盘和动力系统等模块。如今,进行汽车远程OTA升级已不再是造车新势力们的“专利”。在传统汽车阵营,上汽通用也在和宝马一样进行OTA升级。由此可见,OTA升级正迅速发展成为未来智能汽车的必备功能。这主要有两个原因: 首先,随着汽车系统程序代码的指数级增长,汽车越来越多地成为网络攻击的目标。通过软件实现驾驶辅助功能的汽车,如果系统软件遭到黑客攻击或篡改,那么在自动驾驶模式下,驾驶员和乘
[汽车电子]
超高写入速度的QspiNAND:汽车<font color='red'>OTA</font><font color='red'>升级</font>新选择
OTA升级定义汽车新时代
当年,以诺基亚为代表的功能机被智能机所取代的历史犹在眼前,现今,智能手机早已独霸市场,而OTA则被认为是制胜法宝之一!如果你还不知道什么是OTA,那么你真的就是真的OUT了。 OTA英文全称是Over-the-Air Technology,即空间下载技术的意思,它功能强大,可以无损失升级系统,主要通过网络自动下载OTA升级包、自动升级。简言之,通过对智能手机的每一次升级,用户都能收获一次新机体验!而这一技术正逐渐被以特斯拉、蔚来为代表的电动车引入汽车领域,车的定义也在被悄然改写。 事实上,随着智能电动车的兴起,“诺基亚被取代”现象正在汽车行业重演,比如你几个月前买的奔驰GLC,可能因为厂家召回,需要回4S店升级系统
[汽车电子]
<font color='red'>OTA</font><font color='red'>升级</font>定义汽车新时代
OTA空中升级服务是所有汽车厂商的研发趋势
Gartner报告预计,到2020年,世界上会有2500万辆互联汽车行驶在公路上,促进了全新的车载服务和自动驾驶功能的发展。 但是,什么才是真正意义上的智能汽车?智能应该是有生命的东西,它会成长。这也是特斯拉的高明之处,它首开先河,以OTA 的方式进行软件更新。特斯拉也成为在新兴汽车制造商领域将OTA战略执行最为彻底也是从中受益最大的汽车公司。其自2014年进入中国后,通过OTA技术对ModelS系列的汽车先后进行了8次大的版本升级迭代,每次都为客户带来的新的体验。摩根士丹利分析师Adam Jonas甚至认为传统汽车会过时的主要原因就是他们无法与特斯拉的 OTA 软件升级相抗衡,“特斯拉通过软件升级来开放新的功能,这能让我们一
[汽车电子]
打破汽车价值链 斑马智行启动全球最大规模汽车OTA空中升级
斑马网络正式启动 斑马智行 2.0空中升级,当日约30位 荣威RX5 智 联网汽车 车主齐聚斑马网络总部,参与了此次斑马智行2.0升级的首发式。即日起,近40万智联网汽车用户将陆续、分批次完成OTA空中升级,这也是全球汽车领域最大规模的OTA升级。斑马智行2.0的升级预示其正在打破传统汽车价值链,让汽车成为新的智能移动终端。   伴随着智能网联汽车的“风口”,汽车产业正进入重新洗牌的阶段,软件正在重新定义汽车。据赛迪研究院统计,在传统汽车价值中硬件占90%,软件占10%,在智能汽车价值中,硬件占40%,软件占40%,内容占20%。一辆智能汽车约装备50-100个ECU(电控单元),20000万行左右的源代码,代码量与空客A380客
[嵌入式]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved