为期3周空余时间,测试IAP升级测试,初步测试通过;本文不过会过多关注操作步骤(后面如果更多的空余时间再补充一些);主用作记录当前移植的难点和关联点.
1: 测试单片机:STM32F407ZGT6
2:工具:
1)st-link(下载烧录文件)
2)STM32F407ZGT6开发板 (外挂FLASH+串口1输出)
3)USB转TTL (Xhell 8 串口通信)
3:项目用软件:
1)RT-Thread Studio ( 创建boot项目,APP1,APP2)
2)STM32 ST-link Utility(用于擦除整体FLASH,然后下载Boot bin文件进去)
3)rt_ota_packaging_tool.exe(打包数据-> .rbl,用于升级,下载到download 用)
4)Xhell 8("ymodem_ota"-->用于升级下载)
5)J-Flash V6.80(这个软件没怎么用,如果用可以用来作 多个烧录软件合并用)
4:3个关注重点:
1)引导码; 2)APP ; 3)升级测试
5:学习内容
1)RT-Thread-OTA 用户手册 .pdf : 下载了ota_downloader组件 代码docs里面就有
2)STM32 通用 Bootloader RT-Thread 文档中心
3)外挂SPI FLASH学习
思路:
>完成外挂FLASH设计(当然内置FLASH够用也可不设置)
>FAL、SFUD配置 --》确定好 各个分区位置 引导码和APP要保持一致。
>qboot 引导码引入 引导码用到
>ota_downloader (APP内置的引导码用到)
========================================================================
第一步:先调通外挂FLASH调通。
重点:制作W25QXX.c (网络资源,自行查找,这个上传用于方便自己使用)
#include <rtthread.h>
#include "drv_spi.h"
#include "comm.h"
#include "spi_flash_sfud.h"
#define SPI_BUS_NAME "spi3"
#define W25Q_SPI_DEVICE_NAME "spi30"
//#define W25Q_FLASH_NAME "W25Q128"
#ifndef NOR_FLASH_DEV_NAME//LXB ADD
#define NOR_FLASH_DEV_NAME "norflash0"
#endif
#define W25Q_FLASH_NAME NOR_FLASH_DEV_NAME
rt_uint8_t wData[4096] = {"SPI bus write data to W25Q flash."};
rt_uint8_t rData[4096];
static int rt_hw_spi_flash_init()
{
rt_err_t ree = RT_EOK;
ree = rt_hw_spi_device_attach(SPI_BUS_NAME, W25Q_SPI_DEVICE_NAME, GPIOG, GPIO_PIN_8);
/* 使用 SFUD 探测 spi10 从设备,并将 spi10 连接的 flash 初始化为块设备,名称 W25Q128 */
if (RT_NULL == rt_sfud_flash_probe(W25Q_FLASH_NAME, W25Q_SPI_DEVICE_NAME))
{
return -RT_ERROR;
}
return ree;
}
INIT_COMPONENT_EXPORT(rt_hw_spi_flash_init);
static void sfud_w25q_sample(void)
{
rt_spi_flash_device_t flash_dev;
sfud_flash_t sfud_dev;
struct rt_device_blk_geometry geometry;
// 1- use sfud api
rt_kprintf("\n 1 - Use SFUD API \n");
sfud_dev = rt_sfud_flash_find_by_dev_name(W25Q_FLASH_NAME);
if(sfud_dev == RT_NULL){
rt_kprintf("sfud can't find %s device.\n", W25Q_FLASH_NAME);
}else{
rt_kprintf("sfud device name: %s, sector_count: %d, bytes_per_sector: %d, block_size: %d.\n",
sfud_dev->name, sfud_dev->chip.capacity / sfud_dev

4606

被折叠的 条评论
为什么被折叠?



