当前位置: 首页 > news >正文

在哪里建设网站wordpress手机版安装

在哪里建设网站,wordpress手机版安装,二级域名建站,网站源代码生成网站文章目录 1. LCD 驱动修改1.1 修改c文件配置1.2 修改h文件配置1.3 编译测试 2. 网络驱动修改2.1 I.MX6U-ALPHA 开发板网络简介2.2 网络 PHY 地址修改2.3 删除 uboot 中 74LV595 的驱动代码2.4 添加开发板网络复位引脚驱动2.5 更新 PHY 的连接状态和速度2.6 烧写调试2.7 测试一下… 文章目录 1. LCD 驱动修改1.1 修改c文件配置1.2 修改h文件配置1.3 编译测试 2. 网络驱动修改2.1 I.MX6U-ALPHA 开发板网络简介2.2 网络 PHY 地址修改2.3 删除 uboot 中 74LV595 的驱动代码2.4 添加开发板网络复位引脚驱动2.5 更新 PHY 的连接状态和速度2.6 烧写调试2.7 测试一下 ENET12.8 其他需要修改的地方 1. LCD 驱动修改 一般 uboot 中修改驱动基本都是在 xxx.h 和 xxx.c 这两个文件中进行的 xxx 为板子名称即board/freescale/mx6ull_myboard/mx6ull_myboard.c和 include/configs/mx6ull_myboard.h这两个文件。 一般修改 LCD 驱动重点注意以下几点 LCD 所使用的 GPIO查看 uboot 中 LCD 的 IO 配置是否正确LCD 背光引脚 GPIO 的配置LCD 配置参数是否正确 正点原子的 I.MX6U-ALPHA 开发板 LCD 原理图和 NXP 官方 I.MX6ULL 开发板一致也就是 LCD 的 IO 和背光 IO 都一样的所以 IO 部分就不用修改了。 1.1 修改c文件配置 需要修改的之后 LCD 参数打开文件 mx6ull_myboard.c找到如下所示内容 struct display_info_t const displays[] {{.bus MX6UL_LCDIF1_BASE_ADDR,.addr 0,.pixfmt 24,.detect NULL,.enable do_enable_parallel_lcd,.mode {.name TFT43AB,.xres 480,.yres 272,.pixclock 108695,.left_margin 8,.right_margin 4,.upper_margin 2,.lower_margin 4,.hsync_len 41,.vsync_len 10,.sync 0,.vmode FB_VMODE_NONINTERLACED } } };先来分析一下这段代码该代码定义了一个变量displays类型为display_info_t这个结构体是LCD信息结构体其中包括了LCD的分辨率像素格式LCD的各个参数等。 display_info_t 定义在文件 arch/arm/include/asm/imx-common/video.h 中定义如下 struct display_info_t {int bus;int addr;int pixfmt;int (*detect)(struct display_info_t const *dev);void (*enable)(struct display_info_t const *dev);struct fb_videomode mode; };这里的pixfmt是像素格式也就是一个像素点是多少位如果是RGB565的话就是16位如果是RGB888的话就是24位一般使用 RGB888。 结构体display_info_t还有个mode成员变量此成员变量也是个结构体为fb_videomode定义在文件 include/linux/fb.h 中定义如下 struct fb_videomode {const char *name; /* optional */u32 refresh; /* optional */u32 xres;u32 yres;u32 pixclock;u32 left_margin;u32 right_margin;u32 upper_margin;u32 lower_margin;u32 hsync_len;u32 vsync_len;u32 sync;u32 vmode;u32 flag; };结构体b_videomode里面的成员变量为LCD的参数这些成员变量函数如下 name LCD 名字要和环境变量中的 panel 相等xres 、yres LCD X 轴和 Y 轴像素数量pixclock像素时钟每个像素时钟周期的长度单位为皮秒left_margin HBP(horizontal back porch)水平同步后肩right_margin HFP(horizontal front porch)水平同步前肩upper_marginVBP(vertical back porch)垂直同步后肩lower_marginVFP(vertical front porch)垂直同步前肩hsync_len HSPW(horizontal sync pulse width)行同步脉宽vsync_lenVSPW(vertical sync pulse width)垂直同步脉宽vmode 大多数使用 FB_VMODE_NONINTERLACED也就是不使用隔行扫描。 这些参数需要与实用的LCD的参数一致唯一不同的像素时钟 pixclock 的含义不同 。 「正点原子的7寸RGB屏幕」(ATK70161024x600)的一些参数如下 参数值width1024height600HBP140HFP160VBP20VFP12HSPW20VSPW3 像素时钟 像素时钟就是 RGB LCD 的时钟信号以 ATK7016 这款屏幕为例显示一帧图像所需要的时钟数就是 (VSPWVBPLINEVFP) * (HSPW HBP HOZVAL HFP)(3 20 600 12) * (20 140 1024 160)635 * 1344853440。显示一帧图像需要853440个时钟数那么显示60帧就是 853440 * 60 51206400≈51.2M所以像素时钟就是 51.2MHz。 因此 pixclock(1/51200000)*10^1219531在根据其他的屏幕参数可以得出 ATK7016 屏幕的配置参数如下 struct display_info_t const displays[] {{.bus MX6UL_LCDIF1_BASE_ADDR,.addr 0,.pixfmt 24,.detect NULL,.enable do_enable_parallel_lcd,.mode {.name TFT7016,.xres 1024,.yres 600,.pixclock 19531,.left_margin 100, //HBPD.right_margin 88, //HFPD.upper_margin 39, //VBPD.lower_margin 21, //VFBD.hsync_len 48, //HSPW.vsync_len 3, //VSPW.sync 0,.vmode FB_VMODE_NONINTERLACED } } };1.2 修改h文件配置 另外还要修改include/configs/路径下的mx6ull_myboard.h找到所有如下语句 panelTFT43AB将其改为 panelTFT7016也就是设置 panel 为 TFT7016 panel 的值要与displays.name 成员变量的值一致。修改完成以后重新编译一遍 uboot 并烧写到 SD 中启动 1.3 编译测试 将修改后的uboot编译下载以后LCD 驱动一般就会工作正常了LCD 上会显示 NXP 的 logo U-Boot 2016.03 (Jun 26 2023 - 22:21:59 0800)CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz) CPU: Industrial temperature grade (-40C to 105C) at 48C Reset cause: WDOG Board: MX6ULL 14x14 EVK I2C: ready DRAM: 512 MiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Display: TFT7016 (1024x600) Video: 1024x600x24 In: serial Out: serial Err: serial switch to partitions #0, OK mmc0 is current device Net: Board Net Initialization Failed No ethernet found. Normal Boot Hit any key to stop autoboot: 02. 网络驱动修改 2.1 I.MX6U-ALPHA 开发板网络简介 I.MX6ULL内部有个以太网MAC外设也就是ENET需要外接一个PHY芯片来实现网络通信功能也就是 「内部MAC外部PHY芯片」 的方案。 I.MX6UL/ULL 有两个网络接口 ENET1 和 ENET2正点原子的 I.MX6U-ALPHA 开发板提供了这两个网络接口其中 ENET1 和 ENET2 都使用 LAN8720A 作为 PHY 芯片。 NXP 官方的I.MX6ULL EVK 开发板使用 KSZ8081 这颗 PHY 芯片。更换 PHY 芯片以后需要调整网络驱动使网络工作正常。 ENET1 ENET1 的网络 PHY 芯片为 LAN8720A通过 RMII 接口与 I.MX6ULL 相连正点原子I.MX6U-ALPHA 开发板的 ENET1 引脚与 NXP 官方的 I.MX6ULL EVK 开发板基本一样唯独复位引脚不同。正点原子I.MX6U-ALPHA 开发板的 ENET1 复位引脚ENET1_RST 接到了 I.M6ULL 的 SNVS_TAMPER7 这个引脚上。 I.MX6ULL 通过 MDIO接口来读取 PHY 芯片的内部寄存器 MDIO 接口有两个引脚 ENET_MDC 和 ENET_MDIOENET_MDC 提供时钟 ENET_MDIO 进行数据传输。一个 MDIO 接口可以管理 32 个 PHY 芯片同一个 MDIO 接口下的这些 PHY 使用不同的器件地址来做区分 MIDO 接口通过不同的器件地址即可访问到相应的 PHY 芯片。 I.MX6U-ALPHA 开发板 ENET1 上连接的 LAN8720A器件地址为 0X0所示要修改 ENET1 网络驱动重点就三点 ①、 ENET1 复位引脚初始化。 ②、 LAN8720A 的器件 ID。 ③、 LAN8720 驱动 ENET2 关于 ENET2 网络驱动的修改也注意一下三点 ①、 ENET2 的复位引脚ENET2 的复位引脚 ENET2_RST 接到了I.MX6ULL 的 SNVS_TAMPER8 上。 ②、 ENET2 所使用的 PHY 芯片器件地址PHY 器件地址为 0X1。 ③、 LAN8720 驱动 ENET1 和 ENET2 都使用的 LAN8720所以驱动是一样的。 2.2 网络 PHY 地址修改 首先修改 uboot 中的 ENET1 和 ENET2 的 PHY 地址和驱动打开 mx6ull_myboard.h这个文件找到如下代码 #define CONFIG_FEC_ENET_DEV 1#if (CONFIG_FEC_ENET_DEV 0) #define IMX_FEC_BASE ENET_BASE_ADDR #define CONFIG_FEC_MXC_PHYADDR 0x2 #define CONFIG_FEC_XCV_TYPE RMII #elif (CONFIG_FEC_ENET_DEV 1) #define IMX_FEC_BASE ENET2_BASE_ADDR #define CONFIG_FEC_MXC_PHYADDR 0x1 #define CONFIG_FEC_XCV_TYPE RMII #endif #define CONFIG_ETHPRIME FEC#define CONFIG_PHYLIB #define CONFIG_PHY_MICREL #endif第 331 行的宏 CONFIG_FEC_ENET_DEV 用于选择使用哪个网口默认为 1也就是选择ENET2 第 335 行为 ENET1 的 PHY 地址默认是 0X2 第 339 行为 ENET2 的 PHY 地址默认为 0x1 根据前面的分析可知正点原子的 I.MX6U-ALPHA 开发板 ENET1 的 PHY 地址为0X0 ENET2 的 PHY 地址为 0X1所以需要将第 335 行的宏 CONFIG_FEC_MXC_PHYADDR改为 0x0。 如果要使用 LAN8720A那么就得将 CONFIG_PHY_MICREL 改为 CONFIG_PHY_SMSC也就是使能 uboot 中的 SMSC 公司中的 PHY 驱动因为 LAN8720A 就是 SMSC 公司生产的。 所以示例代码有三处要修改 ①、修改 ENET1 网络 PHY 的地址。 ②、修改 ENET2 网络 PHY 的地址。 ③、使能 SMSC 公司的 PHY 驱动。 修改后的网络 PHY 地址参数如下所示 #define CONFIG_FEC_ENET_DEV 1#if (CONFIG_FEC_ENET_DEV 0) #define IMX_FEC_BASE ENET_BASE_ADDR #define CONFIG_FEC_MXC_PHYADDR 0x0 #define CONFIG_FEC_XCV_TYPE RMII #elif (CONFIG_FEC_ENET_DEV 1) #define IMX_FEC_BASE ENET2_BASE_ADDR #define CONFIG_FEC_MXC_PHYADDR 0x1 #define CONFIG_FEC_XCV_TYPE RMII #endif #define CONFIG_ETHPRIME FEC#define CONFIG_PHYLIB #define CONFIG_PHY_SMSC #endif2.3 删除 uboot 中 74LV595 的驱动代码 1、uboot 中网络 PHY 芯片地址修改完成以后就是网络复位引脚的驱动修改了打开mx6ull_myboard.c找到如下代码 #define IOX_SDI IMX_GPIO_NR(5, 10) #define IOX_STCP IMX_GPIO_NR(5, 7) #define IOX_SHCP IMX_GPIO_NR(5, 11) #define IOX_OE IMX_GPIO_NR(5, 8)以 IOX 开头的宏定义是 74LV595 的相关 GPIO因为 NXP 官方I.MX6ULL EVK 开发板使用 74LV595 来扩展 IO两个网络的复位引脚就是由 74LV595 来控制的。正点原子的 I.MX6U-ALPHA 开发板并没有使用 74LV595因此我们将代码的代码删除掉替换为 #define ENET1_RESET IMX_GPIO_NR(5, 7) #define ENET2_RESET IMX_GPIO_NR(5, 8)NET1 的复位引脚连接到 SNVS_TAMPER7 上对应 GPIO5_IO07 ENET2 的复位引脚连接到 SNVS_TAMPER8 上对应 GPIO5_IO08。 2、继续在 mx6ull_myboard.c 中找到如下代码 static iomux_v3_cfg_t const iox_pads[] {/* IOX_SDI */MX6_PAD_BOOT_MODE0__GPIO5_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),/* IOX_SHCP */MX6_PAD_BOOT_MODE1__GPIO5_IO11 | MUX_PAD_CTRL(NO_PAD_CTRL),/* IOX_STCP */MX6_PAD_SNVS_TAMPER7__GPIO5_IO07 | MUX_PAD_CTRL(NO_PAD_CTRL),/* IOX_nOE */MX6_PAD_SNVS_TAMPER8__GPIO5_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL), };示例代码是 74LV595 的 IO 配置参数结构体将其删除掉。 3、继续在mx6ull_myboard.c 中找到函数 iox74lv_init static void iox74lv_init(void) {int i;gpio_direction_output(IOX_OE, 0);............gpio_direction_output(IOX_STCP, 1); };void iox74lv_set(int index) {int i;............gpio_direction_output(IOX_STCP, 1); };iox74lv_init 函数是 74LV595 的初始化函数 iox74lv_set 函数用于控制 74LV595 的 IO 输出电平将这两个函数全部删除掉 4、在 mx6ull_myboard.c 中找到 board_init 函数此函数是板子初始化函数会被board_init_r 调用 board_init 函数内容如下 int board_init(void) {.......imx_iomux_v3_setup_multiple_pads(iox_pads, ARRAY_SIZE(iox_pads));iox74lv_init();.......return 0; }board_init 会调用 imx_iomux_v3_setup_multiple_pads 和 iox74lv_init 这两个函数来初始化74lv595 的 GPIO将这两行删除掉。 至此 mx6ull_myboard.c 中关于 74LV595 芯片的驱动代码都删除掉了接下来就是添加 I.MX6U-ALPHA 开发板两个网络复位引脚了。 2.4 添加开发板网络复位引脚驱动 在 mx6ull_myboard.c 中找到如下所示代码 static iomux_v3_cfg_t const fec1_pads[] {MX6_PAD_GPIO1_IO06__ENET1_MDIO | MUX_PAD_CTRL(MDIO_PAD_CTRL),MX6_PAD_GPIO1_IO07__ENET1_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),........MX6_PAD_ENET1_RX_ER__ENET1_RX_ER | MUX_PAD_CTRL(ENET_PAD_CTRL),MX6_PAD_ENET1_RX_EN__ENET1_RX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL), };static iomux_v3_cfg_t const fec2_pads[] {MX6_PAD_GPIO1_IO06__ENET2_MDIO | MUX_PAD_CTRL(MDIO_PAD_CTRL),MX6_PAD_GPIO1_IO07__ENET2_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),........MX6_PAD_ENET2_RX_EN__ENET2_RX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),MX6_PAD_ENET2_RX_ER__ENET2_RX_ER | MUX_PAD_CTRL(ENET_PAD_CTRL), };结构体数组 fec1_pads 和 fec2_pads 是 ENET1 和 ENET2 这两个网口的 IO 配置参数在这两个数组中添加两个网口的复位 IO 配置参数完成以后如下所示 static iomux_v3_cfg_t const fec1_pads[] {MX6_PAD_GPIO1_IO06__ENET1_MDIO | MUX_PAD_CTRL(MDIO_PAD_CTRL),MX6_PAD_GPIO1_IO07__ENET1_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),........MX6_PAD_ENET1_RX_ER__ENET1_RX_ER | MUX_PAD_CTRL(ENET_PAD_CTRL),MX6_PAD_ENET1_RX_EN__ENET1_RX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),MX6_PAD_SNVS_TAMPER7__GPIO5_IO07 | MUX_PAD_CTRL(NO_PAD_CTRL), /* 初始化ETH1 RESET引脚 */ };static iomux_v3_cfg_t const fec2_pads[] {MX6_PAD_GPIO1_IO06__ENET2_MDIO | MUX_PAD_CTRL(MDIO_PAD_CTRL),MX6_PAD_GPIO1_IO07__ENET2_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),........MX6_PAD_ENET2_RX_EN__ENET2_RX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),MX6_PAD_ENET2_RX_ER__ENET2_RX_ER | MUX_PAD_CTRL(ENET_PAD_CTRL),MX6_PAD_SNVS_TAMPER8__GPIO5_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL), /* 初始化ETH2 RESET引脚 */ };别是 ENET1 和 ENET2 的复位 IO 配置参数。 继续在文件 mx6ull_myboard.c 中找到函数 setup_iomux_fec此函数默认代码如下 static void setup_iomux_fec(int fec_id) {if (fec_id 0)imx_iomux_v3_setup_multiple_pads(fec1_pads,ARRAY_SIZE(fec1_pads));elseimx_iomux_v3_setup_multiple_pads(fec2_pads,ARRAY_SIZE(fec2_pads)); }函数 setup_iomux_fec 就是根据 fec1_pads 和 fec2_pads 这两个网络 IO 配置数组来初始化I.MX6ULL 的网络 IO。需要在其中添加网络复位 IO 的初始化代码并且复位一下 PHY 芯片修改后的 setup_iomux_fec 函数如下 static void setup_iomux_fec(int fec_id) {if (fec_id 0){imx_iomux_v3_setup_multiple_pads(fec1_pads,ARRAY_SIZE(fec1_pads));gpio_direction_output(ENET1_RESET, 1);gpio_set_value(ENET1_RESET, 0);mdelay(100);gpio_set_value(ENET1_RESET, 1);}else{imx_iomux_v3_setup_multiple_pads(fec2_pads,ARRAY_SIZE(fec2_pads));gpio_direction_output(ENET2_RESET, 1);gpio_set_value(ENET2_RESET, 0);mdelay(100);gpio_set_value(ENET2_RESET, 1);}}分别对应 ENET1 和 ENET2 的复位 IO 初始化将这两个 IO 设置为输出并且硬件复位一下 LAN8720A 2.5 更新 PHY 的连接状态和速度 打开文件drivers/net/phy/phy.c找到函数 genphy_update_link这是个通用 PHY 驱动函数此函数用于更新 PHY 的连接状态和速度。使用 LAN8720A 的时候需要在此函数中添加一些代码修改后的函数 genphy_update_link 如下所示 nt genphy_update_link(struct phy_device *phydev) {unsigned int mii_reg; #ifdef CONFIG_PHY_SMSCstatic int lan8720_flag 0;int bmcr_reg 0;if(lan8720_flag 0){bmcr_reg phy_read(phydev, MDIO_DEVAD_NONE, MII_BMCR); /* Read the default value of BCMR register */phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET); /* Software reset*/mdelay(10);phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, bmcr_reg); /* Write the default value to BCMR register */lan8720_flag 1;} #endif2.6 烧写调试 至此网络的复位引脚驱动修改完成重新编译 uboot然后将 u-boot.bin 烧写到 SD 卡中并启动 uboot 启动信息 U-Boot 2016.03 (Jun 26 2023 - 22:07:29 0800)U-Boot 2016.03 (Jun 26 2023 - 22:21:59 0800)CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz) CPU: Industrial temperature grade (-40C to 105C) at 48C Reset cause: WDOG Board: MX6ULL 14x14 EVK I2C: ready DRAM: 512 MiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Display: TFT7016 (1024x600) Video: 1024x600x24 In: serial Out: serial Err: serial switch to partitions #0, OK mmc0 is current device Net: FEC1 Error: FEC1 address not set.Normal Boot Hit any key to stop autoboot: 0可以看到“Net FEC1”这一行提示当前使用的 FEC1 这个网口也就是 ENET2。 配置u-boot中环境变量设置命令如下所示 setenv ipaddr 192.168.1.50 setenv ethaddr b8:ae:1d:01:00:00 setenv gatewayip 192.168.1.1 setenv netmask 255.255.255.0 setenv serverip 192.168.1.253 saveenvping 192.168.1.253 FEC1 Waiting for PHY auto negotiation to complete.... done Using FEC1 device host 192.168.1.253 is alive有“host 192.168.1.250 is alive”这句说明 ping 主机成功说明ENET2网络工作正常。 2.7 测试一下 ENET1 打开 mx6ull_alientek_emmc.h将 CONFIG_FEC_ENET_DEV 改为 0然后重新编译一下 uboot 并烧写到 SD 卡中重启。重启开发板 U-Boot 2016.03 (Jun 26 2023 - 22:21:59 0800)CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz) CPU: Industrial temperature grade (-40C to 105C) at 48C Reset cause: WDOG Board: MX6ULL 14x14 EVK I2C: ready DRAM: 512 MiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Display: TFT7016 (1024x600) Video: 1024x600x24 In: serial Out: serial Err: serial switch to partitions #0, OK mmc0 is current device Net: FEC0 Normal Boot Hit any key to stop autoboot: 0有“Net FEC0”这一行说明当前使用的 FEC0 这个网卡也就是ENET1同样的 ping 一下主机 ping 192.168.1.253 FEC0 Waiting for PHY auto negotiation to complete.... done Using FEC0 device host 192.168.1.253 is aliveping 主机也成功说明 ENET1 网络也工作正常至此 I.MX6UALPHA 开发板的两个网络都工作正常了 2.8 其他需要修改的地方 在 uboot 启动信息中会有“Board: MX6ULL 14x14 EVK”这一句也就是说板子名字为“ MX6ULL 14x14 EVK”要将其改为我们所使用的板子名字比如“ MX6ULL MYBOARD”。打开文件 mx6ull_myboard.c找到函数checkboard将其改为如下所示内容 int checkboard(void) {if (is_mx6ull_9x9_evk())puts(Board: MX6ULL 9x9 EVK\n);elseputs(Board: MX6ULL MYBOARD\n);return 0; }U-Boot 2016.03 (Jun 26 2023 - 22:39:30 0800)CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz) CPU: Industrial temperature grade (-40C to 105C) at 42C Reset cause: POR Board: MX6ULL MYBOARD I2C: ready DRAM: 512 MiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Display: TFT7016 (1024x600) Video: 1024x600x24 In: serial Out: serial Err: serial switch to partitions #0, OK mmc0 is current device Net: FEC1 Normal Boot Hit any key to stop autoboot: 0
http://www.ho-use.cn/article/10820916.html

相关文章:

  • 常德网站制作贵州十大广告公司
  • wordpress 4.9 站群php网站开发工程
  • 车机油哪个网站做的好成都网站建站推广
  • 长沙建站模板大全天津网站定制公司
  • 下载网站源文件免费购物的软件
  • 网站建设如何开票怎么做系统网站
  • 网站制作公司报价正确的网线的顺序图
  • 空间站免费版下载东莞市阳光网
  • 一级a做爰片51网站怎么在自己网站上做拼图
  • 网站友情链接模块毕设如何做网站
  • 网站点击赚钱怎么做当地自己的淘宝网站怎么做
  • 一图读懂制作网站公司logo在线设计
  • 学生个人网页制作代码模板怀化优化网站排名
  • 北京商城网站建设报价网站托管流程
  • 购买建立网站费怎么做会计凭证seo搜索引擎优化实战
  • linux系统服务器怎么做网站上海今天死亡新闻
  • 网站建设费如何记账自己域名做网站
  • 营销网站建设文章全球最受欢迎的网站排名
  • 百度推广营销方案百度关键词优化大
  • 深圳签网站泉州网站开发企业
  • 网站关闭多久排名会下降手机 网站开发aspx
  • 哈尔滨网站建设学校网站开发实训安排
  • 百度站长提交ip网站怎么做
  • 贵州做网站kuhugz如何制作局域网站
  • 安徽专业做网站的大公司莱芜网站建设设计外包
  • vps打开网站很慢室内装修设计案例
  • 福州 哈尔滨网站建设 网络服务海外代理服务器 免费
  • 企石网站仿做潍坊专业输送带产品介绍
  • 帮公司做网站简单网站系统
  • 超酷网站seo关键词