s3c2410 时钟频率

发布者:翩翩轻舞最新更新时间:2016-11-25 来源: eefocus关键字:s3c2410  时钟频率 手机看文章 扫描二维码
随时随地手机看文章

PLL

PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时脉讯号,使内存能正确的存取资料。PLL用于振荡器中的反馈技术。
  锁相环是一种反馈电路,其作用是使得电路上的时钟和某一外部时钟的相位同步。PLL通过比较外部信号的相位和由压控晶振(VCXO)的相位来实现同步的,在比较的过程中,锁相环电路会不断根据外部信号的相位来调整本地晶振的时钟相位,直到两个信号的相位同步。
  在数据采集系统中,锁相环是一种非常有用的同步技术,因为通过锁相环,可以使得不同的数据采集 板卡共享同一个采样时钟。因此,所有板卡上各自的本地80MHz和20MHz时基的相位都是同步的,从而采样时钟也是同步的。因为每块板卡的采样时钟都是 同步的,所以都能严格地在同一时刻进行数据采集。
  通过锁相环同步多块板卡的采样时钟所需要的编程技术会根据您所使用的硬件板卡的不同而不同。对 于基于PCI总线的产品(M系列数据采集卡,PCI数字化仪等),所有的同步都是通过RTSI总线上的时钟和触发线来实现的;这时,其中一块版板卡会作为 主卡并且输出其内部时钟,通过RTSI线,其他从板卡就可以获得这个用于同步的时钟信号,对于基于PXI总线的产品,则通过将所有板卡的时钟于PXI内置 的10MHz背板时钟同步来实现锁相环同步的。
  http://www.altera.com.cn/support/devices/pll_clock/basics/pll-basics.html
  ---------------------------------------------------------------------------------------------
  PLL在电子电路中的应用
  PLL即锁相环,基本原理图是:
  输入信号-> 鉴相器 -> 低通滤波器 -> 压控振荡器-> 输出信号
  ^|_____________________ |
  鉴相器有两个输入,分别是输入信号和压控振荡器的输出信号,在二者相位差和频
  率差不是很大的情况下,鉴相器的输出与两输入信号之差成正比,鉴相器的输出为模
  拟信号,其通过低通滤波器虑除高频杂波,后进入压控振荡器,压控振荡器的输出频
  率随其输入电压的改变而改变。
  从原理图上看,PLL实际上是一负反馈系统,只要输入信号在正常范围内,输出信号
  在“一定时间内”都能跟上。输入信号发生变化后,输出信号跟踪输入信号的过程称之
  为捕获;输出信号跟踪完毕时称之为锁定;输入信号变化过快导致输出信号无法跟踪
  时称为失锁。
  通过PLL可以方便实现N倍频,原理如下:
  输入信号-> 鉴相器 -> 低通滤波器 -> 压控振荡器-> 输出信号
  ^|______N分频器______________|
  此外,可以实现小数倍频,原理如下:
  输入信号-> 鉴相器 -> 低通滤波器 -> 压控振荡器-> 输出信号
  ^|________N分频器/N+1分频_________|
  | |
  |------ 模式控制 ――---------> |
  模式控制模块可以选择分频器处于N分频器还是N+1分频,若通过模式控制模块实现
  10个clk中有9个clk为N分频,1个clk为N+1分频,则实际输出信号频率为(N+0.1)×
  输入频率。
  PLL电路本质是模拟电路,与ARM内核的数字电路截然不同,故在CPU中处于独立地
  位,另外很多CPU的PLL供电为单独供电,且对PLL供电质量要求较高。
  http://www.qingyangos.org/maillist/msg00025.html

其中pll 包含两种: MPLL 主要应用于各种设备时钟的提供,将重点讨论
UPLL 应用于USB时钟频率应用,为48M

其中MPLL的设置主要依靠使用各种锁相环和分频器来改变输入原始的频率,经过锁相环之后可以提升频率,关于频率的选择主要依靠改变CPU寄存器实现,MPLLCON通过改变其中的参数设置即可
Mpll = (m * Fin) / (p * 2s)
m = (MDIV + 8), p = (PDIV + 2), s = SDIV
MPLL就是要得到的频率,我建议用参考手册给定的频率设置即可,标准之际。
接下来该设置各种设备的频率:

