一种嵌入式程序升级的方法与流程

专利2022-06-30  83


本申请涉及计算机技术领域,特别地,涉及一种嵌入式程序升级的方法。



背景技术:

嵌入式程序是指用于执行独立功能的专用计算机系统。它由包括微处理器、定时器、微控制器、存储器、传感器等一系列微电子芯片器件,和嵌入在存储器中的微型操作系统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各种自动化处理任务。简单的嵌入式系统仅有执行单一功能的控制能力,比如说单片机的应用,在唯一的rom中仅有实现单一功能控制程序,无微型操作系统;复杂的嵌入式系统,例如个人数字助理pda、手持电脑hpc等,具有与pc几乎一样的功能,区别仅是将微型操作系统与应用软件嵌入在rom、ram和/或flash存储器中,而不是存贮于磁盘等载体中,很多复杂的嵌入式系统又是由若干个小型嵌入式系统组成的。

为了满足嵌入式设备的产品升级,需要嵌入式软件进行升级。在一些嵌入式程序升级的实现中,上位机与嵌入式设备进行数据交互,将升级数据包发送至嵌入式设备,然后由嵌入式程序自身完成升级。例如,嵌入式设备接收升级数据包;然后对升级数据包进行校验;当校验无误后,将升级数据包写入程序备份区域;程序重启复位后,将程序备份区域的升级数据包拷贝至程序区域;引导程序引导执行程序区域的升级数据包,完成嵌入式程序的升级。

然而,在上述嵌入式程序的升级过程中,需要反复备份、搬移数据,容易导致数据搬移出错、造成升级失败、程序无法启动;并且由于对flash存储区的反复擦写,会降低其使用寿命,增加其功耗,降低嵌入式程序的升级效率。



技术实现要素:

本申请提供了一种嵌入式程序升级的方法,通过构建flash内的引导区、2个程序区,将更新版本程序和当前版本程序分别置于不同的程序区,一定程度上可以解决升级过程中反复搬移升级数据包、对flash存储区反复擦写,造成的数据出错升级失败无法启动、flash寿命降低功耗增加的问题。

本申请的实施例是这样实现的:

本申请实施例提供一种嵌入式程序升级的方法,所述方法包括:

将嵌入式程序配置为从flash启动,所述flash被配置为包括引导区、2个程序区;

当收到升级通讯命令时,当前版本程序将接收的更新版本程序写入第二程序区,所述当前版本程序存储于第一程序区,所述第一程序区为所述2个程序区中的任意一个;

重启所述嵌入式程序,所述引导区的引导程序引导执行所述第二程序区的所述更新版本程序。

可选地,所述flash还包括升级相关变量存储区。

可选地,所述升级相关变量存储区被配置为存储所述嵌入式程序升级过程中需要使用的变量。

可选地,所述引导区、2个程序区、升级相关变量存储区之间不可重叠覆盖。

可选地,所述引导区的引导程序是烧写程序时固定、不可更改的。

可选地,所述程序区被配置为可进行擦除、重新写入操作。

可选地,在重启所述嵌入式程序前,还包括:对所述更新版本程序进行校验。

可选地,所述引导程序被配置为在所述嵌入式程序启动时引导执行任意程序区内的程序。

可选地,所述引导程序被配置为:默认引导执行所述更新版本程序;当接收到版本回滚命令时,所述引导程序引导执行另一程序区的程序。

本申请的有益效果在于:通过在flash构建2个程序区,可以实现将更新版本程序和当前版本程序分别置于不同的程序区;进一步通过构建引导区,可以实现不同版本程序的选择性启动,可以降低程序升级过程中搬移、拷贝升级数据包的次数、降低flash的擦写次数、降低其使用功耗、提高其使用寿命、一定程度可以避免升级数据包在搬移过程中的数据错误导致升级失败。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1a示出了本申请实施例一种嵌入式程序升级方法的流程示意图;

图1b示出了本申请实施例一种嵌入式程序升级的逻辑示意图;

图2示出了本申请实施例一种嵌入式程序升级方法中flash的区域划分示意图;

图3示出了本申请实施例计算机环境示例非限制性示意图;

图4示出了本申请实施例计算机实现的示意框图。

具体实施方式

为使本申请示例性实施例的目的、技术方案和优点更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施例中的技术方案进行清楚、完整地描述,显然,所描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。

