基于芯片之家的[开源]从0到1教你制作网络数字变化时钟的项目代码进行修改.doc

上传人:白大夫 文档编号:3418151 上传时间:2019-08-23 格式:DOC 页数:8 大小:31KB
返回 下载 相关 举报
基于芯片之家的[开源]从0到1教你制作网络数字变化时钟的项目代码进行修改.doc_第1页
第1页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于芯片之家的[开源]从0到1教你制作网络数字变化时钟的项目代码进行修改.doc》由会员分享,可在线阅读,更多相关《基于芯片之家的[开源]从0到1教你制作网络数字变化时钟的项目代码进行修改.doc(8页珍藏版)》请在三一文库上搜索。

1、基于芯片之家的开源从0到1教你制作网络数字变化时钟的项目代码进行修改提前声明:本项目是基于芯片之家的开源从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

2、电子数字时钟屏采用的主控芯片是STM32F401RCT6,FLASH为256K,焊接了一个外置SPI接口的 flash芯片;在添加bootloader功能前需要设计分区,对于分区操作有一定的要求说明,暂且不细说,参考RT-Thread官网的说明如下,可以对Boot有一定的了解。imgimg功能说明Bootloader 的主要功能是更新 app 分区中的固件。分区表介绍通用 Bootloader 中的分区表包含如下三个分区:通用 Bootloader 中的分区表包含如下三个分区:升级固件功能当系统需要升级固件时,Bootloader 将从 download 分区将固件搬运到 app 分区,主要功

3、能流程如下所示:Bootloader 启动时检查 download 分区和 app 分区中的固件版本。如果两个固件版本相同,则跳转到 app 分区,Bootloader 运行结束。固件版本不同则将 download 分区中的固件搬运到 app 分区。在搬运的过程中 Bootloader 可以对固件进行校验、解密、解压缩等操作。搬运完毕后,删除 download 分区中存储的固件。重启系统跳转到 app 分区中的固件运行,Bootloader 运行结束。Bootloader 工作过程如下图所示:恢复固件功能当系统中的固件损坏,Bootloader 将从 factory 分区将固件搬运到 app

4、分区,主要功能流程如下所示:Bootloader 启动时检查触发固件恢复的引脚是否为有效电平。如果有效电平持续超过 10S 则将 factory 分区中的固件搬运到 app 分区中。如果有效电平没有持续超过 10S 则继续进行 2.2 小节中介绍的启动步骤。在搬运的过程中 Bootloader 可以对固件进行校验、解密、解压缩等操作。搬运完毕后,保持 factory 分区中的固件不变。重启系统跳转到 app 分区中的固件运行,Bootloader 运行结束。以上资料来源:RT-Thread官方文档,详细可以参考:https:/rt-thread/document/site/applicatio

5、n-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区。在设计好分区表后,需

6、要在原项目代码中添加spi的驱动,烧录boot,修改分区表,修改连接地址,添加ota_downloader的功能组件。1.在源程序项目代码中配置添加spiflash驱动。(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 Driv

7、er 和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_Pa

8、ckages软件包还有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软件包添加ym

9、odem_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 软件更新的指令,等下载完

10、成后,就可以输入: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/comp

11、onents/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然后,选择菜单栏上的烧录按钮,

12、设置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启动地址为0x08

13、008000,如下图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)采用在项目代码目录下面的

14、packagesota_downloader-latesttoolsota_packager文件夹下双击运行rt_ota_packaging_tool.exe,如下图17所示图 17在软件中的配置如下图18所示,点击选择固件,指定项目工程代码编译生成的rtthread-stm32f4xx.bin文件,采用不加密不压缩的方法,固件分区名为”app”,固件版本为数字序号以区分不同的版本,然后点击开始打包,即可在固件目录下生成一个rbl后缀的文件。图 18打包生成的rbl文件,如下图19所示。图 19(2)在板子的串口终端中输入:ymodem_ota 命令,如下图20所示图 20然后,利用串口终端的

15、Ymodem传输工具发送,方法为在Xshell串口终端中,鼠标右键选择传输,再选择YMODEM,再选择YMODEM发送,指定发送的rbl文件即可。接下来就会自动进入下载程序到板子上进行升级,部分过程图如下图21所示。imgimgimg图 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升级的功能就完成了。能坚持看到这里的小伙伴都是棒棒的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1