单片机系统软件抗干扰方法个人搜集.docx

上传人:b****6 文档编号:8243892 上传时间:2023-01-30 格式:DOCX 页数:16 大小:59.83KB
下载 相关 举报
单片机系统软件抗干扰方法个人搜集.docx_第1页
第1页 / 共16页
单片机系统软件抗干扰方法个人搜集.docx_第2页
第2页 / 共16页
单片机系统软件抗干扰方法个人搜集.docx_第3页
第3页 / 共16页
单片机系统软件抗干扰方法个人搜集.docx_第4页
第4页 / 共16页
单片机系统软件抗干扰方法个人搜集.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

单片机系统软件抗干扰方法个人搜集.docx

《单片机系统软件抗干扰方法个人搜集.docx》由会员分享,可在线阅读,更多相关《单片机系统软件抗干扰方法个人搜集.docx(16页珍藏版)》请在冰豆网上搜索。

单片机系统软件抗干扰方法个人搜集.docx

单片机系统软件抗干扰方法个人搜集

单片机系统软件抗干扰方法1

可靠性设计是一项系统工程,单片机系统的可靠性必须从软件、硬件以及结构设计等方面全面考虑。

硬件系统的可靠性设计是单片机系统可靠性的根本,而软件系统的可靠性设计起到抑制外来干扰的作用。

软件系统的可靠性设计的主要方法有:

开机自检、软件陷阱(进行程序“跑飞”检测)、设置程序运行状态标记、输出端口刷新、输入多次采样、软件“看门狗”等。

通过软件系统的可靠性设计,达到最大限度地降低干扰对系统工作的影响,确保单片机及时发现因干扰导致程序出现的错误,并使系统恢复到正常工作状态或及时报警的目的。

  一、开机自检 开机后首先对单片机系统的硬件及软件状态进行检测,一旦发现不正常,就进行相应的处理。

开机自检程序通常包括对RAM、ROM、I/O口状态等的检测。

1检测RAM 检查RAM读写是否正常,实际操作是向RAM单元写“00H”,读出也应为“00H”,再向其写“FFH”,读出也应为“FFH”。

如果RAM单元读写出错,应给出RAM出错提示(声光或其它形式),等待处理。

  2检查ROM单元的内容 对ROM单元的检测主要是检查ROM单元的内容的校验和。

所谓ROM的校验和是将ROM的内容逐一相加后得到一个数值,该值便称校验和。

ROM单元存储的是程序、常数和表格。

一旦程序编写完成,ROM中的内容就确定了,其校验和也就是唯一的。

若ROM校验和出错,应给出ROM出错提示(声光或其它形式),等待处理。

  3检查I/O口状态 首先确定系统的I/O口在待机状态应处的状态,然后检测单片机的I/O口在待机状态下的状态是否正常(如是否有短路或开路现象等)。

若不正常,应给出出错提示(声光或其它形式),等待处理。

  4其它接口电路检测 除了对上述单片机内部资源进行检测外,对系统中的其它接口电路,比如扩展的E2PROM、A/D转换电路等,又如数字测温仪中的555单稳测温电路,均应通过软件进行检测,确定是否有故障。

只有各项检查均正常,程序方能继续执行,否则应提示出错。

  二、软件陷阱 在程序存储器中总会有一些区域未使用,如果因干扰导致单片机的指令计数器PC值被错置,程序跳到这些未用的程序存储空间,系统就会出错。

软件陷阱是在程序存储器的未使用的区域中,加上若干条空操作和无条件跳转指令,无条件跳转指令指向程序“跑飞”处理子程序的入口地址。

如果程序跳到这些未用区域,就会执行无条件跳转指令,转到相应的程序出错“跑飞”处理程序。

除程序未用区域外,还可以在程序段之间(如子程序之间及一段处理程序完成后)及一页的末尾处插入软件陷阱,效果会更好。

下面是一段带软件陷阱的程序;

  DSP:

……;显示子程序

    RET

    NOP;软件陷阱

    NOP

    NOP

    LIMP FLY

D10MS:

MOV R0,#010H;延时子程序

    ……

    RET

    NOP     ;软件陷阱

    NOP

    NOP

    LJMP FLY

    ……

  FLY:

……  ;“跑飞”处理子程序

    RET

  三、程序“跑飞”处理 要进行程序“跑飞”处理,就要分清程序“跑飞”所造成的影响,以及程序“跑飞”前运行的进程,这就需要的设置相应的标志。

  RAM数据正常标志 RAM数据正常标志是检测RAM区的数据是否已经因程序“跑飞”或其它干扰而改变。

如果RAM区的数据确因程序“跑飞”或其它干扰而改变,则系统无法自行恢复到原来的出错地点,只能由人工或由软件复位从头开始执行。

要进行RAM区数据正常检测,首先应在初始化程序中,对RAM的若干单元设置RAM数据正常标志。

通常是在RAM区中选数个单元,在初始化程序中将其置成固定的数,如“55H”或“0AAH”,只要程序正常运行,这些单元的内容是不会被修改的,若因程序“跑飞”或其它干扰导致这些RAM单元中的任何单元的数据发生变化,说明其它RAM单元的内容也可能发生变化,无法反映程序运行的结果和状态,不能根据RAM区中的标志去恢复程序运行现场。

  程序运行标记 程序运行状态标记是在RAM区中设立一些标志位,这些标志位分别代表程序运行的不同阶段及运行后的状态。

在初始化程序中,首先对这些单元置初值,在程序运行的不同阶段,这些单元的内容将被改变成特定值,标记程序运行的阶段和运行后的状态。

这些标志除了在程序正常运行中起到条件转移的作用外,还能在程序“跑飞”,而RAM区数据正常时起到恢复程序运行现场的作用。

  程序“跑飞”处理 程序“跑飞”处理就是在程序由软件陷阱检测到“跑飞”后,转入“跑飞”处理程序。

“跑飞”处理程序判断“跑飞”影响的程度,根据影响程度的不同,决定是报警复位还是自动恢复现场。

如自动恢复现场,则需根据程序运行状态标记进行。

具体如何进行程序“跑飞”处理,要根据控制系统的设计要求进行。

  四、输出端口刷新 由于单片机的I/O口很容易受到外部信号的干扰,输出口的状态也可能因此而改变。

在程序中周期性地添加输出端刷新指令,可以降低干扰对输出口状态的影响。

在程序中指定RAM单元存储输出口当时应处的状态,在程序运行过程中根据这些RAM单元的内容去刷新I/O口。

  五、输入多次采样 干扰对单片机的输入,会造成输入信号瞬间采样的误差或误读。

要排除干扰的影响,通常采取重复采样、加权平均的方法。

  比如对于外部电平采样(如按键),采取软件每隔10ms读一次键盘或连续读若干次,每次读出的数据都相同或者采取表决的方法确认输入的键值。

又如在用单稳电路检测温度的系统中(参《电子报》1999年第51期第九版)采取对单稳电路的脉冲宽度计数,然后查表求温度值的方法。

为排除干扰的影响,可以采取三次采样求平均值,也可以采取两次采样、差值小于设定值为有效,然后求平均值的方法(又称软件滤波)。

总之,对输入信号进行多次采样,其后如何进行处理是要根据具体对象实际处理的效果来优选的,读者可通过实验室调试时施加干扰及现场环境调试时的效果来确定。

  六、软件“看门狗” 软件陷阱是在程序运行到ROM的非法区域时检测程序出错的方法。

而“看门狗”是根据程序在运行指定时间间隔内未进行相应的操作,即未按时复位看门狗定时器,来判断程序运行出错的。

  在系统成本允许的情况下,应选择专门的看门狗电路芯片或片内带看门狗定时器的单片机。

如果条件不允许,应加软件“看门狗”。

关于软件“看门狗”的编制方法,请参考《电子报》2000年第8期第十二版。

  单片机软件系统的可靠性设计的方法很多,相信所有从事单片机系统软件设计的同仁都有自己的经验和体会。

本文给出的只是笔者常用的方法,希望对读者有所帮助。

单片机系统软件抗干扰方法2

在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。

下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。

 1 软件抗干扰方法的研究

 在工程实践中,软件抗干扰研究的内容主要是:

一、消除模拟输入信号的嗓声(如数字滤波技术);二、程序运行混乱时使程序重入正轨的方法。

本文针对后者提出了几种有效的软件抗干扰方法。

 1.1指令冗余

 CPU取指令过程是先取操作码,再取操作数。

当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。

若“飞”到了三字节指令,出错机率更大。

 在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。

通常是在双字节指令和三字节指令后插入两个字节以上的NOP。

这样即使乱飞程序飞到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。

 此外,对系统流向起重要作用的指令如RET、RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行。

 1.2拦截技术

 所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。

通常用软件陷阱来拦截乱飞的程序。

因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。

 1.2.1软件陷阱的设计

 当乱飞程序进入非程序区,冗余指令便无法起作用。

通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。

软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。

通常在EPROM中非程序区填入以下指令作为软件陷阱:

                      NOP

                      NOP

                      LJMP0000H

其机器码为0000020000。

 1.2.2陷阱的安排

 通常在程序中未使用的EPROM空间填0000020000。

最后一条应填入020000,当乱飞程序落到此区,即可自动入轨。

在用户程序区各模块之间的空余单元也可填入陷阱指令。

当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。

如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:

                      NOP

                      NOP

                      RETI

 返回指令可用“RETI”,也可用“LJMP0000H”。

如果故障诊断程序与系统自恢复程序的设计可靠、完善,用“LJMP0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。

 考虑到程序存贮器的容量,软件陷阱一般1K空间有2-3个就可以进行有效拦截。

 1.3软件“看门狗”技术

 若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。

通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。

 “看门狗”技术可由硬件实现,也可由软件实现。

在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断。

则系统无法定时“喂狗”,硬件看门狗电路失效。

而软件看门狗可有效地解决这类问题。

 笔者在实际应用中,采用环形中断监视系统。

用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0。

采用这种环形结构的软件“看门狗”具有良好的抗干扰性能,大大提高了系统可靠性。

对于需经常使用T1定时器进行串口通讯的测控系统,则定时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列单片机,也可用T2代替T1进行监视)。

这种软件“看门狗”监视原理是:

在主程序、T0中断服务程序、T1中断服务程序中各设一运行观测变量,假设为MWatch、T0Watch、T1Watch,主程序每循环一次,MWatch加1,同样T0、T1中断服务程序执行一次,T0Watch、T1Watch加1。

在T0中断服务程序中通过检测T1Watch的变化情况判定T1运行是否正常,在T1中断服务程序中检测MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测T0Watch的变化情况判别T0是否正常工作。

若检测到某观测变量变化不正常,比如应当加1而未加1,则转到出错处理程序作排除故障处理。

当然,对主程序最大循环周期、定时器T0和T1定时周期应予以全盘合理考虑。

限于篇幅不赘述。

 2 系统故障处理、自恢复程序的设计

 单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。

 2.1非正常复位的识别

 程序的执行总是从0000H开始,导致程序从0000H开始执行有四种可能:

一、系统开机上电复位;二、软件故障复位;三、看门狗超时未喂狗硬件复位;四、任务正在执行中掉电后来电复位。

四种情况中除第一种情况外均属非正常复位,需加以识别。

 2.1.1硬件复位与软件复位的识别

 此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器有影响,如复位后PC=0000H,SP=07H,PSW=00H等。

而软件复位则对SP、SPW无影响。

故对于微机测控系统,当程序正常运行时,将SP设置地址大于07H,或者将PSW的第5位用户标志位在系统正常运行时设为1。

那么系统复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。

图1是采用PSW.5作上电标志位判别硬、软件复位的程序流程图。

此外,由于硬件复位时片内RAM状态是随机的,而软件复位片内RAM则可保持复位前状态,因此可选取片内某一个或两个单元作为上电标志。

设40H用来做上电标志,上电标志字为78H,若系统复位后40H单元内容不等于78H,则认为是硬件复位,否则认为是软件复位,转向出错处理。

若用两个单元作上电标志,则这种判别方法的可靠性更高。

 2.1.2开机复位与看门狗故障复位的识别

 开机复位与看门狗故障复位因同属硬件复位,所以要想予以正确识别,一般要借助非易失性RAM或者EEROM。

当系统正常运行时,设置一可掉电保护的观测单元。

当系统正常运行时,在定时喂狗的中断服务程序中使该观测单元保持正常值(设为AAH),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否看门狗复位。

 2.1.3正常开机复位与非正常开机复位的识别

 识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过程控制系统尤为重要。

如某以时间为控制标准的测控系统,完成一次测控任务需1小时。

在已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗。

因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。

那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。

 2.2非正常复位后系统自恢复运行的程序设计

 对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模块或任务恢复运行。

所以测控系统要作好重要数据单元、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。

 当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的初始化、片外扩展芯片的初始化等。

其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面等的恢复。

之后再把复位前的任务、参数、运行时间等恢复,再进入系统运行状态。

 应当说明的是,真实地恢复系统的运行状态需要极为细致地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性。

 其次,对多任务、多进程测控系统,数据的恢复需考虑恢复的次序问题,笔者实际应用的数据恢复过程流程图如图2所示。

图中恢复系统基本数据是指取出备份的数据覆盖当前的系统数据。

系统基本初始化是指对芯片、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。

而复位前任务的初始化是指任务的执行状态、运行时间等。

 3 结束语

 对于软件抗干扰的一些其它常用方法如数字滤波、RAM数据保护与纠错等,限于篇幅,本文未作讨论。

在工程实践中通常都是几种抗干扰方法并用,互相补充完善,才能取得较好的抗干扰效果。

从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。

细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的单片机系统是完全可行的。

软件陷阱

CPU受到干扰后,往往将一些操作数当作指令码来执行,造成程序执行混乱.在A51的做法主要有以下几种:

1.中断向量区

ORG0000H

START:

LJMPMAIN

LJMPINT0

NOP

NOP

LJMPERR;陷阱

LJMPTOINT

NOP

NOP

LJMPERR;陷阱

----

ORG0040H

ERR:

-----------

2.在表格区

在表格区的最后安排5个字节的陷阱

TABEL1:

DB------------

DB------------

NOP

NOP

LJMPERR

3.在未使用的ROM空间

未使用的ROM空间一般全是0FFH,对于51来说是"MOVR7,A"的单字节指令,程序一旦弹飞到这个区域,将会飞流直下.一般在一些固定的地址加入软件陷阱,捕获弹飞的程序.

ORG6000H

NOP

NOP

LJMPERR

ORG7FFBH

NOP

NOP

LJMPERR

4.在子程序后面

XXXX:

;;;;;;;;;;

;;;;;;;;;;

RET

NOP

NOP

LJMPERR

以及在一些长跳转的断裂点...

注:

ERR子程序,应当重新设定堆栈,等一些初始化的参数,但对于RAM区的部分数据可以判断保留.

两种“软件陷阱技术”的比较

引言

   单片机应用系统的抗干扰具体可分为软件和硬件两方面,其中,软件抗干扰以其设计灵活、节省硬件资源、降低成本等优势越来越得到广泛采用。

软件抗干扰技术主要有“指令冗余技术”、“软件陷阱技术”、“软件看门狗技术”、“数字滤波技术”等。

本文就软件陷阱技术对单片机应用系统抗干扰的原理与具体实现方法进行探讨和研究,给出实现软件陷阱技术的两种形式,并将该技术成功地使用在多个实际的单片机应用系统中,保证系统的可靠运行。

1程序跑飞和软件陷阱技术概述

   程序正常运行时,程序计数器PC始终指向正在执行的这条指令的下一条指令的第一个字节的程序存储器单元地址,这样就保证了单片机能够正确地读取每一条指令的各个字节,即CPU先读取操作码,再读取操作数(如果有操作数字节的话)。

在MCS-51系列单片机中,程序计数器PC的寻址范围是0000H~FFFFH,共64KB。

用户应用程序中,根据系统要求,规定了程序运行的惟一路径。

这体现在系统上电后,程序计数器PC有唯一的变化历程,保证了程序正常、有序地运行。

程序跑飞是指系统受到某种干扰后,程序计数器PC的值偏离了给定的唯一变化历程,导致程序运行偏离正常的运行路径。

程序跑飞因素及后果往往是不可预计的。

   在很多情况下,程序跑飞后系统会进入死循环而导致死机。

这时,应采取有效措施引导跑飞的程序尽快退出死循环并迅速复位。

实践证明,软件陷阱技术能有效引导跑飞的程序尽快退出死循环并迅速复位。

2两种软件陷阱技术的比较分析

   当单片机应用系统的CPU受到干扰时,不良影响的主要形式有:

①非正常修改程序计数器PC指针;②改写可编程输出端口的状态;③非正常修改重要数据区的数据。

以上三个方面的不良影响会使单片机应用系统程序失控,控制状态失灵,其后果是非常严重的,它甚至会使系统崩溃,造成严重的工业事故。

以上几个方面的不良影响可以使用软件陷阱技术加以解决。

现将这一技术的实现方法归纳总结为两种。

