STM32 ECC校验的一些心得

1 篇文章 0 订阅
订阅专栏

STM32 ECC校验的一些心得

 

 

       STM32的FSMC功能支持SRAM,NOR FLASH,NAND FLASH,是非常方便的。

当然,要STM32F103VC及以上的芯片才支持FSMC功能的。

   在此写下一些调试使用FMMC调试NAND FLASH的心得及总结,方便以后回顾,也便于大家一起交流学习。

在这里重点写下的是调试ECC这个功能。

 使用的NAND FLASH芯片是K9F2G08U0C

     芯片大小是2Gbit,也就是容量256MB。一块64页,一页2K字节

     一页2048字节,其中,OOB区64字节。

     当然,要能正常使用ECC功能,NAND_FLASH的读写正常是前提。这里不作介绍。要ST公司提供的例子里有NAND_FLASH的读写例子,一般可参照其配置再结合自己实际使用的NAND_FLASH芯片及电路设计修改。

   保证了能正常读写页功能,以及读写OOB区数据功能,即可继续调试ECC了。

   以下这段话就是来自STM32FSMC使用手册里关于ECC的介绍

 

   The FSMC NAND Flash controller includes two pieces oferror correction code computation

hardware, one for each NANDFlash memory block.

The ECC can be performed forpage sizes of 256, 512, 1024, 2048, 4096 or 8192 bytes,

depending on the ECCpage sizeconfigured by the user. Depending on the configured page

size, the ECC code will be 22,24, 26, 28, 30 or 32 bits.

To even improve the errorcoverage, the user can read/write the NAND Flash page with a

reduced ECC page size. This ispossible when starting and stopping the ECC computation

after the desired number ofbytes to check. In this case, the ECC code is only calculated for

the bytes written and read.

 

   这里就不讲太官方的介绍了。

比如我要使用ECC功能,每512个字节产生一个ECC数据,这样,当这512字节里出错有一位错误的时候,可以通过ECC来纠正。当然,如果错了几个位,就无法纠错了。虽然当两个位有错,也知道,但不知道是哪两个位出错,也纠正不了。所以,只要关心怎么找出错误,通过ECC怎么纠错。

 FSMC的ECC支持每256字节,512字节,1024,。。。8192字节产生一个ECC数据。

调试时使用每512字节产生一个ECC功能。

当写入512个字节时,产生一个ECC数据,然后,再读512个字节的时候,也会产生一个ECC数据,通过这两个数据相异或,产生一个ECC校验结果,通过这个判断结果,就可以分析出有没有错,错在哪里,是错哪一位。当然,知道哪一位错了,也就可以纠正了。

 

现在具体以实际的NAND_FLASH为例。

K9F2G08U0C这个芯片虽然是每页2048个字节,也就是4 个512字节。按理说直接使用每2048字节产生一个ECC即可校验,这样也方便一些。但因为实际使用中,是把这FLASH当作U盘来使用,并使用了fat32文件系统,将其作扇区处理了。一般扇区单位为512个字节。因此,这里就使用每512个字节产生一个ECC。

 

FSMC_NANDInitStructure.FSMC_Bank = FSMC_Bank2_NAND;

  FSMC_NANDInitStructure.FSMC_Waitfeature =FSMC_Waitfeature_Enable;

  FSMC_NANDInitStructure.FSMC_MemoryDataWidth =FSMC_MemoryDataWidth_8b;

  FSMC_NANDInitStructure.FSMC_ECC = FSMC_ECC_Enable;

 FSMC_NANDInitStructure.FSMC_ECCPageSize = FSMC_ECCPageSize_512Bytes;

  FSMC_NANDInitStructure.FSMC_AddressLowMapping= FSMC_AddressLowMapping_Direct;

  FSMC_NANDInitStructure.FSMC_TCLRSetupTime =0x00;

  FSMC_NANDInitStructure.FSMC_TARSetupTime =0x00;

 FSMC_NANDInitStructure.FSMC_CommonSpaceTimingStruct = &p;

  FSMC_NANDInitStructure.FSMC_AttributeSpaceTimingStruct= &p;

 

  FSMC_NANDInit(&FSMC_NANDInitStructure);

 

  /* FSMC NAND Bank Cmd Test */

  FSMC_NANDCmd(FSMC_Bank2_NAND, ENABLE);

 

  初始化主要为上述几句指令:

 FSMC_NANDInitStructure.FSMC_ECC =FSMC_ECC_Enable;

 FSMC_NANDInitStructure.FSMC_ECCPageSize = FSMC_ECCPageSize_512Bytes;

 

  然后在读写NAND_FLASH,即可读到ECC数据。

 

