imx8qm wifi sdio调试

20 篇文章 23 订阅
订阅专栏

imx8qm平台用的是有WIFI和BT功能的Murata 芯片,型号是LBEE6U41LQ,WIFI采用sdio接口,由WL_EN控制上电;BT是UART1接口,由BT_EN控制上电;

一.硬件原理

二.引脚信息

/* bt enable*/
				SC_P_USDHC2_VSELECT 
/* uart1 */
				SC_P_UART1_RX
				SC_P_UART1_TX
				SC_P_UART1_CTS_B
				SC_P_UART1_RTS_B

/* wifi */
				SC_P_SPI2_SDO   // IRQ gpio3 8
				SC_P_USDHC2_RESET_B    //ENABLE gpio4 9
				/* USDHC2 SDIO*/
				SC_P_USDHC2_CLK
				SC_P_USDHC2_CMD
				SC_P_USDHC2_DATA0
				SC_P_USDHC2_DATA1
				SC_P_USDHC2_DATA2
				SC_P_USDHC2_DATA3

三.问题描述

1.SDIO扫描不到设备,wifi起不来,加打印如下,四个频率都扫描不到。

2.wifi enable脚正常情况如下,基本上不会出现掉电:

3.不正常情况在scan sdio时wifi enable脚被拉低7s左右。

四.分析过程

(1)SDIO扫描原理:

1.drivers/mmc/core/core.c -->mmc_rescan,在4个频率下扫描设备(400kHZ,300kHZ,200kHZ,100kHZ)