我所认为的MPLL分出三种模式:FCLK、HCLK、PCLK
这三种也应用于不同的场合,FCLK应用于CPU的时钟,HCLK用于AHB bus各种外围设备,PCLK 用于APB bus各种接口设备。
其中FCLK 应用就是MPLL的频率,一样的,不用设置的。
HCLK 可以设置为FCLK或FCLK/2 ,即通过设置相应得寄存器CLKDIVN中的对应位HDIVN即可,其中HDIVN为0时对应FCLK,为1时对应FCLK/2
PCLK可以设置为HCLK或HCLK/2 ,即通过设置相应得寄存器CLKDIVN中的对应位PDIVN即可,其中PDIVN为0时对应HCLK,为1时对应HCLK/2

If HDIVN=1, the CPU bus mode has to be changed from the fast bus mode to the asynchronous bus mode using following instructions.
MMU_SetAsyncBusMode
mrc p15,0,r0,c1,c0,0
orr r0,r0,#R1_nF:OR:R1_iA
mcr p15,0,r0,c1,c0,0
If HDIVN=1 and the CPU bus mode is the fast bus mode, the CPU will operate by the HCLK. This feature can be used to change the CPU frequency as a half without affecting the HCLK and PCLK.
以上这段文字也是讲关于写协处理器来控制协调内部总线和外部总线的关系,不过原文有点不太明白,又不敢把错的意思表达出来,贻害众生,只好原文照搬后谈点 看法,我感觉是当HCLK中设置为FCLK/2 时必须协调与内部总线关系,至于同步非同步还要通过协处理器来管理,这样就可以很好的协调各种总线的关系了,当出现HDIVN=1和CPU总线被设为快速 非同步模式时,CPU(我认为是总线频率)可以完全依靠HCLK提供频率,因此将会改变CPU频率时不会影响到其它的变化。

今天看数据手册时有发现了几点没有发现的东西,主要是关于协处理器的。
ARM920T 竟然有两种输入时钟方式,FCLK 和BCLK ,其中BCLK 主要提供给AMBA
Bus的,可也可以通过选择协处理器的R1的NF,iA位来选择是否供是时钟给核ARM920T


3, FCLK是核心频率, 是用ARM920T;
4, HCLK: 管理中断控制器, 内存控制器, LCD(你的液晶屏)控制器, DMA(直接内存访问)控制器, 和大家津津乐道的USB Host控制器;
(类似PC机的北桥芯片)
5, PCLK: 周边总线的频率(类似PC机的南桥芯片);
6, FCLK(核心频率)不变的情况下, 可以使 FCLK:HCLK:PCLK 在 1:1:1(默认) -> 1:8:16 之间获得多档频率, 而FCLK始终不变, 这点很重要


2410内部有三个时钟:FCLK、HCLK、PCLK,分别供CPU、AHB总线和

APB总线使用,为了降低功耗,一般都选择周期比为1:2:4的合理配置。 同时将PLL配置为运行环境时钟,一般都达到最高202M。


FCLK是供给CPU的 是主频
HCLK是供给AHB总线(主要用于高性能模块(如CPU、DMA和DSP等)之间的连接,作为SoC的片上系统总线)上的外围设备
PCLK是供给APB总线(APB主要用于低带宽的周边外设之间的连接,例如UART、1284等)上的外围设备
UCLK是两路PLL中一路供给USB的频率

FCLK, HCLK, and PCLK
FCLK is used by ARM920T.
HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the
LCD controller, the DMA and the USB host block.
PCLK is used for APB bus, which is used by the peripherals such as WDT, IIS, I2C, PWM timer, MMC interface,
ADC, UART, GPIO, RTC and SPI.
The S3C2410X supports selection of Dividing Ratio between FCLK, HLCK and PCLK. This ratio is determined by
HDIVN and PDIVN of CLKDIVN control register.
HDIVN PDIVN FCLK HCLK PCLK Divide Ratio
0 0 FCLK FCLK FCLK 1 : 1 : 1
(Default)
0 1 FCLK FCLK FCLK / 2 1 : 1 : 2
1 0 FCLK FCLK / 2 FCLK / 2 1 : 2 : 2
1 1 FCLK FCLK / 2 FCLK / 4 1 : 2 : 4
(recommended)