u32 write_ecc;

u32 read_ecc;

 for(i=0;i<512;i++)

 {

    buffer[i]=i%256;

 }

 

    FSMC_NANDECCCmd(FSMC_Bank2_NAND,ENABLE);

    FSMC_NAND_WritePage(buffer,0,512);

  while(FSMC_GetFlagStatus(FSMC_Bank2_NAND,FSMC_FLAG_FEMPT)==Bit_RESET);

   write_ecc = FSMC_GetECC(FSMC_Bank2_NAND);

   FSMC_NANDECCCmd(FSMC_Bank2_NAND,DISABLE);

//这是写入512个字节时候读ECC.

 

    FSMC_NANDECCCmd(FSMC_Bank2_NAND,ENABLE);

         FSMC_NAND_ReadPage(read,0,512);

   while(FSMC_GetFlagStatus(FSMC_Bank2_NAND,FSMC_FLAG_FEMPT)==Bit_RESET);

    read_ecc = FSMC_GetECC(FSMC_Bank2_NAND);

    FSMC_NANDECCCmd(FSMC_Bank2_NAND,DISABLE);

//这是读512个时候读取ECC

  

 要保证读取到正确的ECC数据,要在读之前先失能下ECC功能,把ECC数据清零,再使用ECC,然后再读或写NAND_FLASH。再读到相应的ECC。读ECC后记得把ECC失能,以清空ECC数据。

 

 

   这样就可以读到write_ecc了。当然,这个数据会读到的是0,为什么呢,所以很多时候我们测试数据,都是用比较有规律的数据去测试,下面通过几组数据,来解读下这个ECC的数据分析

 

 

 

 

 

for(i=0;i<512;i++)

  {

    buffer[i]=0x11;

  }

ECC: 0

 

 

 512个字节里,都是0x11的话,ECC数据是0。然后改变其中某个字节的某个位,再去读ECC看。

for(i=0;i<512;i++)

  {

    buffer[i]=0x11;

  }

buffer [0]=0x10;

ECC: 0x55555555

这是改了第一个字节的第一个位。(但习惯上从0开始比较习惯,改了第0个字节第0个位)

for(i=0;i<512;i++)

  {

    buffer[i]=0x11;

  }

buffer [0]=0x13;

ECC:0x55555556

改了第1个位

 

 

for(i=0;i<2048;i++)

  {

    buffer[i]=0x11;

  }

buffer [0]=0x15;

ECC:0x55555559

改了第2个位

 

 

for(i=0;i<2048;i++)

  {

    buffer[i]=0x11;

  }

buffer [0]=0x19;

ECC:0x5555555a

 

 

 

 

for(i=0;i<512;i++)

  {

    buffer[i]=0x11;

  }

buffer [511]=0x91;

ECC:0x55aaaaaa;

这里改了第4095个位,也就是(第511个字节的最高位,也就是512个字节里的最高一个位)

 

好了,有了以上这里数据,就可以开始解读了,就算找不到例子,只要你的NAND_FLASH读写正常了,能把这些看懂了,也就可以使用ECC功能了。

 

下面对这几个ECC数据进行解读。

 

 

解读前先看一下ECC结果寄存器。


   因为我们设置的是512个字节产生一个ECC。那么有效位是0到23。

 

 

也就是前面读到的ECC数据呢,只要低24位就可以了。

当然,从这里还能看出其它数据。最高是8192字节,占了32位,

4096字节占了30位。

这个规律就是从256字节开始,每增一倍字节数,ECC就多占用两个位。

按常理说,只要多一个位,就可以表示多一倍的数据了。但是要表示多一个数据,需要到两个位,那,这里就有点玄机了。

甚至不需要去理解或弄明白它使用是汉明码,什么BCH码,只要看明白下这里,一直可以纠错。因为,不要管它是什么纠错码,就跟着这个规律去理解。

512个字节的ECC用了24位,512个字节共有512*8=4096个位。要表示到4096个数,也就是刚好12位就可以了。所以,因此这里的玄机就是ECC数据里,用了2个位来表示一个位的数据。

这时,再看一下关于STM32 ECC的介绍。

When an erroroccurs during the write operation, this error is either correctable or

uncorrectabledepending on the ECC XOR operation:

● Case of acorrectable error

The ECC XORoperation contains 11-bit data at 1. And each pair parity is 0x10 or

0x01.

 

忘了说,我们这些测试数据呢,是以写入0x11为主,然后故意改错某一个位,再读出ECC。因为写入全部的是0x11,因此写入时产生的ECC是0x0。那么再将读出来的ECC与0x0异或,得到的,也就是ECC校验结果了。

当错第0个位的时候,校验结果是0x55555555。取低24位,也就是0x555555。

 

对应24位就是

010101010101010101010101

当错第1个位的时候,校验结果是0x555556(取低24位)

对应24位就是

010101010101010101010110

当错第2个位对应的24位是:

010101010101010101011001

当错第3个位对应的24位是:

010101010101010101011010

…………

当错第4095个位(也就是第511个字节的最高位) 校验结果:0xaaaaaa。

对应24位是:

101010101010101010101010

 

看到这里,大家估计很容易看出来规律了。

第0个位错误的24位数据解码出来12位就是:0000 00000000,也就是0x0,就是第0个位错误.

第1个位错误的24位数据解码出来12位就是:0000 00000001,也就是0x1,就是第1个位错误.

第2个位错误的24位数据解码出来12位就是:0000 00000010,也就是0x2,就是第2个位错误.

第3个位错误的24位数据解码出来12位就是:0000 00000011,也就是0x3,就是第3个错误.

第4095个位错误的24位数据解码出来12位就是:1111 11111111,也就是0xfff,就是第4095个位错误.

 

到了这一步,不知道有没有明白纠正原理呢。当知道是哪一个是错误的了,剩下的就简单了,就把错误的那一位把0变成1,或者把1变成0就行了。

可以写成一个函数,ecc_data为校验结果。

 

intcheck_ecc(u32 ecc_data)

{

  u32 temp;

  int i;

  u8 data4;

  u32 location=0;

  temp=ecc_data&0xffffff;//只要24位

 

 

  for(i=0;i<24/2;i++)

    {

     data4=(temp>>(i*2))&0x3;

     if(data4==0x01)

        {

        // 如果两位是0x01,则判断是0

        }

     else if(data4==0x02)

        {

         // 1 如果两个是0x10,则判断是1

         location|=(1<<i);

        }

     else

        {

        // 如果不是两种其一,刚说明无法纠错

                   // 既然无法纠错,其它的,就暂时不关心了

         return -1;

        }

     printf("location:%d..\r\n",location);

 

    }

  return location;

 

}

 

 

当然,如果校验结果为0x00的时候,说明读出来的数据是对的。不需要调用这个函数了。调用这个函数时,就可以返回错误的位置。

到此,ECC的功能就调试的差不多了。剩下的,就是把那一位纠错出来就好了。重要的ECC校验结果出来了,知道是哪一位错误了,剩下的还不好办了。

 

对于NAND_FLASH呢,具体就可以这样实现了。

一页是2048个字节加OOB的64个字节。

OOB区一般是存放ECC数据,一般如果写到跑系统的是,用设计ECC layout的。

这里就简单作个layout吧。简单地说,就是把ECC放在哪里。

因为这里每512个字节, 产生一个ECC,占4个字节。

第1 个512字节产生的ECC就放到OOB区里的0x10,0x11,x12,0x13这四个地址里。

第2 个512字节产生的ECC就放到OOB区里的0x14,0x15,x16,0x17这四个地址里。

第3 个512字节产生的ECC就放到OOB区里的0x18,0x19,x1a,0x1b这四个地址里。

第4 个512字节产生的ECC就放到OOB区里的0x1c,0x1d,x1e,0x1f这四个地址里。

    

     这样,ECC layout就算是设置好了。因此只要在写入的时候,把ECC相应地存入到OOB区,然后在读NAND_FLASH的时候,再读新的ECC数据,和之前写入到OOB里的ECC进行异或,得到ECC校验结果。那,ECC的调试,就算告个段落了。

如果有错误之处,还请见谅。

特此写下以便日后可以回顾,而且网上涉及的也比较少,写出来也让感兴趣的人一起交流学习。


另外,测试用到的nand_flash驱动测试ECC,及FSMC英语文档上传到了我的CSDN,如果不够积分下载,可在评论里写下邮箱

http://download.csdn.net/detail/beyehz/8066085

 

STM32 ECC校验的调试及心得
10-21
本文将深入探讨STM32在使用FSMC(Flexible Static Memory Controller)接口与NAND Flash通信时,如何实现ECC校验的调试过程以及相关心得FSMCSTM32系列微控制器中的一种扩展接口,它可以连接多种类型的外部...
单片机如何使用错误保护代码(ECC)管理实现内存保护
MUKAMO的博客
04-28 1728
数学家Richard Hamming发明了第一个ECC。原始的汉明码使用7位存储4位信息,使用冗余位进行错误校正和检测。在arm核MCU设备中,所选的RAM和闪存存储器使用基于汉明原理的SEC-DED算法进行保护,但通过增加一个额外的奇偶校验位进行了改进。ECC代码能够检测并纠正单个位错误,并检测存储数据字中的双位错误。在SRAM易失性存储器中,一个迷路的α粒子可能会使位值翻转。这是一个持续的威胁,且不论硬件年龄大小,单比特故障的概率都是一样的。
STM32 H743 ECC内存相关使用说明笔记
一只爱做笔记的码农
01-11 2843
目的 刚好有需要用到H743的这方面内容,截取核心内容,翻译看看。 参考文档 【ST官方】H743 参考手册-英文版V7.0【中文版的尚未更新ECC内存相关内容,建议直接看英文的】 【ST官方】H743 ECC内存管理应用手册[编号AN5342] H7系列的芯片都是支持ECC【内存纠错】的,算法是SEC-DED 啥是ECC内存请自行百度~ 支持情况汇总 数据来自ST的AN5342 原文如下: CPU系列 支持情况 H7X5 H7X7 SRAM,I/D Cache都支持ECC保护,
ECC校验原理以及在Nand Flash中的应用
LouisYu的博客
01-13 6947
汽车功能安全
NAND FLASH ECC校验原理与实现
热门推荐
嵌入式系统,linux,存储
07-20 4万+
参考文档: http://blogimg.chinaunix.net/blog/upfile2/080702112233.pdfNANFLASH ECC校验原理与实现ECC简介  由于NANFlash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。为了检测数据的可靠性,在应用NANFlash
ECC校验
weixin_42116023的博客
04-21 6551
ECC(Error Correction Code,纠错码)是一种用于检测和纠正数据传输中错误的编码技术。在数据传输过程中,由于各种原因(如噪声、干扰等),数据可能会发生错误,导致传输的数据不完整或不准确。为了避免这种情况的发生,通常会使用ECC技术来对数据进行编码和检测。
【汽车功能安全】ECC校验原理
TommiWei的博客
07-22 2850
一文读懂ECC校验理解
ECC校验——汉明码(Hamming Code)
agility9527的博客
01-19 2万+
前言  本文主旨意在讲清如何根据原理构造常用的汉明码,鉴于本人在网络查阅资料过程翻阅大量低效/无效文章,特记录如下内容。前篇主要表明如果最简单直接构造汉明码,后续在了解汉明码具体校验原理的情况下,将会补录其内容。 1. 概念性解释  Error Correcting Code (ECC)校验码。  汉明码(Hamming Code)通用常用于各类Memory中纠正/检测single bit,检测double bits错误。根据结果类型可分为: .
STM32F103单片机串口2带奇偶校验
10-13
在这个项目中,我们将聚焦于如何在STM32F103C8T6上配置串口2以实现带奇偶校验的通信。 串口通信是一种常见的设备间数据传输方式,它通过简单的TX(发送)和RX(接收)引脚进行全双工通信。在STM32F103单片机中,有...
STM32例程CRC校验
02-25
STM32F107内部集成了硬件CRC单元,可以高效地执行CRC校验,无需CPU介入,提高系统的实时性和效率。 CRC校验的基本原理是利用多项式除法。每个数据块都可以看作是一个二进制数,而CRC计算是用一个固定的生成多项式去...
32bit ecc纠错verilog代码 输入数据位宽为32位,生成6位纠错码,内含仿真文件
04-14
32bit ecc纠错 输入数据位宽为32位,生成6位纠错码,内含仿真文件,适用于需要ecc纠错的数字工作者
CRC-16_crc16校验stm32_
10-02
STM32中,硬件CRC模块可以进行CRC-16校验,无需软件干预,提高计算速度并减轻CPU负担。 在"labview 编写RS485 CRC16校验"的场景中,LabVIEW是一款由美国国家仪器(NI)公司开发的图形化编程语言,常用于测试测量...
stm32h743 ECC.pdf
10-26
This document describes the error correction code (ECC) management and implementation on STM32H7 Series. This application note describes both hardware and software aspects linked to the ECC mechanism ...
深入浅出NandFlash里的ECC校验算法原理与实现(2)
飞临云的博客
12-15 7854
上一篇:深入浅出NandFlash里的ECC校验算法原理与实现(1) 距离笔者写上篇关于ECC校验已经过去7个月,本来是不打算填坑的,但是看上篇还是有一些人收藏的,鉴于此,打算把ECC校验源码实现解析补全。看了很多篇解析,大部分出自同一篇。但是笔者认为都没有把原理完完全全写清楚。这篇文章也是想了很久才下笔,希望把源码中的原理与思路彻底讲透,个人认为,把一个东西原理讲清楚相对比较简单,但是想把思路讲清楚,很难很难。 LINUX-2.6.27中ECC
STM32加密库—ECC,ECDSA相关
忧愁的awe的博客
11-22 5832
STM32加密库——ECDSA签名及其认证
【宝藏系列】一文带你了解STM32内置的硬件功能安全属性
ws15168689087的博客
08-31 8111
而触发“刹车”功能的输入信号,既可以是来自MCU内部的系统级故障(比如CSS检测到的时钟失效,SRAM的奇偶校验错误等),也可以是连接到特定引脚的外部信号。ECC 检测在读操作时进行,当检测到一个比特位的错误时,读出来的数据就是已经纠正后的数据,当检测到两个比特位的错误时,ECC 无法纠正,但是可以告诉应用程序该位置的数据有错。定时器PWM输出的“刹车”功能,它的目的是保护由PWM信号驱动的功率开关,就是当系统出现故障时,可以触发该功能,关闭PWM输出,保证系统处于安全状态。
STM32下FatFs的移植,实现了坏块管理,硬件ECCECC纠错,并进行擦写均衡分析
木牛的博客
08-31 2936
最近因项目需要,做一个数据采集的单片机平台。需要移植 FatFs 。现在把最后成果贴上来。 1、摘要 在 STM32 单片机上,成功移植 FatFs 0.12b,使用的 Nand Flash 芯片为 K9F2G08 。 特点: 系统配合 FatFs 实现了坏块管理,硬件ECC,软件 ECC 纠错 2、代码分析 2.1、擦写均衡分析 在create_chain 函数中实现,每次分配都由当前scl 指向的 free cluster 开始,逐块检查,是否有可用 cluster 存在。如果没...
校验--ECC详细分析
weixin_39512905的博客
05-09 1628
以下是针对的应用的ECC检测的详细分析。当前公认安全有效的三大类公钥密钥体制分别为基于和难题的密码体制。保证RSA的安全性,则必须要增加密钥长度,所以我们可以看到RSA密钥由于汽车网络安全近几年才兴起,专为密钥存储设计的硬件资源有限,如果用RSA算法,密钥存储数量有限,而的出现有效弥补了这方面的缺憾,实现了密钥效率上的突破,根据NIST.SP.800-57pt1r5描述,对称算法和非对称算法的安全强度。可以看到,所以目前,汽车行业越来越倾向使用ECC来实现验签、会话密钥协商等。
小米电机与STM32——CAN通信
最新发布
doudou2weiwei的博客
10-12 1806
背景介绍:为了利用小米电机,搭建机械臂的关节,需要学习小米电机的使用方法。计划采用STM32驱动小米电机,实现指定运动,为此需要了解他们之间的通信方式,指令写入方法等。花了很多时间学习,但网络上相关资料很少,且对于我这类基础一般的同学,注释不够详细。为此,我认真研读了电机的说明书,参考相关的博文,实现了电机的CAN通信,特作此记录。
写文章

热门文章

  • STM32 ECC校验的一些心得 6981

分类专栏

  • 嵌入式 单片机 1篇

最新评论

  • STM32 ECC校验的一些心得

    beyehz: 计算ECC还是始终按字节处理。数据无非就是一堆的字节数据进行的运算。这个已经很多年没有搞STM32 NAND FLASH了。更多的细节也没有去研究,不过,原理都差不多的。

  • STM32 ECC校验的一些心得

    beyehz: 一般来说,ECC纠错能力,主要是看多少字节能纠正多少个BIT的能力。比如BCH4,BCH8之类的。像文中说的,是512个字节,纠错一个BIT。更多指的是数据纠错能力。

  • STM32 ECC校验的一些心得

    小西天西小: 博主你好,请问一下,如果nand flash的数据宽度为16bit,计算ecc是按照半字来还是字节?

  • STM32 ECC校验的一些心得

    qq_19582165: 博主你好,不够积分下载,麻烦发我邮箱: a1@teels.uu.me 万分感谢!

  • STM32 ECC校验的一些心得

    beyehz: 没有Flash平台这一说。。原始的NAND FLASH是不自带ECC等校验的,都是直接的FLASH操作,直接是物理层的操作。像eMMC之类的,就是芯片带有一定的处理,不需要CPU处理的。 不然,像NAND FLASH,只能是直接物理层操作的,都需要由CPU考虑ECC校验,甚至是磨损均衡处理,也就是所谓的加一层逻辑层。 这也就是我们常说的物理扇区和逻辑扇区了。