基于本申请中示出的示例性实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,虽然本申请中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整技术方案。

应当理解,本申请中说明书和权利要求书及上述附图中的术语″第一″、″第二″、″第三″等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,例如能够根据本申请实施例图示或描述中给出那些以外的顺序实施。

此外,术语″包括″和″具有″以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。

本申请中使用的术语“组件″,是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。。

本说明书通篇提及的″多个实施例″、″一些实施例″、″一个实施例″或″实施例″等,意味着结合该实施例描述的具体特征、结构或特性包括在至少一个实施例中。因此,本说明书通篇出现的短语″在多个实施例中″、″在一些实施例中″、″在至少另一个实施例中″或″在实施例中″等并不一定都指相同的实施例。此外,在一个或多个实施例中,具体特征、结构或特性可以任何合适的方式进行组合。因此,在无限制的情形下,结合一个实施例示出或描述的具体特征、结构或特性可全部或部分地与一个或多个其他实施例的特征、结构或特性进行组合。这种修改和变型旨在包括在本申请的范围之内。

图1a示出了本申请实施例一种嵌入式程序升级方法的流程示意图。

在步骤101中,将嵌入式程序配置为从flash启动,所述flash被配置为包括引导区、2个程序区。

本申请实施例中,对flash进行分区,包括引导区和程序区。

图2示出了本申请实施例一种嵌入式程序升级方法中flash的区域划分示意图。

图中以stm32l4系列256kb的flash为例,对flash区域划分进行介绍。

在一些实施例中,引导区也称为iap程序区,用于存储引导程序。iap程序区设置于flash的起始位置。

嵌入式设备配置为开机后从flash区域启动,则iap程序存放的起始地址为0x08000000,为stm32l4处理器的flash起始地址。

iap的核心是一段预先烧写在处理器内部的引导程序,用于系统启动后根据相关条件,引导系统跳转至对应的程序区运行代码。

在一些实施例中,2个程序区在本实施例中具体表示为app_a区和app_b区。

app_a区的起始地址为addr_app_a_start;app_b区的起始地址为addr_app_b_start。

在一些实施例中,根据所选用的处理器,以stm32l4系列处理器为例,程序区的起始地址addr_app_a_start、addr_app_b_start必须是0x200的倍数。

程序区用于存储不同版本的应用程序。在嵌入式设备封壳前,可以预先将应用程序烧写在划分好的app_a区、或app_b区。在一些其他实现方式中,还可以将应用程序同时烧写至所述app_a区和app_b区。

在一些实施例中,flash还包括升级相关变量存储区、以及未使用存储区。

升级相关标志变量存放区的起始地址为addr_flg_start。

升级相关变量存储区用于存放升级过程中需要使用到的变量。

所述变量存储在flash区,可以实现系统复位时,所述变量的值不发生变化。

除此之外为未使用的存储区,需要说明的是,上述flash各区之间不可重叠覆盖。

在步骤102中,当收到升级通讯命令时,当前版本程序将接收的更新版本程序写入第二程序区,所述当前版本程序位于第一程序区,所述第一程序区为所述2个程序区中的任意一个。

图1b示出了本申请实施例一种嵌入式程序升级的逻辑示意图。

嵌入式设备上电启动后,运行iap引导程序。

在iap引导程序中根据预设的跳转app_a区、或app_b区的条件,引导系统进入相应的程序区,并执行程序区中的程序。

本实施例中以系统进入app_a区为例进行说明。

在系统执行app_a区预先烧写的应用程序过程中,即在app_a区中运行当前版本程序。

如果所述嵌入式设备通过通讯接口收到升级通讯命令,则调用通信处理程序进行升级数据包的接收,并将所述升级数据包写入app_b区对应的flash地址单元。可以发现,app_a区存储的是当前版本程序,app_b区存储的是更新版本程序。

当所述嵌入式设备接收升级数据包结束后,对所述升级数据包进行校验,包括校验所述升级数据包的完整性。

如果所述校验无误,当前版本程序发起软件复位,系统重新启动。

在步骤103中,重启所述嵌入式程序,所述引导区的引导程序引导执行所述第二程序区的所述更新版本程序。

重新启动后的系统首先运行iap引导程序,所述引导程序引导系统执行app_b区存储的更新版本程序,实现了嵌入式程序升级的目的。