文章说明:calmarrow(lqm)原创,参考thisway.diy的《S3C2410完全开发》

文章引自:http://piaoxiang.cublog.cn


   clock部分比较容易,现在按照datasheet的思路梳理一下。

 

一、对clock的基本认识

 

    第七部分是“clock & power management”,总结如下:

 

    1 s3c2410的clock & power management模块包含三个部分:clock control、usb control、power control。现在的关注点是clock control。

 

    2、s3c2410有两个pll(phase locked loop,锁相环,在高频中学过,可以实现倍频,s3c2410的高频就是由此电路产生的)。其中一个是MPLL,M即为main,用来产生三种时钟信 号:Fclk(给CPU核供给时钟信号,我们所说的s3c2410的cpu主频为200MHz,就是指的这个时钟信号,相应的,1/Fclk即为cpu时 钟周期)、Hclk(为AHB bus peripherals供给时钟信号,AHB为advanced high-performance bus)、Pclk(为APB bus peripherals供给时钟信号,APB为advanced peripherals bus)。在这里,需要了解一下AMBA system architecture了。这个可以到官方网站www.arm.com下载相关资料。简单的说,AMBA是一种协议,这种协议已经称为片上组织通信的事实上的标准(the de facto standard for on-chip fabric communication)。下面给出英文描述:

 

    The AMBA protocol is an open standard, on-chip bus specification that details a stategy for the interconnection and management of functional blocks that makes up a system-on-chip(SoC).It facilitates "right-first-time" development of embedded processors with one or more CPU/signal processors and multiple peripherals. The AMBA protocol enhances a resuable design methodology by defining a common backbone for SoC modules.

 

    需要知道的是,AMBA总线是ARM提出的一种解决方案,它并非唯一的规范,但是因为ARM的广泛使用,AMBA总线也就成为了事实上的规范了。现在 AMBA总线最新为AMBA 3 specification版本,包括AMBA 3 AXI Interface、AMBA 3 AHB Interface、AMBA 3 APB Interface、AMBA 3 ATB Interface。而s3c2410还只能支持AMBA 2 specification,这个版本包含AMBA 2 AHB Interface、AMBA 2 APB Interface。也就是在s3c2410的框图中看到的两种总线接口。需要注意的是,这两种总线所连的外设是有区别的。AHB总线连接高速外设,低速 外设则通过APB总线互连。显然,对不同总线上的外设,应该使用不同的时钟信号,AHB总线对应Hclk,APB总线对应Pclk。那么事先就应该弄清 楚,每条总线对应的外设有那些,这样在设置好时钟信号后,对应外设的初始化的值就要依此而确定了。

 

    AHB bus上的外设有LCD controller(CONT代表controller,控制器)、USB Host CONT、ExtMaster、Nand CONT和nand flash boot loader、bus CONT、interrupt CONT、power management、memory CONT(sram/nor/sdram等)。

 

    APB bus上的外设有UART、USB device、SDI/MMC、Watch Dog Timer、bus CONT、spi、iic、iis、gpio、rtc、adc、timer/pwm。

 

    3、主时钟源来自外部晶振或者外部时钟。复位后,MPLL虽然默认启动,但是如果不向MPLLCON中写入value,那么外部晶振直接作为系统时钟。 EDUKIT-III的外部晶振有两个,一是用于系统时钟,为12MHz;一个用于RTC,为32.768KHz。以前实验没有向MPLLCON写入数 值,所以系统时钟都是12MHz。从这里也可以发现一个问题,如果外部晶振开始没有焊上,那么系统是无法正常启动的。因为按照上述规则,复位后还没有写入 MPLLCON,这时又没有可以使用的时钟源,所以不会启动。也就是硬件完成后,这个12MHz的晶振是一定要焊上的,才能进行后续的硬件测试工作。

 

