关于app_fota的一些问题。

当如下图所示,如果目录中因为一些原因导致升级失败,如下载失败等。.updater文件夹没有被删除时,使用qpycom里的文件拖拽功能也不能正常更新文件,app_fota也无法正常升级。目前知道的解决办法是自行删除.updater文件夹。自己创建的.updater文件夹也会复现这个现象。触发条件未知。

这是我使用的升级代码,以及后续添加的开机删除功能。

def remappfota():
    import ql_fs
    try:
        if ql_fs.path_exists('usr/.updater'):
            ql_fs.rmdirs('usr/.updater')
            print('已删除升级目录')
        else:
            print('无升级目录无需删除')
    except Exception as error:
        pass
def start_fota_update(download_list):
    """
    启动FOTA升级的函数,通过传入包含文件下载相关参数的列表来执行升级流程

    参数:
    download_list (list): 包含文件下载相关信息的字典列表,每个字典需包含 'url'(文件下载的URL地址)和 'file_name'(文件在本地存储的目录及文件名)两个键,例如:
    [
        {'url': 'http://www.example.com/app.py', 'file_name': '/usr/app.py'},
        {'url': 'http://www.example.com/test.txt', 'file_name': '/usr/text.txt'}
    ]
    """
    import app_fota
    from misc import Power
    if not isinstance(download_list, list):
        print("传入的参数download_list类型不是列表,参数有误")
        return
    fota = app_fota.new()
    print('准备下载...')
    fota_flag=True
    for item in download_list:
        url = item.get('url')
        file_name = item.get('file_name')
        if not isinstance(url, str) or not isinstance(file_name, str):
            print("列表中存在元素的 'url' 或 'file_name' 参数类型不是字符串,下载操作跳过该元素")
            continue
        if not file_name.startswith("/usr/"):
            print("文件 {} 的路径格式不符合预期,不是以/usr/开头,下载操作跳过该元素".format(file_name))
            continue
        try:
            res=fota.download(url, file_name)
            if res ==0:
                print("文件 {} 下载完成".format(file_name))
            else:
                print("升级失败{}删除所有文件".format(file_name))
                remappfota()
                fota_flag=False
        except Exception as e:
            print("下载文件 {} 时出现错误: {}".format(file_name, e))
    if fota_flag:
        print('所有文件下载完成')
        fota.set_update_flag()
        print('设置升级标志')
        Power.powerRestart()  # 重启模块

可能是usr空间不足导致的,模组usr剩余空间要至少是升级脚本大小的两倍

image
有这个可能。如果升级失败,最初我塞进去的108k的脚本,再升级就可能塞不进去了。没升级时脚本占用是244/388KB