当所述嵌入式设备再次升级时,则擦写另一程序区。即可以认为,当前版本程序位于app_a区时,将更新版本程序写入app_b区;当前版本程序位于app_b区时,将更新版本程序写入app_a区,实现2个程序区循环切换、一用一备的效果。

在一些实施例中,所述引导程序被配置为默认引导执行所述更新版本程序。当所述当前版本程序接收到版本回滚命令时,所述引导程序引导执行另一程序区的程序,即当前执行程序的上一个版本。例如,嵌入式设备系统执行app_a区预先烧写的应用程序过程中,如果所述嵌入式设备通过通讯接口收到版本回滚命令,即接收到回滚至上一版本程序的命令,则系统执行相关升级标志后系统复位,iap引导程序引导执行退回到上一个版本所在的程序区运行。

在一些实施例中,所述引导区的引导程序是烧写程序时固定、不可更改的;所述程序区被配置为可进行擦除、重新写入操作。

在一些实施例中,嵌入式程序每次升级过程中,仅烧写app_a区或app_b区,不存在数据搬移,flash的2个区域交替使用。

在一些实施例中,嵌入式程序升级成功后,处理器上存在两个版本的程序,当前版本程序和更新版本程序,也可以称为上一版本程序和本次更新程序。iap引导程序可以选择进入其中某一版本运行。

参照图3,用于实现要求保护主题的各个方面的适当环境300包括计算机302。计算机302包括处理单元304、系统存储器306、编解码器305和系统总线308。系统总线308将系统组件(包括但不限于系统存储器306)耦合到处理单元304。处理单元304能够是各种可用处理器的任何处理器。双微处理器和其它多处理器架构也能够用作处理单元304。

系统总线308能够具有若干类型的总线结构的任何类型包括存储器总线或存储控制器、外围总线或外部总线和/或本地总线,其使用任何种类的可用总线架构,包括但不限于工业标准架构(isa)、微通道架构(msa)、扩展isa(eisa)、智能驱动电子(ide)、vesa本地总线(vlb)、外设部件互连(pci)、卡总线、通用串行总线(usb)、高级图形端口(agp)、个人计算机存储卡国际协会总线(pcmcia)、火线(ieee1394)和小型计算机系统接口(scsi)。

系统存储器306包括易失性存储器310和非易失性存储器312。合有例如在启动期间在计算机302内的元件之间传递信息的基本例程的基本输入/输出系统(bios)被存储在非易失性存储器312中。作为说明而不是限制非易失性存储器312能够包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦可编程rom(eeprom)或闪速存储器。易失性存储器310包括随机存取存储器(ram),其充当外部高速缓冲存储器。按照本方面,易失性存储器可存储写操作重试逻辑(图3中未示出)等。作为说明而不是限制,ram是采取许多形式可用的,例如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双倍数据速率sdram(ddrsdram)和增强sdram(esdram)。

计算机302还可包括可拆卸/不可拆卸、易失性/非易失性计算机存储介质。图3示出例如磁盘存储设备314。磁盘存储设备314包括但不限于像磁盘驱动器、固态磁盘(ssd)、软盘驱动器、磁带驱动器、zip驱动器、ls-110驱动器、闪速存储卡或存储棒的装置。另外,磁盘存储装置314能够包括单独地或者与其它存储介质相组合的存储介质,包括但不限于光盘驱动器(例如致密盘rom装置(cd-rom)、cd可记录驱动器(cd-r驱动器)、cd可重写驱动器(cd-rw驱动器)或者数字多功能盘rom驱动器(dvd-rom)。为了促进磁盘存储装置314与系统总线308的连接,典型地使用可拆卸或者不可拆卸接口(例如接口316)。

要意识到,图3描述软件、执行中的软件、硬件和/或与硬件相组合的软件,其充当用户与适当操作环境300中描述的基本计算机资源之间的中介。这种软件包括操作系统318。操作系统318(其能够存储在磁盘存储设备314上)起作用以控制和分配计算机系统302的资源。应用320利用操作系统318通过系统存储器306中或者磁盘存储设备314上存储的程序模块324和程序数据326(例如引导/关机事务表等)的对资源的管理。要意识到,要求保护主题能够采用各种操作系统或者操作系统的组合来实现。例如,应用320和程序数据326能够包括实现本申请的方面的软件。

用户通过(一个或多个)输入装置328(其非限制性示例能够包括指点装置(例如鼠标)、轨迹球、指示笔、触摸板、键盘、话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、电视调谐卡、数码相机、数字摄像机、电子鼻、万维网摄像头或者允许用户与计算机302进行交互的其它装置)将命令或信息输入计算机302中。这些和其它输入装置经由(一个或多个)接口端口330通过系统总线308来连接到处理单元304。(一个或多个)接口端口330包括例如串行端口、并行端口、游戏端口和通用串行总线(usb)。(一个或多个)输出装置336使用与(一个或多个)输入装置328相同类型的端口中的一些。因此,例如,usb端口可用来向计算机302提供输入,并且从计算机302向输出装置336输出信息。提供输出适配器334,以示出存在一些输出装置336,像监视器、扬声器和打印机连同要求特殊适配器的其它输出装置336。输出适配器334作为说明而不是限制包括视频和声卡,其提供输出装置336与系统总线308之间的连接的手段。应当注意,其它装置和/或装置的系统提供输入和输出能力两者,例如(一个或多个)远程计算机338。

计算机302能够在使用到一个或多个远程计算机(例如(一个或多个)远程计算机338)的逻辑连接的网络化环境中进行操作。(一个或多个)远程计算机338能够是个人计算机、服务器、路由器、网络pc、工作站、基于微处理器的器具、对等装置、智能电话、平板电脑或者其它网络节点,并且典型地包括相对于计算机302描述的元件中的许多元件。为了简洁的目的,随(一个或多个)远程计算机338仅示出存储器存储装置340。(一个或多个)远程计算机338通过网络接口342逻辑地连接到计算机302,并且然后经由(一个或多个)通信连接344来连接。网络接口342包含有线或无线通信网络,例如局域网(lan)、广域网(wan)和蜂窝网络。lan技术包括光纤分布数据接口(fddi)、铜分布数据接口(cddi)、以太网、令牌环等。wan技术包括但不限于点对点链路、电路切换网络(像综合服务数字网络(isdn)及其变化)、分组切换网络和数字用户线(dsl)。

一个或多个通信连接344指用来将网络接口342连接到总线308的硬件/软件。虽然通信连接344为了说明的清楚而在计算机302内部示出,但是它也能够在计算机302外部的。到网络接口342的连接所需的硬件/软件包括(仅为了示范目的)内部和外部技术,例如调制解调器(包括普通电话级调制解调器、电缆调制解调器和dsl调制解调器)、isdn适配器、有线和无线以太网卡、集线器和路由器。

现在参照图4,示出按照本说明书的计算环境400的示意框图。系统400包括一个或多个客户端402(例如计算机、智能电话、平板、照相机、pda)。(一个或多个)客户端402能够是硬件和/或软件(例如线程、进程、计算装置)。(一个或多个)客户端402能够例如采用本说明书来容纳(一个或多个)cookie和/或关联的上下文信息。

系统400还包括一个或多个服务器404。(一个或多个)服务器404也能够是硬件或者与软件相组合的硬件(例如线程、进程、计算装置)。服务器404能够容纳例如通过采用本申请的方面来执行媒体项的变换的线程。客户端402与服务器404之间的一种可能通信能够采取适合在两个或更多计算机进程之间传送的数据分组的形式,其中数据分组可包括编码分析预留空间和/或输入。数据分组能够包括例如cookie和/或关联的上下文信息。系统400包括通信框架406(例如,全球通信网络,例如因特网),其能够用来促进(一个或多个)客户端402与(一个或多个)服务器404之间的通信。

通信能够经由有线(包括光纤)和/或无线技术来促进。(一个或多个)客户端402操作地连接到一个或多个客户端数据存储设备408,其能够用来存储(一个或多个)客户端402本地的信息(例如(一个或多个)cookie和/或关联的上下文信息)。类似地,(一个或多个)服务器404操作地连接到一个或多个服务器数据存储设备410,其能够用来存储服务器404本地的信息。

在一个示范实现中,客户端402能够向服务器404传递编码的文件(例如编码的媒体项)。服务器404能够存储文件,对文件解码,或者将文件传送给另一个客户端402。要意识到,按照本申请,客户端402还能够向服务器404传递未压缩的文件,以及服务器404能够压缩文件和/或变换文件。同样,服务器404能够对信息编码,并且经由通信框架406将信息传送给一个或多个客户端402。

本申请的所示方面还可在分布式计算环境中实践,其中某些任务由远程处理装置(其通过通信网络所链接)来执行。在分布式计算环境中,程序模块能够位于本地和远程存储器存储装置两者中。

本申请的有益效果在于:通过在flash构建2个程序区,可以实现将更新版本程序和当前版本程序分别置于不同的程序区;进一步通过构建引导区,可以实现不同版本程序的选择性启动,可以降低升级过程中搬移、拷贝升级数据包的次数、降低flash的擦写次数、降低其使用功耗、提高其使用寿命、一定程度可以避免升级数据包在搬移过程中出错导致的升级失败。

此外,本领域技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为″数据块″、″模块″、″引擎″、″单元″、″组件″或″系统″。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。

计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、rf、或类似介质,或任何上述介质的组合。

本申请各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如java、scala、smalltalk、eiffel、jade、emerald、c 、c#、vb.net、python等,常规程序化编程语言如c语言、visualbasic、fortran2003、perl、cobol2002、php、abap,动态编程语言如python、ruby和groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(lan)或广域网(wan)、或连接至外部计算机(例如通过因特网)、或在云计算环境中、或作为服务使用如软件即服务(saas)。

此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。

同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。

针对本申请引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本申请作为参考。与本申请内容不一致或产生冲突的申请历史文件除外,对本申请权利要求最广范围有限制的文件(当前或之后附加于本申请中的)也除外。需要说明的是,如果本申请附属材料中的描述、定义、和/或术语的使用与本申请所述内容有不一致或冲突的地方,以本申请的描述、定义和/或术语的使用为准。


技术特征:

1.一种嵌入式程序升级的方法,其特征在于,所述方法包括:

将嵌入式程序配置为从flash启动,所述flash被配置为包括引导区、2个程序区;

当收到升级通讯命令时,当前版本程序将接收的更新版本程序写入第二程序区,所述当前版本程序存储于第一程序区,所述第一程序区为所述2个程序区中的任意一个;

重启所述嵌入式程序,所述引导区的引导程序引导执行所述第二程序区的所述更新版本程序。

2.如权利要求1所述的嵌入式程序升级的方法,其特征在于,所述flash还包括升级相关变量存储区。

3.如权利要求2所述的嵌入式程序升级的方法,其特征在于,所述升级相关变量存储区被配置为存储所述嵌入式程序升级过程中需要使用的变量。

4.如权利要求2所述的嵌入式程序升级的方法,其特征在于,所述引导区、2个程序区、升级相关变量存储区之间不可重叠覆盖。

5.如权利要求1所述的嵌入式程序升级的方法,其特征在于,所述引导区的引导程序是烧写程序时固定、不可更改的。

6.如权利要求1所述的嵌入式程序升级的方法,其特征在于,所述程序区被配置为可进行擦除、重新写入操作。

7.如权利要求1所述的嵌入式程序升级的方法,其特征在于,在重启所述嵌入式程序前,还包括:对所述更新版本程序进行校验。

8.如权利要求1所述的嵌入式程序升级的方法,其特征在于,所述引导程序被配置为在所述嵌入式程序启动时引导执行任意程序区内的程序。

9.如权利要求1所述的嵌入式程序升级的方法,其特征在于,所述引导程序被配置为:

默认引导执行所述更新版本程序;

当接收到版本回滚命令时,所述引导程序引导执行另一程序区的程序。

技术总结
本申请涉及计算机技术领域,特别地,涉及一种嵌入式程序升级的方法。一定程度上可以解决升级过程中反复搬移升级数据包、对FLASH存储区反复擦写,造成的数据出错、升级失败无法启动、FLASH寿命降低功耗增加的问题。所述方法包括:将嵌入式程序配置为从FLASH启动,所述FLASH被配置为包括引导区、2个程序区;当收到升级通讯命令时,当前版本程序将接收的更新版本程序写入第二程序区,所述当前版本程序位于第一程序区,所述第一程序区为所述2个程序区中的任意一个;重启所述嵌入式程序,所述引导区的引导程序引导执行所述第二程序区的所述更新版本程序。

技术研发人员:张喜娜;闫旭霞;宋陈平;翟建波
受保护的技术使用者:乐普医学电子仪器股份有限公司
技术研发日:2020.03.13
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-60111.html

最新回复(0)