二、clock设置的步骤

 

    首先应该读懂下一段:

 

Power-On Reset (XTIpll)
Figure 7-4 shows the clock behavior during the power-on resetsequence. The crystal oscillator begins oscillation within several milliseconds. When nRESET is released after the stabilization of OSC(XTIpll) clock, the PLL starts to operate according to the defaultPLL configuration. However, PLL is commonly known to be unstable after power-on reset, so Fin is fed directly to FCLK instead of the Mpll (PLL output) before the software newly configures the PLLCON.Even if the user does not want to change the default value of PLLCONregister after reset, the user should write the same value into PLLCON register by software.


The PLL restarts the lockup sequence toward the new frequency only after the software configures the PLL with a new frequency. FCLK can be configured as PLL output (Mpll) immediately after lock time.

 

    这个主要是基于PLL的特点。简单的描述就是,上电复位后,几个ms后晶振起振。当OSC时钟信号稳定之后,nRESET电平拉高(这是硬件自动检测过 程)。这个时候,PLL开始按照默认的PLL配置开始工作,但是特殊性就在于PLL在上电复位后开始是不稳定的,所以s3c2410设计为把Fin在上电 复位后直接作为Fclk,这是MPLL是不起作用的。如果要想是MPLL起作用,那么方法就是写入MPLLCON寄存器值,然后等待LOCKTIME时间 后,新的Fclk开始工作。下面把这些步骤分来来描述,软件步骤部分结合程序进行。

 

    1、上电几个ms后,晶振输出稳定。Fclk=晶振频率。nRESET恢复高电平后,cpu开始执行指令,这完全是硬件动作,不需要软件设置。

 

    2、第一步软件工作: 设置P M S divider control,也就是设置MPLLCON寄存器。

 

    关于PMS,可以看Figure 7-2.寄存器MPLLCON的设置呢,其实有一定的规则,并非你想要的每个Fclk频率都可以得到。官方推荐了一个表PLL VALUE SELECTION TABLE,要按照这个进行。否则的话,就需要自己按照公式推算,但是mizi公司并不保证你的设置是合适的。所以,如果想要工作在200MHz,还是按 照vivi的推荐值即可。

 