2.1软件陷阱技术实现形式之一

   单片机应用系统的用户应用程序一般由循环结构的主程序和中断服务子程序组成,主程序的结构如图1所示。

将下面的软件陷阱程序段插入到用户应用程序中(如何插入的问题将在下面的第3点中详细讨论),即在用户应用程序存储器不用区域写入代码“OO00020000H”。

   NOP

   NOP

   LJMPO000H

   当单片机应用系统工作正常时,单片机的CPU不会执行软件陷阱程序段;但是,当单片机应用系统受到干扰而程序跑飞后,由于程序计数器PC值错误,破坏了正常的指令格式,导致执行非正常指令,从而执行软件陷阱程序段,落入软件陷阱,将跑飞的程序引导到复位入口地址0000H。

软件陷阱程序段中的连续2条NOP指令是为了增强“LJMP0000H”被捕获的能力,即“IJMP0000H”不会被冲散,当程序跑飞后会得到完整地执行,从而使跑飞的程序纳入正常轨道。

2.2软件陷阱技术实现形式之二

   虽然上述的软件陷阱技术能实现可靠回复功能,但是有两个方面的严重隐患。

第一,隐患主要是在对中断的处理上:

首先,程序跑飞很可能是发生在中断服务子程序中,其次,一些未使用的中断很可能因为程序跑飞而被错误地激活,而这时只是简单地让跑飞的程序从头开始运行,就不能关闭已激活的中断,这样,单片机的中断系统会认为程序仍在处理中断,就不会再响应同级中断。

第二,大部分单片机应用系统在上电复位初始化后,不希望在程序跑飞而用软件陷阱回复后又重新初始化。

   为了解决第一个隐患,当程序跑飞时,一定要想办法关闭可能发生的中断,然后再执行用户应用程序。

大家知道,当CPU进入中断后,就只能用RETI指令关闭中断.解决第一个隐患的具体方法是,改变软件陷阱程序段:

当程序跑飞后,将跑飞的程序引到0202H处,然后在0202H处完成关闭中断的工作,即在用户应用程序存储器不用区域写入代码“0000020202H”。

需要注意的是,程序存储器不用区域的最后两个存储单元,一定要分别写入代码“00H”。

   NOP

   NOP

   LJMP0202H;前面的连续2条NOP指令是为了  

              ;增强“LJMP0202H”被捕获的能力

   而在0202H开始的程序存储器单元进行如下的编程:

   ORG0202H

   MOVDPTR,#ERRl

   PUSHDPL

   PUSHDPH

   RETI;关闭第1级中断,并跳转到ERRl处

   ERRl:

CLRA

   PUSHACC

   PUSHACC

   RETI;关闭第2级中断,软件回复到0000H处

   这样,就保证了无论在什么情况下,都可以关闭2级中断。

当然,如果没有中断被激活时运行了这段程序,也不会有什么不良影响。

   为了解决第二个隐患,可以在系统主程序入口处加一个软件开关来判别是上电复位直接进入0000H的,还是经过软件陷阱回复而进入0000H的,根据不同的判别结果执行不同的程序。

   单片机应用系统上电时,上电复位电路会使单片机处于复位状态。

这一般称为冷启动。

   但是,软件陷阱技术使跑飞的程序回复到主程序入口地址0000H时,不影响特殊功能寄存器SFR的有效位。

解决第二个隐患的具体方法是,设置上电复位标志。

例如,以PSW.5作为上电标志位,当PSW.5=0时,表示是上电复位;当PSW.5=l时,表示是软件陷阱回复。

图2是上电复位与程序跑飞后软件陷阱回复初始化处理框图。

0000H是MCU的复位入口,程序启动后,首先判断是上电复位,还是程序跑飞后软件陷阱回复。

上电复位是开机操作,要建立上电标志,并进行系统的完全初始化。

程序跑飞后软件陷阱回复应该进行相关资源的检查与修复,以防止系统运行出错。

另外,根据系统特点,需要保留一些过程数据,不得进行完全初始化。

   为了解决上述两个隐患,有如下具体编程。

其中,START0为系统上电复位完全初始化于程序入口,ER-ROR为程序跑飞后软件陷阱回复应进行的系统部分初始化和相关资源的检查与修复程序入口,LOOP是用户应用程序功能模块入口。

   ORG0000H

   LJMPSTART

   ORG0100H

   START:

MOVC,PSW.5

   JCERROR

   SETBC

   MOVPSW.5,C

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

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1