大家在看

  • 化学仿真软件:Aspen Plus二次开发_物料与反应物性数据管理
  • 化学仿真软件:Aspen Plus二次开发_自定义模型开发
  • 985研一学习日记 - 2024.10.20
  • Redis学习:入门介绍、安装配置、10大基本类型之String
  • 化学仿真软件:Aspen Plus二次开发_AspenPlus脚本编写

最新文章

2014年1篇

目录

目录

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢雕塑价格有回收广州玻璃钢花盆生产厂家玻璃钢大公鸡雕塑厂家银川景区玻璃钢雕塑定做西藏玻璃钢解放军现代人雕塑厂家广元玻璃钢雕塑摆件施工方法山西佛像玻璃钢雕塑市场河源玻璃钢景观雕塑材料临汾玻璃钢雕塑厂家玻璃钢人物雕塑哪家实力强福州玻璃钢天壶雕塑广东季节性商场美陈供应晋城园林玻璃钢仿铜雕塑邢台玻璃钢雕塑厂商定制安徽景区玻璃钢雕塑广东宜春玻璃钢花盆供应商北宁玻璃钢花盆花器株洲大象玻璃钢雕塑苏州玻璃钢雕塑摆件供货商清镇玻璃钢雕塑制作哪家好河南常见商场美陈生产公司模压型玻璃钢花盆卡通美女玻璃钢雕塑北京玻璃钢雕塑批发市场中山玻璃钢雕塑销售厂沈阳大型玻璃钢雕塑造型深圳中庭商场美陈玻璃钢花盆费用玻璃钢楼盘景观雕塑贵阳多彩玻璃钢雕塑订做价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化