@ step1: set P M S divider control
        mov r1, #CLK_CTL_BASE
        ldr r2, =vMPLLCON_200
        str r2, [r1, #oMPLLCON]

 

    其中,MDIV=0x5c,PDIV=0x04,SDIV=0x00.公式Mpll(Fclk)=(m×Fin)/(p×(2^s))【m=MDIV+8, p=PDIV+2,s=SDIV】

 

    3、第二步软件工作: 设置CLKDIVN。

    这一步是设置分频系数,即Fclk为cpu主频,Hclk由Fclk分频得到,Pclk由Hclk分频得到。假设Hclk是Fclk的二分频,Pclk是 Hclk的二分频,那么分频系数比就是Fclk:Hclk:Pclk=1:2:4.那么Hclk为100MHz,总线时钟周期为10ns。Pclk为 50MHz。

@ step2: change clock divider
        mov r1, #CLK_CTL_BASE
        mov r2, #vCLKDIVN
        str r2, [r1, #oCLKDIVN

    4、第三步软件工作: CLKDIVN的补充设置

If HDIVN = 1, the CPU bus mode has to be changed from the fast bus mode to the asynchronous bus mode using following instructions.
MMU_SetAsyncBusMode
        mrc p15,0,r0,c1,c0,0
        orr r0,r0,#R1_nF:OR:R1_iA
        mcr p15,0,r0,c1,c0,0
If HDIVN=1 and the CPU bus mode is the fast bus mode, the CPU will operate by the HCLK. This feature can be used to change the CPU frequency as a half without affecting the HCLK and PCLK.

 

    看了上段话,只需要翻译出来就可以了。

 

@ FCLK:HCLK=1:2
.macro MMU_SetAsyncBusMode
        mrc p15, 0, r0, c1, c0, 0
        orr r0, r0, #(R1_iA | R1_nF)
        mcr p15, 0, r0, c1, c0, 0
.endm
        @ step3: set asynchronous bus mode
        MMU_SetAsyncBusMode

    5、第四步软件工作:等待locktime时间,让新的Fclk生效

@ step4: stay locktime
        mov r1, #CLK_CTL_BASE
        ldr r2, =vLOCKTIME
        str r2, [r1, #oLOCKTIME

 

    6、对外设的影响

 

    在这个实验中,主要是有两个需要改变,一个外设是UART,一个外设是SDRAM。

    (1)UART,它是接在APB总线上,所以对应的时钟信号为Pclk,现在为50MHz。如果想要设置波特率为115200bps,那么根据公式 UBRDIV0=(int)(PCLK/(bps*16))-1计算,应该为26。如果放到程序中,那么应该注意形式。具体如下:

 

UBRDIV0 = ((int)(PCLK/16./UART_BAUD_RATE) -1);

 

    (2)SDRAM,主要的影响因素为刷新频率。前面在SDRAM中没有具体分析,现在可以详细说明。使用了两片HY57V561620CT-H,查看手册 其刷新频率为8192 refresh cycles/64ms,所以刷新周期64ms/8192=7.8125us。看寄存器REFRESH的各个位的设置情况:

 

    ·REFEN[23]:开启自动模式,设为1

    ·TREFMD[22]:设为Auto refresh模式,设为0

    ·Trp[21:20]:看看RAS precharge Time,查看SDRAM手册,发现-H系列此参数至少为20ns,现在Hclk对应的时钟周期为10ns,所以至少应该为2个clock。可以设为00

    ·Tsrc: Semi Row Cycle Time,也就是RAS Cycle Time,至少65ms,所以至少得6.5clock,按照可选值,应该设置为11

    ·Refresh[10:0]:

    公式refresh period = (2^11 - refresh_count +1)/Hclk,由此推导出refresh_count=2^11+1-refresh period*Hclk。带入数值,计算得出1268=0x04f4,这个数值要用四舍五入,减少误差。

    ·其余的保留值,均设置为0

    由此得出该寄存器的值应该为0x008c04f4。


关键字:s3c2410  时钟频率 引用地址:s3c2410 时钟频率

上一篇:S3C2410 Flash 烧写
下一篇:S3C2410 LED驱动程序

推荐阅读最新更新时间:2024-03-16 15:22

MSP430内部时钟(DCO)频率测量
时钟电路 数字振荡器(DCO) 电路按信号形式可分为数字和模拟。 数字电路处理的是数字信号。数字电路又可分为组合逻辑电路与时序逻辑电路。时序电路可以完成组合电路的功能,反之则不成立。两者的区别是时序电路与信号的时间有关,即有一个时钟信号。 在MSP430芯片中有3个时钟源,内部晶体振荡器(DCO)、外部低速时钟源(XT1)、外部高速时钟源(XT2)。DCO的工作可以不要外部不要外部器件的支持,因此降低了电路的复杂程度,但是它是基于RC的工作原理,工作频率不稳定。XT1、XT2需要外接一个晶振,所以工作频率稳定。采用两个外部晶振是让一个工作在高频一个工作在低频,高频晶体可以使程序执行速度快,低速晶体使芯片功耗降低。 /
[单片机]
基于ARM处理器的远程参数测量的设计
1 引言 嵌入式系统由于性价比高开发周期短等优点目前得到了迅猛发展,各类基于 ARM 处理器的应用开发更是如火如荼。这里介绍基于 ARM9 嵌入式芯片 S3C2410 构建的测量监控系统,该系统设计方案先进,集成度较高,在实践中得到了广泛的应用。   2. 嵌入式 ARM9 S3C2410X 简介   S3C2410X 是三星公司提供的基于 ARM920T 内核的 32 位 RISC 处理器,它的低功耗、低价格、高性能设计特别适合于手持设备和通用嵌入式应用场合,为降低整个系统的成本,它提供了丰富的内部设备,包括分开的 16KB 指令 Cache 和 16KB 数据 Cache,MMU 虚拟存储器管理,24bbp 模式
[单片机]
基于ARM处理器的远程参数测量的设计
MMU的理解
MMU,全称Memory Manage Unit, 中文名 存储器管理单元。 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以 内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面 前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥
[单片机]
s3c2410启动代码分析
嵌入式系统对功能、可靠性、成本、体积、功耗等均有严格要求,以ARM体系结构为基础的各种RISC微处理器具有灵活的特性和强大的性能,在嵌入式系统中得到了广泛的应用。 ---S3C2410是三星公司基于ARM920T设计的一款处理器,在开发基于S3C2410的系统的过程中,如何让系统快速稳定地启动是一个重要问题。嵌入式系统的资源有限,程序通常都是固化在ROM中运行。但在实际应用中,为提高系统的实时性,加快代码的执行速度,系统启动后程序往往要被搬移到RAM中,因为RAM的存取速度要比ROM快得多,这样大大提升系统的性能。启动程序要完成的任务包括:硬件初始化,系统存储系统的配置,复制二级中断向量表。 启动程序过程 ● 系统硬件初始化 --
[单片机]
基于S3C2410开发板的U-BOOT移植解决方案
引言 随着嵌入式系统的日趋复杂,它对大容量数据存储的需求越来越紧迫。而嵌入式设备低功耗、小体积以及低成本的要求,使硬盘无法得到广泛的应用。NAND闪存设备就是为了满足这种需求而迅速发展起来的。目前关于U-BOOT的移植解决方案主要面向的是微处理器中的NOR 闪存,如果能在微处理器上的NAND 闪存中实现U-BOOT的启动,则会给实际应用带来极大的方便。 U-BOOT简介 U-BOOT 支持ARM、 PowerPC等多种架构的处理器,也支持Linux、NetBSD和VxWorks等多种操作系统,主要用来开发嵌入式系统初始化代码bootloader。bootloader是芯片复位后进入操作系统之前执行的一段代码,完成由硬件启动到操
[单片机]
基于<font color='red'>S3C2410</font>开发板的U-BOOT移植解决方案
S3c2410裸板程序入门---串口
流水灯跑起来了,是不是有点小兴奋,一鼓作气再来玩玩其他的,用PC机写程序,出了问题可以用perror等打印出信息,给调试带来了很大方便,可是板子上没有显示屏,没法打印怎么办?这次就写一个通过串口向PC机串口调试终端打印信息的小程序,方便以后的调试。串口通信的基本知识就不说了哈,网上很多的,直接上代码: uart.c 1 #include s3c2410.h 2 3 void uart_sendchar(char a) 4 { 5 if(a == 'n'){ 6 while( !(UTRSTAT0 & (0x1 2)) ); 7 UTXH0 = 'r'; 8
[单片机]
S3C2410 GPIO接口
GPIO就是一些pin,可以通过它们: (1). 输出:高电平 / 低电平 (2). 读入pin的状态:高电平 / 低电平 S3C2410共有117个GPIO pin,分为8组: GPA / GPB / GPC / GPD / GPE / GPF / GPG / GPH 可以通过设置register,来确定某个pin用于input / output / 或其它特殊功能. 比如: GPH6可作为:Input / Output / 用于UART 1. S3C2410 GPIO硬件介绍 (1) GPxCON ---- 用于选择pin的功能 它用于配置pin的功能。
[单片机]
<font color='red'>S3C2410</font> GPIO接口
ARM9学习4-S3C2410的启动代码分析-For ADSv1.2
通常,启动代码是指CPU复位后到进入C语言的main函数之前需要执行的那段汇编代码.这是由于C语言程序的运行需要具备一定的条件,比如:分配好外部数据空闿堆栈空间和中断入口等筿另外汇编代码可以更直接的对硬件进行操使效率更高. 通常启动代码是放在2410init.s汇编文件;特殊功能寄存器定义在2410addr.s;Memory Bank 配置在mencfg.s;还有系统的选项等在option.s文件;2410init.s不仅包括复位后执行的代码,还包括CPU进入掉电模式,产生中断等和处理器直接相关的,用汇编实现的代码. ;========================================= ; NAME: 2410IN
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved