RT-Thread STM32F407VET6 HTTP_OTA升级(轩微胜开发板)

参考文章

RT Thread Studio 配置OTA实现远程程序下载(亲测成功,巨详细)

【RT-Thread】使用RT-Thread Studio 配置BootLoader及App实现OTA功能

一、硬件环境介绍

使用的开发板为轩微胜STM32F407VET6工程板,网卡芯片DP83848C,通讯接口RMII;外置Flash芯片W25Q64,通讯接口SPI

 

 

 二、软件环境介绍

开发环境:RT-Thread Studio

软件版本:RT-Thread版本4.0.3

 

三、bootloader准备

RT-Thread提供了一个Bootloader生成网址 https://iot.rt-thread.com

 

 四、bootloader下载

打开STM32 ST-LINK Utility,连接ST-LINK,注意下载地址为0x08000000

 选择下载刚才所生成的bin文件,并下载;

 下载完成后,通过调试串口看到如下打印信息,则表示烧录成功

 

 五、新建RT-Therad工程

 

 六、修改link.lds,将程序链接首地址改为0x08020000

 

 七、打开CubMax,配置好需要使用的外设

这里主要使用的外设有 SPI2 和 ETH(引脚及接线可看文章前面原理图)

①、首先需开启时钟

 ②、开启SPI2(注意配置使能脚PE3)

 ③、开启ETH,通讯方式选择RMII

 ④、生成代码

 

 八、修改board.c文件

①、配置SPI2

打开board.h,取消BSP_USING_SPI2的注释,并按照上方文字说明对相关部分进行修改

 将void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)函数复制到board.c

 在 stm32f4xx_hal_conf_bak.h 中取消 HAL_SPI_MODULE_ENABLED的注释

 ②、配置ETH

在board.h中取消 BSP_USING_ETH的注释与 PHY_USING_DP83848C 的注释,并按照上方文字说明对相关部分进行修改

 复制 void HAL_ETH_MspInit(ETH_HandleTypeDef* heth) 函数至board.c中

 取消 stm32f4xx_hal_conf_bak.h 中,HAL_ETH_MODULE_ENABLED的注释

 在board.c中添加 void phy_reset(void) 函数

1 void phy_reset(void)
2 {
3 
4 }

到这里board.c文件就修改完成了。

 

九、安装FAL

①、在RT-Thread Settings中添加FAL软件包

 ②、将samples/porting目录下的fal_cfg.h文件移动到 inc 目录下

 修改fal_cfg.h文件内容如下:

 1 #ifndef _FAL_CFG_H_
 2 #define _FAL_CFG_H_
 3 
 4 #include <rtconfig.h>
 5 #include <board.h>
 6 
 7 #define NOR_FLASH_DEV_NAME             "W25Q64"
 8 
 9 #define FLASH_SIZE_GRANULARITY_16K      (4 * 16 * 1024)
10 #define FLASH_SIZE_GRANULARITY_64K      (64 * 1024)
11 #define FLASH_SIZE_GRANULARITY_128K     (7 * 128 * 1024)
12 
13 #define STM32_FLASH_START_ADRESS_16K    STM32_FLASH_START_ADRESS
14 #define STM32_FLASH_START_ADRESS_64K    (STM32_FLASH_START_ADRESS_16K + FLASH_SIZE_GRANULARITY_16K)
15 #define STM32_FLASH_START_ADRESS_128K   (STM32_FLASH_START_ADRESS_64K + FLASH_SIZE_GRANULARITY_64K)
16 /* ===================== Flash device Configuration ========================= */
17 extern const struct fal_flash_dev stm32_onchip_flash_16k;
18 extern const struct fal_flash_dev stm32_onchip_flash_64k;
19 extern const struct fal_flash_dev stm32_onchip_flash_128k;
20 /* ===================== Flash device Configuration ========================= */
21 extern const struct fal_flash_dev stm32f2_onchip_flash;
22 extern struct fal_flash_dev nor_flash0;
23 
24 /* flash device table */
25 #define FAL_FLASH_DEV_TABLE                                          \
26 {                                                                    \
27     &stm32_onchip_flash_16k,                                         \
28     &stm32_onchip_flash_64k,                                         \
29     &stm32_onchip_flash_128k,                                        \
30     &nor_flash0,                                                     \
31 }
32 /* ====================== Partition Configuration ========================== */
33 #ifdef FAL_PART_HAS_TABLE_CFG
34 /* partition table */
35 #define FAL_PART_TABLE                                                               \
36 {                                                                                    \
37     {FAL_PART_MAGIC_WORD, "app"        ,"onchip_flash_128k",   0,  768*1024, 0}, \
38     {FAL_PART_MAGIC_WORD, "config_data","onchip_flash_128k",768*1024,  128*1024, 0}, \
39     {FAL_PART_MAGIC_WORD, "download", FAL_USING_NOR_FLASH_DEV_NAME,0, 1024*1024, 0}, \
40 }
41 #endif /* FAL_PART_HAS_TABLE_CFG */
42 
43 #endif /* _FAL_CFG_H_ */

此时可能会有报错 stm32f2_onchip_flash 未定义,需在fal_flash_sfud_port.c文件中添加如下内容:

const struct fal_flash_dev stm32f2_onchip_flash =
{
    .name       = "stm32_onchip",
    .addr       = 0x08000000,
    .len        = 1024*1024,
    .blk_size   = 128*1024,
    .ops        = {init, read, write, erase},
    .write_gran = 8
};

在main函数中调用fal_init()

 程序下载,出现如下调试信息,则说明fal安装成功

 

 十、开启LWIP

在RT-Thread Settings中开启Lwip,并进行相应配置(注意需关闭“通过DHCP分配IP地址”)

 

 此时通过电脑应能 ping通静态IP(注意电脑应设置与开发板在同一网段)

 

十一、安装 ota_downloader

 对配置项进行修改,默认URL中的IP填写笔记本电脑的静态IP

此时编译会产生报错

 可在board.h中添加  RT_USING_FAL 的宏消除报错

 开启 agile_console ,并设置好相关配置

 开启 agile_telent

 

 十二、配置ymodem 

 至此,相关配置内容已全部完成

 

十三、程序下载

在资源管理器中找到 rt_ota_packaging_tool.exe 

 

 选择Debug目录下的.bin文件进行打包

 打包成功后会在Debug目录下生成一个rtthread.rbl文件

 

十三、准备软件 XShell7 和 MyWebServer 

配置好XShell ,并点击连接

如果连接正常的话,会显示如下画面

 打开MyWebServer 选择服务目录为刚才rtthread.rbl所在文件目录

IP地址选择为本机IP ,端口号设置为与 ota_downloader配置中URL一致,点击保存按钮后相关配置才会生效;

 点击“开始按钮”,开始帧听

 在XShell中输入命令  http_ota

 通过调试串口也可看到程序下载进度,程序升级完成后,单片机会自动重启

 到这里,使用RT-Thread  HTTP_OTA升级功能完成

 

posted @ 2024-02-29 10:00  伽椰子真可爱  阅读(281)  评论(0)    收藏  举报