void mmc_rescan(struct work_struct *work)
{
        struct mmc_host *host = container_of(work, struct mmc_host, detect.work);
        int i;

        if (host->rescan_disable)
                return;
                
        for (i = 0; i < ARRAY_SIZE(freqs); i++) {
                if (!mmc_rescan_try_freq(host, max(freqs[i], host->f_min)))
                {
                        printk("%s freq[%d] OK!\n",__func__,freqs[i]);
                        break;
                }
                if (freqs[i] <= host->f_min)
                        break;
        }

2.drivers/mmc/core/core.c  --> mmc_rescan_try_freq ,在扫描前先发个sdio_reset(CMD52)命令,只有sdio设备会有响应,之后按照sdio(CMD5),sd,mmc的顺序扫描,一旦扫到立即返回

static int mmc_rescan_try_freq(struct mmc_host *host, unsigned freq)
{
        host->f_init = freq;

        /*
         * sdio_reset sends CMD52 to reset card.  Since we do not know
         * if the card is being re-initialized, just send it.  CMD52
         * should be ignored by SD/eMMC cards.
         * Skip it if we already know that we do not support SDIO commands
         */
        if (!(host->caps2 & MMC_CAP2_NO_SDIO))
                sdio_reset(host);

        mmc_go_idle(host);

        if (!(host->caps2 & MMC_CAP2_NO_SD))
                mmc_send_if_cond(host, host->ocr_avail);

        /* Order's important: probe SDIO, then SD, then MMC */
        if (!(host->caps2 & MMC_CAP2_NO_SDIO))
                if (!mmc_attach_sdio(host))
                {
                        printk("%s line=%d\n",__FUNCTION__,__LINE__);
                        return 0;
                }

        if (!(host->caps2 & MMC_CAP2_NO_SD))
                if (!mmc_attach_sd(host))
                        return 0;

        if (!(host->caps2 & MMC_CAP2_NO_MMC))
                if (!mmc_attach_mmc(host))
                        return 0;

        mmc_power_off(host);
        return -EIO;
}

3.如果成功检测到设备,便会进行后续的mmc_sdio_init_card和mmc_add_card及sdio_add_func,进行建立设备节点等操作。

检测到设备的check方式:

查看节点             

查看开机kernel log        [    8.382000] mmc0: new SDIO card at address 0001

/*
 * Starting point for SDIO card init.
 */
int mmc_attach_sdio(struct mmc_host *host)
{
        int err, i, funcs;
        u32 ocr, rocr;
        struct mmc_card *card;

        printk("%s line=%d\n",__FUNCTION__,__LINE__);

        WARN_ON(!host->claimed);
.....
        err = mmc_sdio_init_card(host, rocr, NULL, 0);
        ......
               for (i = 0; i < funcs; i++, card->sdio_funcs++) {
#ifdef CONFIG_MMC_EMBEDDED_SDIO
                if (host->embedded_sdio_data.funcs) {
                        struct sdio_func *tmp;

                        tmp = sdio_alloc_func(host->card);
                } else {
#endif                 
             printk("%s line=%d\n",__FUNCTION__,__LINE__);
                err = sdio_init_func(host->card, i + 1);
                    if (err)
                    goto remove;
            }
        mmc_release_host(host);
        err = mmc_add_card(host->card);
        if (err)
                goto remove_added;

        /*
         * ...then the SDIO functions.
         */
        for (i = 0;i < funcs;i++) {
                err = sdio_add_func(host->card->sdio_func[i]);
                if (err)
                        goto remove_added;
        }
        }

4.接下来将读取sdio CIS值并打印出来。

sdio_init_func

  ---->sdio_read_func_cis(func);

       ----->sdio_read_cis

(2)分析过程

1.首先wifi enable脚入手,原本一直以为是DPU资源调换过来后引起uhsdc3 clock有问题了,后面通过各种对比试验定位到问题在fsl-imx8qm-mek-domu.dts里面。

wifi_en脚是gpio4 9,dts如下:

		pinctrl_wifi: wifi {
			fsl,pins = <
				SC_P_USDHC2_RESET_B_LSIO_GPIO4_IO09 0x18000000
				SC_P_SPI2_SDO_LSIO_GPIO3_IO08 		0x1E000000

			>;
		};

发现pcie也用了USDHC2_RESET_B这个脚:

	pinctrl_pciea: pcieagrp{
			fsl,pins = <
				SC_P_PCIE_CTRL0_CLKREQ_B_LSIO_GPIO4_IO27	0x06000021
				SC_P_PCIE_CTRL0_WAKE_B_LSIO_GPIO4_IO28		0x04000021
				SC_P_PCIE_CTRL0_PERST_B_LSIO_GPIO4_IO29		0x06000021
				SC_P_LVDS1_I2C0_SDA_LSIO_GPIO1_IO13		0x06000000
				SC_P_USDHC2_RESET_B_LSIO_GPIO4_IO09		0x06000021
			>;
		};
&pciea {
	ext_osc = <1>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pciea>;
	disable-gpio = <&gpio1 13 GPIO_ACTIVE_LOW>;
	reset-gpio = <&gpio4 29 GPIO_ACTIVE_LOW>;
	clkreq-gpio = <&gpio4 27 GPIO_ACTIVE_LOW>;
	epdev_on-supply = <&epdev_on>;
	status = "disabled";
};

			epdev_on: fixedregulator@100 {
				compatible = "regulator-fixed";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "epdev_on";
				gpio = <&gpio4 9 0>;
				enable-active-high;
			};

最后解决方法就是注释掉整个pciea的dts。

mmc2所有打印信息如下:

[    1.155040] sdhci: Secure Digital Host Controller Interface driver
[    1.155054] sdhci: Copyright(c) Pierre Ossman
[    1.155143] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.203808] mmc2: CQHCI version 5.10
[    1.203854] enable-sdio-wakeup ok
[    1.203881] sdhci-esdhc-imx 5b030000.usdhc: assigned as wifi host
[    1.204884] mmc_rescan line=2748
[    1.211333] mmc_attach_sdio line=1136
[    1.250588] mmc2: SDHCI controller on 5b030000.usdhc [5b030000.usdhc] using ADMA
[    1.255110] mmc_rescan line=2748
[    1.255132] mmc2: mmc_rescan_try_freq: trying to init card at 400000 Hz
[    1.264293] Galcore version 6.2.4.190076
[    1.269699] mmc_attach_sdio line=1136
[    1.272419] sdio_read_cis line=239
[    1.280186] mmc2: queuing unknown CIS tuple 0x80 (2 bytes)
[    1.282545] random: fast init done
[    1.285154] mmc2: queuing unknown CIS tuple 0x80 (7 bytes)
[    1.289261] mmc2: queuing unknown CIS tuple 0x80 (6 bytes)
[    1.300245] mmc2: queuing unknown CIS tuple 0x80 (31 bytes)
[    1.303460] mmc2: queuing unknown CIS tuple 0x80 (7 bytes)
[    1.312601] mmc2: queuing unknown CIS tuple 0x80 (25 bytes)
[    1.319569] mmc_rescan freq[400000] OK!
[    1.321768] mmc2: queuing unknown CIS tuple 0x80 (25 bytes)
[    1.369956] sdio_init_func  line=86
[    1.369979] sdio_read_func_cis line=377
[    1.369989] sdio_read_cis line=239
[    1.371074] sdio_init_func line=86
[    1.371086] sdio_read_func_cis line=377
[    1.371095] sdio_read_cis line=239
[    1.372121] sdio_init_func line=86
[    1.372132] sdio_read_func_cis line=377
[    1.372141] sdio_read_cis line=239
[    1.373259] mmc2: new high speed SDIO card at address 0001
[    1.373610] mmc_rescan_try_freq line=2643
[    1.373622] mmc_rescan freq[400000] OK!

Nvidia Xavier Nx平台sdio WiFi模块调试记录
jzwjzw19900922的博客
01-05 1025
1. 前言 使用WiFi板与Jetson Xavier NX模块连接调试。 模块是BCM43455模块,使用的是SDIO接口。 dts定义如下: sdhci@3440000 { #address-cells = <1>; #size-cells = <0>; compatible = "nvidia,tegra194-sdhci"; reg = <0x0 0x3440000
imx8qm lsio-pwm*和mipi-pwm内核patch
12-15
imx8qm内核dts中如果未对lsio-pwm*和mipi-pwm做适配,可参见patch中修改,已在5.10.35和5.15.74的内核中验证。 下面是lsio_pwm2的使用方法: &lsio_pwm2 { pinctrl-names = "default"; pinctrl-0 = ; status = ...
linux imx6 sdio wifi,Solved: iMX6 WiFi on SDIO - NXP Community
weixin_42508792的博客
05-14 243
Hello, Rory,I tested a wifi module based on BCM4330, configuration and log for you as a reference:(1)Configurations in BSP...#define QCOREIN_WIFI_DET IMX_GPIO_NR(1, 4).../*SD2 is for WIFI & BT and...
MODBUS-功能码详解
Stephen_yu的专栏
09-28 4181
转自https://blog.csdn.net/xiaoluoshan/article/details/73233955 —————————————————————————————————————————————————————— ———————————————————————————————————————————————————————— ...
SDIO wifi驱动框架
最新发布
yangzhipengyzp的博客
04-14 1199
SDHC:Secure Digital(SD) Host Controller,是指一套sd host控制器的设计标准,一般挂载sd和sdio设备,隶属于mmc子系统,其寄存器偏移以及意义都有一定的规范,并且提供了对应的驱动程序,方便vendor进行host controller的开发。Linux内核使用 net_device结构体表示一个具体的网络设备,网络驱动的核心就是初始化net_device 结构体中的各个成员变量,然后将初始化完成以后的net_device 注册到 Linux内核中。
Marvell 88w8686 SDIO wifi
黄仁军的专栏
04-19 9198
http://yk8900.blog.163.com/blog/static/123183544201099115355124/     <br />             How to setup Marvell 88w8686 SDIO wifiOverview of How-To<br />This How-To is meant to be a starting point for people to learn setup the wifi on IGEP v2 devices as quick
[RK3399] SDIO 接口 Wifi 驱动流程分析 (AP6354)
Stephen_yu的专栏
12-04 4707
https://blog.csdn.net/mmmccc000/article/details/73322637 Platform: RockChip  OS: Android 6.0  Kernel: 4.4  WiFi/BT/FM 模组: AP6354 前面的基本概念搜罗于网络;  后面的驱动流程分析是根据 RockChip 3399 的 Kernel 部分来进行分析的。   基本...
sdio stm32理解 205 sdio调试 stm32f205
假不假,生来只为写代码
03-01 1227
sdio stm32理解空间sdio理解,sdio是一种总线,与USB类似,1.CMD线是双向的,上面传输的是命令,host向device发命令,device 响应host的数据都是在CMD线上传输的2.mmc_host为是主机数据结构,描述主控制器host初初化主机,sdhci_s3c_probe(),有没有SD设置,都不受影响。主要是对mmc_host结构时行设置。3.rescan(host)...
linux imx6 sdio wifi,关于ATWILC1000 wifi模块在imx6q上SDIO接口驱动调试
weixin_35871529的博客
05-14 497
SDIO总线和USB总线类似,SDIO总线也有两端,其中一端是主机(HOST)端,另一端是设备端(DEVICE),采用HOST- DEVICE这样的设计是为了简化DEVICE的设计,所有的通信都是由HOST端发出命令开始的。在DEVICE端只要能解溪HOST的命令,就可以同HOST进行通信了。SDIO接口类似于USB接口,如果了解USB接口调试SDIO也就不难了。首先说一下如何添加驱动:我使用的l...
IMX8qm + Android WIFI
weixin_41791581的博客
02-26 1336
目录 一 Linux端配置usdhc接口 二 Android端配置usdhc3 三 问题 imx8qm支持xen特性,可以在一块板子上运行两个系统(Linux+Android),但是资源只有一份,所以,在调试的过程中要特别注意资源的分配, linux使用的设备树文件为dom0,Android使用的设备树为domu 接下来我就记录一下我在调试的过程中遇到的问题 一 Linux端配置usdhc接口 wifi设备使用sdio接口与cpu通信,首先检查Android系统的默认资源里有没有wifi所使用
imx8qm_images.tar.gz
07-22
- fsl-imx8qm-mek.dtb - Image - imx8-boot-sd.bin - mkimg.commit - mx8qm-mek-scfw-tcm.bin - mx8qm-val-scfw-tcm.bin - mx8qm-a0-ddr4-scfw-tcm.bin - mx8qm-a0-mek-scfw-tcm.bin - mx8qm-a0-val-scfw-...
imx8 android平台 es8316驱动调试
02-10
移植调试 es8316 audio 驱动文件以及链接 platform/cpu dai/machine/code/通路,跟进 PlayBack 与 capture 录音流程,解决一个喇叭没 有声音、录音 apk 噪音大的问题;了解 audio json 文件的配置以及 pcm open ...
iMX8QM_RM_Rev_E-芯片手册.pdf
08-25
NXP IMX8qm 芯片手册,官网找很久都找不到。对芯片框架,寄存器等详细用法详细描述。驱动开发必备。
iMX6q 音频系统调试.docx
11-27
Linux ALSA声卡驱动 全部声卡驱动文档资料介绍 Linux ALSA声卡驱动之一 Linux ALSA声卡驱动之二,Linux ALSA声卡驱动之三,Linux ALSA声卡驱动之四
max9286+max96705摄像头调试--基于imx8qm
热门推荐
nancy的专栏
06-15 1万+
一.硬件原理 1.原理图 2.引脚信息 /* max9286 */ SC_P_MIPI_DSI0_GPIO0_00 摄像头电源power-gpios SC_P_MIPI_CSI0_MCLK_OUT 摄像头信号触发,需要26HZ的pwm,gpi-gpios SC_P_ADC_IN0 pwn-gpios /* i2c */ SC_P_MIPI_CSI0_I2C0_SDA
imx8qm LVDS屏 DS90UB9478调试
nancy的专栏
03-27 7241
1.947驱动是根据parade-ps8622.c改编的,电源由于pmic的ldo无法输出1.8v电源,改飞线。 2.改编后发现报错 定位代码位置 vendor\nxp-opensource\kernel_imx\drivers\gpu\drm\imx\nwl_dsi-imx.c imx_nwl_dsi_bind函数 最终死在 kernel去掉CONFIG_DRM_IM...
USB HOST和device切换原理--基于imx8qm
nancy的专栏
03-27 6706
USB_HOST_GADGET_SWITCH 相关文件 kernel_imx\arch\arm64\boot\dts\freescale\fsl-imx8qm-mek-domu.dts: 如果开机固定为host模式,只需修改dr_mode = “host”;如果需要OTG功能切换,底层是根据ID PIN引脚的高低电平进行判断(host device),软件上通过otgsc register判断。...
编译Android8.1.0. AOSP遇到的问题(Communication error with Jack server)(Out of memory error)
nancy的专栏
07-10 5588
编译AOSP遇到的问题权限遭拒 由于博客使用了外部硬盘作为out编译输出,make时提示Permission is denied。这时换成sudo make即可。使用外部磁盘做out输出:export OUT_DIR_COMMON_BASE=/media/username/外部磁盘路径/out内存不足 由于笔者的内存只有4G,并且最开始没有分出swap分区,导致多次内存不足编译失败,有多种日志形式...
imx rt1050 无法调试
07-03
### 回答1: IMX RT1050是一款功能强大的微控制器,但在调试时遇到问题可能是由以下原因引起的: 首先,调试的问题可能是硬件方面的。请确保IMX RT1050与调试工具之间的连接正确。检查调试工具的电源和连接电缆是否正常工作。还应该确保调试接口的引脚连接正确,例如JTAG或SWD。 其次,调试问题可能是由于软件设置不正确引起的。请检查您使用的调试工具和软件是否兼容IMX RT1050。确保调试配置文件正确设置,例如调试工具与目标设备的设备选项、时钟频率等。还应该检查是否有正确的调试固件和驱动程序。 另外,调试问题还可能是由于代码错误引起的。请仔细检查代码逻辑和语法错误,确保没有悬空指针、内存溢出等问题。可以使用调试工具中的断点和变量监视功能来帮助定位代码错误。 最后,如果以上方法都无法解决调试问题,建议参考IMX RT1050的官方文档和论坛,寻求更多的技术支持和解决方案。厂商可能会提供一些特殊的调试工具或技巧,帮助您解决调试问题。 综上所述,如果无法调试IMX RT1050,您可以从硬件、软件和代码三个方面进行排查和调试。及时仔细检查各个环节,并参考官方文档和论坛,以找出并解决问题。 ### 回答2: 对于imx rt1050无法调试的问题,有以下几个可能的原因和解决方法: 1. 连接问题:首先要确保你的开发板与计算机正确地连接。检查USB连接线是否插入正确,尝试更换USB线,或者使用不同的USB接口。还可以尝试重启计算机和开发板来解决潜在的连接问题。 2. 调试器设置问题:确保你的调试器设置正确。打开你所使用的集成开发环境(IDE),进入调试器设置,选择正确的调试器类型和目标设备类型。确认是否正确设置了调试器的端口和波特率等参数。 3. 软件问题:检查你的开发环境和SDK是否正确安装。确保你使用的是支持imx rt1050的开发环境版本,并且已经正确配置了相关的软件环境。尝试重新安装开发环境和SDK,或者尝试使用不同的开发环境来解决潜在的软件问题。 4. 硬件问题:如果以上方法都无效,有可能是硬件问题导致无法调试。检查你的开发板是否正常工作,例如检查供电是否正常、是否存在硬件损坏等。如果有必要,可以尝试更换开发板或者咨询厂家的技术支持。 总之,当遇到imx rt1050无法调试的问题时,可以从连接问题、调试器设置问题、软件问题和硬件问题等方面逐一排查,并采取相应的解决方法。如果以上方法都无效,建议寻求专业的技术支持来解决问题。 ### 回答3: IMX RT1050 是一款功能强大的嵌入式处理器,用于开发各种实时应用程序,但在进行调试时遇到问题可能是因为以下原因: 1. 硬件连接问题:请确保正确连接使用调试器(如J-Link)与目标板之间的调试接口,确保接口线正常工作,并且没有任何松动或接触不良。 2. 软件设置问题:调试前,请确保使用正确的 IDE(集成开发环境,如Keil MDK)并配置正确的调试选项。例如,选择正确的目标芯片型号(IMX RT1050),正确的调试接口(例如JTAG或SWD),以及正确的调试选项,如时钟频率和调试模式。 3. 编码问题:在程序编写过程中可能存在代码错误或配置问题。请确保您的代码没有任何逻辑错误,并且正确地初始化和配置了相关的硬件资源。 4. 供电问题:请确保目标板的供电电压和电流满足 IMX RT1050 的要求,以避免在调试过程中因为电源不足而出现问题。 5. 调试接口芯片问题:IMX RT1050 主芯片与调试器之间可能由于硬件兼容性问题而导致不能正常映射、调试相关操作。在这种情况下,您可能需要升级调试器固件,或者查找更多关于特定兼容性问题的信息。 如果以上解决方法无效,建议检查嵌入式处理器是否未被损坏,或者与原始设备制造商联系,以获取更详细的技术支持和建议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Linux中提示No such file or directory解决方法 181541
  • virtualbox安装增强功能实现全屏 55558
  • ext4文件系统制作 - make_ext4fs 参数介绍 35435
  • SD卡CMD命令介绍 33890
  • AT 指令和常见错误码 33649

分类专栏

  • MTK驱动 7篇
  • i.MX8QuadMax 20篇
  • source insight
  • keil 1篇
  • android开发 31篇
  • android驱动开发 31篇
  • C语言 1篇
  • 职业学习 1篇
  • linux使用技巧 18篇
  • C语言 单片机 3篇
  • git使用技巧 2篇
  • Imx6 9篇
  • linux网络编程
  • android驱动实战经验 2篇
  • ubuntu 3篇
  • ubuntu开发技巧 4篇
  • keil 乱码 source insight 1篇
  • 嵌入式硬件 1篇
  • linux驱动 6篇
  • imx8驱动 4篇
  • imx8qm mek 1篇
  • imx8qm 5篇
  • shell学习 3篇

最新评论

  • max9286+max96705摄像头调试--基于imx8qm

    煜煜煜煜煜啊: 你好,我想问一下max9286图像重叠的问题,您这边后面有解决嘛?我这边也遇到了类似的问题。

  • Linux中提示No such file or directory解决方法

    #OrangesApple: 最好是复制之后在vim里进行粘贴保存

  • Linux中提示No such file or directory解决方法

    2301_80032946: 您好!打扰?您是用哪个方法?我把所有的子程序都按照显示方法1进行了转化,在Linux上执行源代码之前,我对个别处中文文件名称改写成了英文,make后生成了一个可执行文件,该文件需要两个输入文件,运行过程中按理说会在可执行程序所在文件夹生成两个程序规定的新文件夹,但是还是有这个错误

  • Linux中提示No such file or directory解决方法

    2301_80032946: 您好,我把所有的子程序都按照显示方法1进行了转化,在Linux上执行源代码之前,我对个别处中文文件名称改写成了英文,make后生成了一个可执行文件,该文件需要两个输入文件,运行过程中按理说会在可执行程序所在文件夹生成两个程序规定的新文件夹,但是还是有这个错误

  • imx8qm LVDS屏 DS90UB9478调试

    weixin_47039946: 为什么要用panel_simple.c 直接用panel_lvds.c不好吗,直接在设备树里指定各种前后肩参数即可

大家在看

  • 预门控MoE: 一个快速规模化MoE推理的算法-系统协同设计
  • 重塑生成式AI研究前景的综述:谷歌的Gemini和OpenAI的Q*

最新文章

  • MTK logo.bin手动制作(个人博客:浏览器直接输入wugn.tech)
  • ST7703 LCM显示屏调试--基于MT6765
  • MTK充电温度保护机制
2021年1篇
2020年25篇
2019年6篇
2018年30篇
2017年39篇
2016年44篇
2015年2篇
2014年3篇

目录

目录

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司阳泉网站优化软件公司仙桃网站推广工具报价大庆网站制作报价宜春网站推广方案报价巴中SEO按天计费公司淄博外贸网站制作哪家好淮南SEO按天收费价格铜川网站推广工具报价东营企业网站建设报价忻州外贸网站建设价格苏州SEO按天收费报价吉林网站改版推荐安庆百度竞价包年推广公司贺州关键词按天扣费推荐绵阳优化推荐许昌网站建设多少钱上饶关键词按天计费哪家好甘南网站优化排名哪家好银川网络营销多少钱塔城建网站价格吉安网站推广方案推荐邢台SEO按效果付费固原网站推广报价沙井网站推广方案公司资阳seo优化价格枣庄seo优化哪家好红河网站优化按天扣费价格池州网站优化按天计费价格安顺网站建设设计价格赣州关键词按天计费哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化