版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021/6/7 1 第第9 9章章 FlashFlash存储器在线编程存储器在线编程 2021/6/7 2 主要内容主要内容 v9.1 Flash9.1 Flash存储器概述存储器概述 v9.2 AW609.2 AW60的的FlashFlash存储器编程方法存储器编程方法 v9.3 AW609.3 AW60的的FlashFlash在线编程在线编程C C语言实例语言实例 v9.4 S08 Flash9.4 S08 Flash存储器的保护特性和安全性存储器的保护特性和安全性 2021/6/7 3 9.1 Flash9.1 Flash存储器概述存储器概述 9.1.1 Flash9.1.1 Flas
2、h存储器的基本特点与编程模式存储器的基本特点与编程模式 FlashFlash存储器的基本特点存储器的基本特点 l 固有不挥发性固有不挥发性 l 易更新性易更新性 l 成本低、密度高、可靠性好成本低、密度高、可靠性好 FlashFlash存储器的编程模式存储器的编程模式 从从FlashFlash存储器的基本特点可以看出,在单片机中,可以利存储器的基本特点可以看出,在单片机中,可以利 用用FlashFlash存储器固化程序,一般情况下通过编程器来完成,存储器固化程序,一般情况下通过编程器来完成, FlashFlash存储器工作于这种情况,叫监控模式存储器工作于这种情况,叫监控模式(Monitor
3、Mode)(Monitor Mode)或或 写入器模式,这与一般的写入器模式,这与一般的EPROMEPROM、OTPOTP、EEPROMEEPROM装入程序的含义装入程序的含义 相似。另一方面,由于相似。另一方面,由于FlashFlash存储器具有电可擦除功能,因此,存储器具有电可擦除功能,因此, 在程序运行过程中,有可能对在程序运行过程中,有可能对FlashFlash存储区的数据或程序进行存储区的数据或程序进行 更新,更新,FlashFlash存储器工作于这种情况,叫用户模式存储器工作于这种情况,叫用户模式(User Mode)(User Mode) 或在线编程模式或在线编程模式 2021/
4、6/7 4 9.1.2 S089.1.2 S08系列系列MCUMCU的的FlashFlash存储器存储器 Freescale Freescale公司在公司在FlashFlash存储器技术相当成熟之后才推出了片存储器技术相当成熟之后才推出了片 内带有内带有FlashFlash存储器的存储器的8 8位位MCUMCU,在应用的方便性和可靠性等方面,在应用的方便性和可靠性等方面 有其独到的特点:有其独到的特点: 编程速度快且可靠性高编程速度快且可靠性高 S08S08系列系列MCUMCU的片内的片内FlashFlash存储器的整体擦除时间可以控制在存储器的整体擦除时间可以控制在5ms5ms以以 内,对单
5、字节的编程(写入)时间也在内,对单字节的编程(写入)时间也在40ns40ns以内。片内以内。片内FlashFlash存储器存储器 的存储数据可以保持的存储数据可以保持1010年以上,可擦写次数均在年以上,可擦写次数均在1 1万次以上万次以上 单一电源电压供电单一电源电压供电 S08S08系列系列MCUMCU通过在片内集成的电荷泵,可由单一工作电压在片内通过在片内集成的电荷泵,可由单一工作电压在片内 产生出编程电压,这样就实现了单一电源供电的在线编程电压,而不产生出编程电压,这样就实现了单一电源供电的在线编程电压,而不 需要为需要为FlashFlash的编程增加额外的编程电压模块,同时也使的编程
6、增加额外的编程电压模块,同时也使S08S08系列系列MCUMCU 兼具了两种编程模式兼具了两种编程模式 支持在线编程支持在线编程 S08S08系列系列MCUMCU的片内的片内FlashFlash存储器支持在线编程,允许存储器支持在线编程,允许MCUMCU内部运行内部运行 的程序去改写的程序去改写FlashFlash存储器的内容,这样就可以代替外部电可擦除存存储器的内容,这样就可以代替外部电可擦除存 储芯片,从而减少了外围部件,增加了嵌入式系统开发的方便性储芯片,从而减少了外围部件,增加了嵌入式系统开发的方便性 2021/6/7 5 9.2 AW609.2 AW60的的FlashFlash存储器
7、编程方法存储器编程方法 9.2.1 Flash9.2.1 Flash存储器编程的基本概念存储器编程的基本概念 FlashFlash编程的基本操作有两种:编程的基本操作有两种: 擦除(擦除(EraseErase):将存储单元的内容由二进制的):将存储单元的内容由二进制的0 0变成变成1 1 写入(写入(ProgramProgram):将存储单元的内容由二进制的):将存储单元的内容由二进制的1 1变成变成0 0 擦除操作包括整体擦除和页擦除。而写入操作是以字为单位擦除操作包括整体擦除和页擦除。而写入操作是以字为单位 进行的。在擦除及写入过程中一般需要高于电源的电压。进行的。在擦除及写入过程中一般需
8、要高于电源的电压。 FlashFlash存储器在片内是以页存储器在片内是以页(Page)(Page)和行和行(Row)(Row)为单位组织的,为单位组织的, 页的大小始终为行的两倍。对页的大小始终为行的两倍。对FlashFlash存储器的擦除操作可以存储器的擦除操作可以 进行整体擦除也可以仅擦除某一起始地址开始的一页进行整体擦除也可以仅擦除某一起始地址开始的一页(512(512字字 节节) ) 2021/6/7 6 9.2.2 Flash9.2.2 Flash存储器的编程寄存器存储器的编程寄存器 FlashFlash时钟分频寄存器时钟分频寄存器 FCDIV (Flash Clock Divid
9、er RegisterFLCR)FCDIV (Flash Clock Divider RegisterFLCR)的地址是的地址是 $1820$1820 l D7DIVLDD7DIVLD为分频设置状态标志位为分频设置状态标志位(Divisor Loaded Status (Divisor Loaded Status Flag)Flag),DIVLDDIVLD为只读位为只读位 l D6PRDIV8D6PRDIV8为为FlashFlash预分频设置位预分频设置位(Prescale Flash Clock by 8)(Prescale Flash Clock by 8) l D5 D5D0DIV5D0
10、DIV5DIV0DIV0为为FlashFlash时钟分频器的分频因子。时钟分频器的分频因子。 FlashFlash的内部工作时钟的内部工作时钟 f fFCLK FCLK的计算方法如下: 的计算方法如下: 如果如果PRDIV8=0PRDIV8=0,f fFCLK FCLK=f =fbus bus (DIV5:DIV0+1)(DIV5:DIV0+1) 如果如果PRDIV8=1PRDIV8=1,f fFCLK FCLK=f =fbus bus (8(8DIV5:DIV0+1)DIV5:DIV0+1) 数据数据 位位 D7D6D5D4D3D2D1D0 定义定义 DIVL DD PRDI V8 DIV5
11、DIV4DIV3DIV2DIV1DIV0 复位复位00000000 2021/6/7 7 在对在对FlashFlash进行编程操作时,进行编程操作时,FlashFlash的内部工作时钟必须降到的内部工作时钟必须降到150KHz150KHz 200KHz200KHz,擦,擦/ /写操作的脉冲是写操作的脉冲是FlashFlash的内部工作时钟的一个时钟周期,所以的内部工作时钟的一个时钟周期,所以 擦擦/ /写的时间相应地在写的时间相应地在6.76.7s s5 5s s。下表出了对。下表出了对FCDIVFCDIV寄存器设置不同的数寄存器设置不同的数 值时对值时对FlashFlash擦写操作的影响擦写
12、操作的影响 fBusPRDIV8 DIV5:DIV 0 fFCLK 擦写的时擦写的时 钟脉冲钟脉冲 20MHz112192.3KHz5.2s 10MHz049200KHz5s 8MHz039200KHz5s 4MHz019200KHz5s 2MHz09200KHz5s 1MHz04200KHz5s 200KHz00200KHz5s 150KHz00150KHz6.7s 2021/6/7 8 FlashFlash选项寄存器选项寄存器 FlashFlash选项寄存器选项寄存器(Flash Options RegisterFOPT(Flash Options RegisterFOPT和和NVOPT)
13、NVOPT)。MCUMCU复复 位时,位时,FlashFlash中的非易失性的中的非易失性的NVOPTNVOPT值被赋给值被赋给FOPTFOPT寄存器,寄存器,FOPTFOPT可以读,可以读, 但写操作是无效的。要改变但写操作是无效的。要改变FOPTFOPT寄存器的值,需要对寄存器的值,需要对FlashFlash中中NVOPTNVOPT位位 擦除并重新写入新的数值。擦除并重新写入新的数值。FOPTFOPT的地址是的地址是$1821$1821 l D7KEYEND7KEYEN为后门锁机构允许位为后门锁机构允许位(Backdoor Key Mechanism Enable)(Backdoor Ke
14、y Mechanism Enable) l D6FNOREDD6FNORED为矢量重定向禁止位为矢量重定向禁止位(Vector Redirection Disable)(Vector Redirection Disable) l D1D1D0D0位位SEC01SEC01SEC00SEC00为安全状态码为安全状态码 数据位数据位D7D6D5D4D3D2D1D0 定义定义 KE YEN FNOR ED 未定未定 义义 未定未定 义义 未定未定 义义 未定未定 义义 SEC0 1 SEC0 0 复位复位将将NVOPTNVOPT中的内容装载到该寄存器中中的内容装载到该寄存器中 2021/6/7 9 F
15、lashFlash配置寄存器配置寄存器 FCNFG(Flash Configure RegisterFCNFG)FCNFG(Flash Configure RegisterFCNFG)的地址是的地址是$1823$1823 l D5KEYACCD5KEYACC为写访问钥匙允许位为写访问钥匙允许位(Enable Writing of Access (Enable Writing of Access Key)Key)。KEYACC=1KEYACC=1时,表示写时,表示写BVBACKKEY($FFB0-$FFB7)BVBACKKEY($FFB0-$FFB7)被认为是进被认为是进 行密码比较;行密码比较
16、;KEYACC=0KEYACC=0时,表示写时,表示写BVBACKKEY($FFB0-$FFB7)BVBACKKEY($FFB0-$FFB7)被解被解 释为释为FlashFlash擦写命令的开始擦写命令的开始 数据数据 位位 D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0 定义定义 未定未定 义义 未定未定 义义 KEYACKEYAC C C 未定未定 义义 未定未定 义义 未定未定 义义 未定未定 义义 未定未定 义义 复位复位0 00 00 00 00 00 00 00 0 2021/6/7 10 FlashFlash保护寄存器保护寄存器 FlashFlash保护寄存器保
17、护寄存器(Flash Protect RegisterFPROT(Flash Protect RegisterFPROT和和NVPROT)NVPROT)的地的地 址是址是$1824$1824 l D7D7D1FPS6D1FPS6FPS0FPS0为为FlashFlash保护区域设置。保护区域设置。FPDIS=0FPDIS=0时,这时,这7 7位决位决 定了未保护区域的结束地址定了未保护区域的结束地址 l D0FPDISD0FPDIS为为FlashFlash保护设置位保护设置位(Flash Protection Disable)(Flash Protection Disable)。 FPDIS=1
18、FPDIS=1时,时,FlashFlash不进行保护;不进行保护;FPDIS=0FPDIS=0时,时,FlashFlash保护保护FPS6FPS6: FPS0FPS0所设置的区域所设置的区域 数据数据 位位 D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0 定义定义FPS6FPS6FPS5FPS5FPS4FPS4FPS3FPS3FPS2FPS2FPS1FPS1FPS0FPS0 FPDIFPDI S S 复位复位将将NVPROTNVPROT中的内容装载到该寄存器中中的内容装载到该寄存器中 2021/6/7 11 FlashFlash状态寄存器状态寄存器 FSTAT(Flash S
19、tatus RegisterFSTAT)FSTAT(Flash Status RegisterFSTAT)的地址是的地址是$1825$1825 l D7FCBEFD7FCBEF为为FlashFlash命令缓冲区空标志位命令缓冲区空标志位(Flash Command Buffer (Flash Command Buffer Empty Flag)Empty Flag) l D6FCCFD6FCCF为为FlashFlash命令完成标志位命令完成标志位(Flash Command Complete Flag)(Flash Command Complete Flag) l D5FPVIOD5FPVIO
20、为侵害保护标志位为侵害保护标志位(Protection Violation Flag)(Protection Violation Flag) l D4FACCERD4FACCER为访问出错标志位为访问出错标志位(Access Error Flag)(Access Error Flag) l D2FBLANKD2FBLANK为为FlashFlash空白标志位空白标志位(Flash Verified All Blank Flag)(Flash Verified All Blank Flag) 数据数据 位位 D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0 定义定义 FCBEFCB
21、E F F FCCFFCCF FPVIFPVI O O FACCFACC ERER 未定未定 义义 FBLAFBLA NKNK位位 未定未定 义义 未定未定 义义 复位复位1 11 10 00 00 00 00 00 0 2021/6/7 12 FlashFlash命令寄存器命令寄存器 FCMD(Flash Command RegisterFCMD)FCMD(Flash Command RegisterFCMD)的地址是的地址是$1826$1826 l D7D7D0D0对对FlashFlash进行访问的命令字节。表进行访问的命令字节。表9-29-2列出了对列出了对FlashFlash访问访问
22、的命令字节的命令字节 数据数据 位位 D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0 定义定义FCMD7FCMD7FCMD6FCMD6FCMD5FCMD5FCMD4FCMD4FCMD3FCMD3 FCMD2FCMD2 位位 FCMD1FCMD1FCMD0FCMD0 复位复位0 00 00 00 00 00 00 00 0 2021/6/7 13 9.2.3 Flash9.2.3 Flash存储器的编程过程存储器的编程过程 FlashFlash命令的执行步骤命令的执行步骤 l向向FlashFlash地址中写入一个数据地址中写入一个数据 l向向FlashFlash命令寄存器命令寄
23、存器FCMDFCMD中写入需要执行的命令中写入需要执行的命令 l执行命令执行命令 FlashFlash命令的执行流程命令的执行流程 看下面的看下面的 两个流程图两个流程图 2021/6/7 14 AW60 Flash AW60 Flash编程例程图编程例程图AW60 FlashAW60 Flash批量写入流程图批量写入流程图 2021/6/7 15 FlashFlash命令出错的状况命令出错的状况 在执行以下操作时,会导致出错,在执行以下操作时,会导致出错,FACCERRFACCERR自动置自动置1 1 l 在向在向FlashFlash地址写入信息前没有进行地址写入信息前没有进行FCDIVFC
24、DIV寄存器设置寄存器设置 l 在向在向FlashFlash地址写入信息前地址写入信息前FCBEFFCBEF没有置没有置1 1 l 在执行命令前,执行两次向在执行命令前,执行两次向FlashFlash地址写入信息操作地址写入信息操作 l 在向在向FlashFlash地址写入信息后,设置除地址写入信息后,设置除FCMDFCMD外的其他外的其他FlashFlash控制寄存器控制寄存器 l 向向FCMDFCMD中写入表中写入表9-29-2以外的命令字以外的命令字 l 向向FCMDFCMD中写入命令字后,试图读写除中写入命令字后,试图读写除FSTATFSTAT外的寄存器外的寄存器 l 在执行命令时,在
25、执行命令时,MCUMCU进入进入STOPSTOP模式模式 l MCUMCU处于保密状态时,使用背景调试接口进行页擦除或写处于保密状态时,使用背景调试接口进行页擦除或写FlashFlash操作操作 l 向向FCBEFFCBEF位写位写0 0取消一个命令的执行取消一个命令的执行 2021/6/7 16 9.3 AW609.3 AW60的的FlashFlash在线编程在线编程C C语言实例语言实例 9.3.1 Flash9.3.1 Flash存储器的擦除及写入存储器的擦除及写入C C语言子程序语言子程序 由于由于AW60AW60内部的监控内部的监控ROMROM中没有固化中没有固化FlashFlash
26、编程子程序,要在运行中能对编程子程序,要在运行中能对 FlashFlash进行在线编程,初始装入的用户程序,必须包含对进行在线编程,初始装入的用户程序,必须包含对FlashFlash的擦除及的擦除及 写入子程序写入子程序 擦除和写入流程的一些公共操作擦除和写入流程的一些公共操作 擦除和写入操作的代码必须放在内存中执行编译完后对应机器码字节保擦除和写入操作的代码必须放在内存中执行编译完后对应机器码字节保 存到下表中的存到下表中的volatile unsigned char PGM57volatile unsigned char PGM57的数组中。这样实际使的数组中。这样实际使 用时就无需进写入
27、子程序行内存的拷贝,就可以实现擦除写入操作用时就无需进写入子程序行内存的拷贝,就可以实现擦除写入操作 页擦除子程序页擦除子程序Flash_PageEraseFlash_PageErase 首先根据页号计算出页首地址,然后将首先根据页号计算出页首地址,然后将FlashFlash执行命令更改为擦除命令执行命令更改为擦除命令 0 x400 x40,调用并执行擦除代码,调用并执行擦除代码 写入程序写入程序 首先根据页号和页内偏移计算出写入首地址,然后将首先根据页号和页内偏移计算出写入首地址,然后将FlashFlash执行命令更改执行命令更改 为擦除命令为擦除命令0 x200 x20,逐个字节进行写入直
28、至完成,逐个字节进行写入直至完成 2021/6/7 17 擦除与写入子程序编程要点说明擦除与写入子程序编程要点说明 l RAMRAM中有中有5757字节的空间存放擦出写入机器码,使用内存时不要忘记字节的空间存放擦出写入机器码,使用内存时不要忘记 计算计算 l 一次擦除后未被写入过的区域可以再次调用写入子程序写入,但写一次擦除后未被写入过的区域可以再次调用写入子程序写入,但写 入过的区域,未经擦除不能重写入过的区域,未经擦除不能重写 l 由于擦除是每次擦除一页(由于擦除是每次擦除一页(512512字节),所以数据应合理安排,避字节),所以数据应合理安排,避 免误擦免误擦 l 页首地址的定义须遵照
29、保护寄存器页首地址的定义须遵照保护寄存器FPROTFPROT定义的规则定义的规则 l 对对FPROTFPROT设置的保护块进行的在线编程,是无效的设置的保护块进行的在线编程,是无效的 2021/6/7 18 9.3.2 Flash9.3.2 Flash存储器在线编程擦写测试工程存储器在线编程擦写测试工程 测试测试FlashFlash的程序运行界面的程序运行界面 2021/6/7 19 命令命令 功能功能 ?MCUMCU向向PCPC发送一些使用说明发送一些使用说明 E:8擦除第擦除第8 8页页 R:8:0:4从第从第8 8页第页第0 0个字处读取个字处读取4 4个字节的内容个字节的内容 W:8:
30、0:4:A,C,B,D向第向第8 8页第页第0 0个字位置写个字位置写4 4个字节的数据个字节的数据ACBDACBD B:8,7,6,5,4,3,2,1设置设置FlashFlash后门密钥,密码为字符串后门密钥,密码为字符串8765432187654321 M:8,7,6,5,4,3,2,1验证验证FlashFlash后门密钥,密码为字符串后门密钥,密码为字符串8765432187654321 D密钥删除密钥删除 U加密解除加密解除 P:8块保护,保护第块保护,保护第8 8页至页至0 xFFFF0 xFFFF的地址的地址 串口调试工具操作串口调试工具操作FlashFlash的命令格式的命令格式
31、 2021/6/7 20 9.4 S08 Flash9.4 S08 Flash存储器的保护特性和安全性存储器的保护特性和安全性 9.4.1 S08 Flash9.4.1 S08 Flash存储器的保护特性存储器的保护特性 由于由于FlashFlash是非易失性存储器,所以编程人员一般会将一是非易失性存储器,所以编程人员一般会将一 些重要参数或数据存于些重要参数或数据存于FlashFlash。为了防止对这些重要数据区。为了防止对这些重要数据区 的误擦写,的误擦写,S08S08芯片提供了对芯片提供了对FlashFlash的保护机制。如果一个的保护机制。如果一个 FlashFlash区域被保护,那么
32、是不能对这块区域进行任何擦写的。区域被保护,那么是不能对这块区域进行任何擦写的。 9.4.2 S08 Flash9.4.2 S08 Flash存储器的安全性存储器的安全性 设置设置MCUMCU为保密状态为保密状态 为了防止为了防止FlashFlash中的程序被非法读中的程序被非法读 出,就要将出,就要将MCUMCU设置为保密状态,下设置为保密状态,下 面提供两种加密面提供两种加密FlashFlash方法方法 安全状态安全状态 2021/6/7 21 l方法一方法一 通过修改文件通过修改文件isr.cisr.c文件中的安全配置域(即修改文件中的安全配置域(即修改FOPTFOPT寄寄 存器,地址存
33、器,地址0 xFFBF0 xFFBF的值和密钥地址的值和密钥地址0 xFFB0 0 xFFB70 xFFB0 0 xFFB7的值)的值) 实现加密。例如,若要设置密码实现加密。例如,若要设置密码0 x31323334353637380 x3132333435363738, 则只要将这则只要将这8 8字节数据依次写到地址字节数据依次写到地址0 xFFB00 xFFB00 xFFB70 xFFB7处即处即 可,该密码即为字符串可,该密码即为字符串“1234567812345678” l方法二方法二 在程序运行中,通过调用自定义函数在程序运行中,通过调用自定义函数Flash_SecureFlash_Secure修改修改 FlashFlash相关地址处的内容来加密相关地址处的内容来加密FlashFlash。通过修改。通过修改NVOPTNVOPT地地 址的内容,复位后,该寄存器的值将自动载入址的内容,复位后,该寄存器的值将自动载入FOPTFOPT中中 2021/6/7 22 解除解除MCUMCU的保密状态的保密状态 l 方法一:通过将写入器的方法一:通过将写入器的BDMBDM接口,对已经加密的芯片进行整体擦除接口,对已经加密的芯片进行整体擦除 l 方法二:在芯片中驻留擦除密码或擦除方法二:在芯片中驻留擦除密码或擦除FlashFlash的操作接口,通过调用的操作接口,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目可行性研究论文
- 2026学年黑龙江省穆棱市四年级数学期末点睛提升高分特训题详细参考解析详细答案和解析
- 【《“种草式”营销对女性消费者购买产品影响的研究-以小红书为例(附问卷)》19000字(论文)】
- 2026年安全知识安全生产知识竞赛-地铁安全知识竞赛历年参考题库含答案解析
- 2026年大学试题(财经商贸)-农村电子商务历年参考题库含答案解析
- 2026天津市医疗卫生系统招聘考试(急诊医学)历年参考题库含答案详解
- 2026医技类-心电学技术(正高)111历年题库含答案详解
- 2026事业单位工勤技能-甘肃-甘肃家禽饲养员五级(初级工)历年参考题库含答案详解
- 2026上海市教师招聘考试(地理)历年参考题库含答案详解
- 2026年盐亭县网格员招聘笔试模拟试题及答案解析
- 儿童功能性腹痛诊疗指南
- 安徽省省十联考2027届高三上学期第一次教学质量测评物理试卷(含答案)
- 【小学】【秋季上】高年级【信息技术】开学第一课【课件】
- 2026年学习教育工作总结
- SG-CIM模型建设与实践
- 学生传染病请假制度
- 2025年10月自考13174概率论与数理统计(工).试题及答案
- 景区观光车驾驶员初级考试试卷与答案
- 服装面料采购合同协议书范本
- T/CTRA 01-2020废轮胎/橡胶再生油
- 医院安全管理协议书
评论
0/150
提交评论