嵌入式系统第三套试题

更新时间:2024-03-07 20:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.与个人计算机(PC)相比,嵌入式系统具有许多不同的特点。下面不属于嵌入式系统特点的是()。

A) 嵌入式系统与具体应用紧密结合,具有很强的专用性

B) 嵌入式系统通常包含在非计算机设备(系统)中,具有隐蔽性

C) 嵌入式系统的软硬件资源往往受到严格的限制

D) 嵌入式系统性能较低,价格也比较便宜

【解析】:与人们日常使用的个人计算机相比,嵌入式系统具有许多不同的特点。1)专用型,嵌入式系统与具体应用紧密结合,具有很强的专用型;2)隐蔽性,嵌入式系统通常总是非计算机设备(系统)中的一个部分,它们隐藏在其内部,不为人知;3)资源受限,嵌入式系统通常要求小型化、轻量化、低功耗及低成本,因此其软硬件资源受到严格的限制;4)高可靠性;5)实时性;6)软件固化。综上所述,D选项不属于嵌入式系统的特点。

2.嵌入式系统中的CPU具有一些与通用计算机所使用的CPU不同的特点,下面不是其特点的是()。

A) 支持实时处理

B) 低功耗

C) 高主频

D) 集成了测试电路

【解析】:嵌入式系统中的CPU一般具有4个特点:1)支持实时处理;2)低功耗;3)结构可扩展;4)集成了测试电路。因此,该题选C。

嵌入式系统使用的片上系统英文缩写名为SoC,下面关于SoC叙述中错误的是()。

A) SoC也称为系统级芯片,它是电子设计自动化水平的提高和集成电路制造技术飞速发展的产物

B) SoC芯片中既包含数字电路,也可以包含模拟电路,甚至还能包含数字/模拟混合电路和射频电路

C) SoC将嵌入式系统的几乎全部功能都集成在一块芯片中,单个芯片就能实现数据的采集、转换、存储、处理和I/O等多种功能

D) SoC的设计制造难度很大,目前还没有得到广泛使用

【解析】:随着电子设计自动化水平的提高和VLSI制造技术的飞速发展,半导体加工已经从微米、亚微米进入到深亚微米的时代,单个芯片上可以集成几亿个甚至几十亿个晶体管,因而能够把计算机或其他一些电子系统的全部电路都集成在单个芯片上,这种芯片就是所谓的片上系统。SoC芯片中既包含数字电路,也可以包含模拟电路,甚至还能包含数字/模拟混合电路和射频电路。由于SoC将嵌入式系统的几乎全部功能都集成在一块芯片中,单个芯片就能实现数据的采集、转换、存储、处理和I/O等多种功能。目前,大多数32位的嵌入式处理芯片均为SoC,SoC逐渐成为集成电路设计的主流发展趋势。综上可知,D选项不正确。

微电子技术特别是集成电路制造技术是嵌入式系统发展的重要基础,下面关于集成电路的叙述中错误的是()。

A) 集成电路的集成度指的是单个集成电路所含电子元件(如晶体管、电阻、电容等)的数目多少

B) 根据集成度的高低,集成电路可以分为小规模、中规模、大规模、超大规模和极大规模等几种

C) 嵌入式系统中使用的处理器芯片属于大规模集成电路

D) 集成电路的制造工艺复杂且技术难度非常高,许多工序必须在恒温、恒湿、超洁净的无尘厂房内完成

【解析】:集成电路根据其集成度的高低,即单个集成电路所含电子元件(如晶体管、电阻、电

容等)的数目可以分为小规模(SSI)、中规模(MSI)、大规模(LSI)、超大规模(VLSI)和极大规模(ULSI)等几种。集成电路的制造大约需要几百道工序,工艺复杂且技术难度非常高,许多工序必须在恒温、恒湿、超洁净的无尘厂房内完成,生产、控制及测试设备异常昂贵。嵌入式处理芯片大多属于VLSI和ULSI。故该题选择C。

文字信息是人们用以表达和传递信息的媒体之一,大多数嵌入式系统都必须处理文字信息。下面关于文字信息的表示及其处理的叙述中,错误的是()。

A) 目前使用最广泛的西文字符集是ASCII字符集,它包含96个可打印字符

B) GB2312是我国目前广泛使用的汉字编码国家标准之一

C) GB2312包括6000多汉字,但不包含西文、俄文等其他字符

D) GB2312字符集中的汉字与符号在系统中采用双字节表示

【解析】:目前计算机中使用最广泛的西文字符集及其编码是ASCII字符集和ASCII码,即美国标准信息交换码。基本的ASCII字符集共有128个字符,包括96个可打印字符和32个控制字符,每个字符使用7个二进制位进行编码。我国目前广泛使用的汉字编码国家标准有GB2312和GB18030。GB2312国标字符集中包含3755个一级常用汉字和3008个二级常用汉字,此外还有682个图形符号(包括拉丁字母、俄文、日文平假名与片假名、希腊字母、汉语拼音等)。这些汉字和图形符号在计算机内部都采用2字节(16个二进制位)来表示。所以,此题答案是C。

假设一台数码相机一次可拍摄16位色1024 x 1024的彩色相片共80张,数据压缩比平均是4,则它使用的存储器容量大约是()。

A) 40MB

B) 60MB

C) 80MB

D) 120MB

【解析】:此题主要为数字图像的数据量计算。图像数据量的计算公式如下:图像数据量=图像水平分辨率*图像垂直分辨率*像素深度/8。由此可知,此题中的数码相机一张照片大小为1024*1024*16/8=2M,所以需要使用的存储器容量为2M*80/4=40M。故选A。

在数字音频信息数字化过程中,正确的处理顺序是()。

A) 量化、取样、编码

B) 取样、编码、量化

C) 取样、量化、编码

D) 编码、取样、量化

【解析】:音频信息数字话的过程是取样、量化、编码。故此题选C。

互联网借助TCP/IP协议把许多同构或异构的计算机网络互相连接起来,实现了遍布全球的计算机的互连、互通和互操作,其中的IP协议起着关键性的作用。下面有关IP协议的叙述中,错误的是()。

A) IP地址解决了网络中所有计算机的统一编址问题

B) IP数据报是一种独立于各种物理网络的数据包格式

C) 目前广泛使用的是IP协议的第6版(IPv6),IPv4已经很少使用

D) 路由器(router)是实现网络与网络互连的关键设备

【解析】:关于IP协议,目前大量使用的还是IPv4,故C项错误,其余三项正确。

以下关于嵌入式处理器的说法正确的是()。

A) RISC是复杂指令集结构计算机

B) 哈佛结构是程序与数据统一的存储结构

C) ARM处理器的指令编码全部为32位

D) ARM Cortex-M是面向控制的嵌入式Cortex处理器

解析】:RISC的英文全称是Reduced Instruction Set Computer,中文是精简指令集计算机,故A项错误;哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,是一种并行体系结构

,故B项错误;ARM处理器本身是32位设计,但也配备16位指令集,其中,ARM指令为32位的长度,Thumb指令为16位长度,故C项也不正确。综上,此题选择D

关于ARM处理器的工作模式,以下说法错误的是()。

A) 用户模式是程序正常执行的模式

B) 快速中断模式处理高速中断,用于高速数据传输或通道处理

C) 管理模式用于操作系统的保护模式,处理软中断

D) 系统模式用于处理未定义的指令陷阱

【解析】:ARM处理器有多种工作模式,其中用户模式(usr),ARM处理器正常的程序执行状态;系统模式(sys),运行具有特权的操作系统任务;快中断模式(fiq),支持高速数据传输或通道处理;管理模式(svc),操作系统保护模式。除此之外还有数据访问终止模式(abt)、中断模式(irq)、未定义指令终止模式(und)。综上,D项错误,故选择D。

以下关于ARM处理器CPSR寄存器说法错误的是()。

A) CPSR记录ARM的工作状态

B) CPSR决定ARM工作模式

C) CPSR可设定是否允许外部中断和快速中断

D) CPSR是ARM的控制寄存器

【解析】:ARM处理器的CPSR寄存器是程序状态寄存器,包含条件码标志,中断禁止位,当前处理器模式以及其他状态和控制信息。故此题选择D。

关于ARM处理器的异常,以下说法错误的是()。

A) 复位异常级别最高

B) FIQ是外部中断异常

C) 每个异常中断向量占据4个字节

D) 不同类型的异常中断其中断服务程序入口地址不同

【解析】ARM有七种异常类型,复位异常、数据访问中止异常、快速中断请求异常(FIQ)、一般中断请求(IRQ)、预取指令异常、软件中断异常、未定义异常。每个异常中断向量占据4个字节,不同类型的异常中断其中断服务程序入口地址不同,其中复位异常级别最高。故此题选B。

以下关于ARM处理器说法正确的是()。

A) 小端格式是指数据的高字节存储在高字节地址中,低字节数据存放在低字节地址中

B) ARM处理器支持8位、16位、24位和32位数据处理

C) MPU为ARM处理器的存储器管理单元

D) MMU为ARM处理器的存储器保护单元

【解析】:大端模式,是指数据的高位保存在内存的低地址中,而数据的低位保存在内存的高地址中,小端模式,是指数据的高位保存在内存的高地址

中,而数据的低位保存在内存的低地址中;ARM处理器支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;MPU为ARM处理器的内存保护单元,MMU是ARM处理器的内存管理单元。综上,此题选择A。

关于ARM处理器的命名,以下说法错误的是()。

A) ARM11之前的命名中TDMI中的T的含义是Thumb,即支持高密度16位Thumb指令集

B) ARM11之后,采用ARM Cortex来命名

C) ARM Cortex-R为高端应用型Cortex处理器

D) ARM Cortex-M系列处理器内部没有MMU部件

【解析】:此处ARM处理器命名主要是ARM内核命名。在ARM Cortex之前,ARM内核的命名中T表示支持高密度16位的Thumb指令集;ARM11以后则以Cortex命名,分为三个系列,-A,-R,-M系列,分别面向高端应用、实时控制和微控制器。其中ARM Cortex-M内部没有MMU。所以这题选择C。

某ARM指令完成的功能是\如果相等,则进行带进位的加法\,该指令是()。

A) ADCNE R1,R2,R3

B) ADDEQ R1,R2,R3

C) ANDEQ R1,R2,R3

D) ADCEQ R1,R2,R3

【解析】:ADD和ADC分别表示加操作和带进位加操作,而AND表示逻辑与操作,NE和EQ分别表示不想等和相等的判断,故此题选择D项。

以下ARM指令中属于寄存器间接寻址的指令是()。

A) TST R1,#0xFE

B) LDRB R1,[R2]

C) MOV R1,R0,LSL#3

D) BIC R0,R0,#0x0B

【解析】:寄存器间接寻址就是以寄存器中的值作为操作数地址,而操作数本身存放在存储器中。用于间接寻址的寄存器必须用[ ]括起来。因此,只有B选项正确,故选B。

以下对伪指令的解释错误的是()。

A) DCD 0x12;在内存区域分配一个32位字的内存空间并初始化为0x00000012

B) CODE16;伪指令通知编译器,其后的指令序列为16位的Thumb指令

C) Test EQU 50;定义一个常量Test值为50,不能定义32位常数

D) IMPORT Main; 该伪指令通知编译器当前文件要引用标号Main,但Main在其他源文件中定义

【解析】:DCD为ARM汇编器所支持的数据定义伪指令,用于分配一片连续的字存储单元并用指定的数据初始化,A项正确;CODE16伪指令通知编译器,其后的指令序列为16位的Thumb指令,故B正确;EQU是等于伪指令,用于为程序中的常量、标号等定义一个等效的字符名称,Test EQU 50定义标号Test的值为50,C错误;IMPORT伪指令用于通知编译器要使用的标号在其他源文件中定义,但要在当前源文件中引用,而且无论当前源文件是否引用该标号,该标号均会被加入到当前源文件的符号表中,D项解释正确,故此题选择C。

在ARM汇编语言程序设计中常有分支和循环程序的设计,下面指令中应用于分支和循环的指令操作码是()。 ①B ②ADD ③AND ④LDR ⑤STR ⑥MOV ⑦EOR ⑧CMP ⑨BX ⑩TEQ

A) ①和⑨

B) ①和⑧

C) ④和⑤

D) ⑧和⑩

【解析】:一般而言,移植VxWorks操作系统有下列四种操作类型:宿主机移植、体系结构移植、目标板移植和升级以前Tornado集成开发环境版本的BSP到最新版本。故选A。

下列不是实时操作系统的是()。

A) VxWorks

B) RTAI

C) RTLinux

D) Windows7

【解析】:RTOS的特点是响应中断请求并且完成相应中断服务子程序(ISR)的时间非常快。四个选项中,VxWorks、RTAl和RTLinux均是实时操作系统,故此题选择D项。

关于硬件抽象层,下面的描述中错误的是()。

A) 硬件抽象层是嵌入式硬件电路板的最基本软件

B) 硬件抽象层包含嵌入式软件中直接访问底层硬件的例程集合

C) HAL的函数是移植操作系统的基础

D) 硬件抽象层是操作系统内核的重要组成部分

【解析】:硬件抽象层(HAL)最早由微软公司在研发Windows NT操作系统时提出,在嵌入式领域,硬件抽象层主要用来简化嵌入式操作系统的移植作业,其定义与微软公司在Windows NT 开发时的实现目标基本一致,指的是嵌入式软件中直接访问底层硬件的例程集合。在嵌入式系统软件结构中增加的HAL位于硬件电路板和操作系统内核之间,它是嵌入式硬件电路板的最基本软件,HAL的函数是移植操作系统的基础。故A、B、C项正确,此题选择D。

在Bootloader的stage1中,以下各步骤的顺序应为:()。

1.跳转到stage2的C程序入口点 2.为加载stage2准备RAM空间

3.拷贝stage2的执行代码到RAM空间中

4.基本硬件初始化

A) 2413

B) 4231

C) 4213

D) 4321

【解析】:Bootloader的stage1的基本步骤(按执行先后顺序列出)为:基本硬件初始化,为加载stage2准备RAM空间,拷贝stage2的执行代码到RAM空间中,设置栈区指针SP,跳转到stage2的C程序入口点。故正确顺序为4231,选择B。

下列不是单内核操作系统的是()。

A) Unix

B) Windows CE

C) Android OS

D) iOS

【解析】:单内核结构是传统传统操作系统采用的结构,也成为宏内核(Macro Kernel)。Unix、嵌入式Linux、WinCE、Mac OS、Android OS和DOS操作系统都是典型的单内核操作系统。故此题选择D

嵌入式Linux中,不属于Linux内核部分的功能是()。

A) 用户界面

B) 内存管理

C) 网络接口

D) 进程间通信

【解析】:Linux内核主要由5个子系统组成,进程调度(SCHED),内存管理(MM),虚拟文件系统(VFS),网络接口(NET),进程间通信(IPC)。A项用户界面并不属于内核部分的功能,所以选择A。

嵌入式系统的开发有一些不同于通用计算机应用开发的特点,下面不属于嵌入式系统开发特点的是()。

A) 通常需要固化程序,即把软件代码烧写到非易失性存储器中

B) 应用软件必须在基于嵌入式操作系统平台上来开发

C) 通常采用宿主机-目标机的开发架构

D) 软件开发中通常涉及许多底层的硬件控制程序

【解析】:嵌入式应用产品的产品生命周期短,上式时间紧,功耗限制严,开发环境变化大,因此嵌入式系统的开发有些不用于通用计算机应用开发,主要有以下特点:1.使用宿主机-目标机的开发架构;2.与底层硬件控制程序的关系密切;3.软硬件资源受限制;4.需要固化程序。故此题选择B。

嵌入式系统开发中,要想准确地定位软件和硬件中出现的错误,必须借助多种硬件和软件开发调试工具。下面所列出的不属于嵌入式系统开发调试工具的是()。

A) 在线仿真器

B) JTAG适配器

C) 示波器

D) 传感器

【解析】:嵌入式应用产品的产品生命周期短,上式时间紧,功耗限制严,开发环境变化大,因此嵌入式系统的开发有些不用于通用计算机应用开发,主要有以下特点:1.使用宿主机-目标机的开发架构;2.与底层硬件控制程序的关系密切;3.软硬件资源受限制;4.需要固化程序。故此题选择B。

大题、

1、某食堂的售饭系统由一个后台数据库系统及若干个前台刷卡机组成,其基本功能具体描述如下:

a、刷卡机的硬件组成中,除了必须的最小硬件系统外,还需要IC卡读写模块、8段LED组成的显示模块、键盘模块、蜂鸣器模块、RS-485通信模块等。

b、客户需要事先办理本系统的消费IC卡,预存若干金额,办卡信息及预存金额存储在后台数据库系统中。 c、客户消费时,用IC卡在刷卡机上支付。支付时,由售饭员在刷卡机上输入客户缴费金额且在LED显示器上显示,然后客户刷卡,若IC卡合法,则把缴费金额和IC卡信息传输给后台数据库系统。若IC卡不合法,用蜂鸣器发不合法提示音。

d、后台数据库系统接收到刷卡机的信息后,将根据IC卡号查询出该卡的余额,若余额大于等于应缴费额,则进行扣费,再把当前余额及扣费正确信息回传给刷卡机。若余额小于应缴费额,则回传扣费不正确信息给刷卡机。 e、刷卡机接收到回传的信息后,显示回传的余额,且若是扣费正确信息,则用蜂鸣器发\扣费正确\提示音;若是扣费不正确信息,则用蜂鸣器发\扣费不正确\提示音。

根据上述功能要求的描述,若采用S3C2410芯片为核心来构建刷卡机的硬件平台,请完善下面的叙述(程序)和回答有关的问题。

(1)在设计硬件时,最小的硬件系统是保证系统能正常工作的必要硬件组成。它包括电源电路、 ___【1】____、复位电路、调试测试接口、以及 ___【2】____ 。

(2)若在硬件设计时,选用8个共阴极的8段LED(其排列如图1所示)组成2组显示器(1组4个8段LED),用于显示当前消费金额和余额。

若采用GPC0~GPC6、GPC7外接同向驱动后,分别连接到显示\消费金额\的LED显示器段信号线a~f、dp上,采用GPD0~GPD3外接同向驱动后分别控制该组显示器中低数据位~高数据位的4个8段LED位信号线。

另外采用GPC8~GPC14、GPC15外接同向驱动后,分别连接到显示\余额\的LED显示器段信号线a~f、dp上,采用GPD4~GPD7外接同向驱动后分别控制该组显示器中低数据位~高数据位的4个8段LED位信号线。

那么,GPC0~GPC15引脚的功能为: ___【3】____ ,GPD0~GPD7引脚的功能为: ___【4】____ 。初始化GPC0~GPC15引脚功能的语句可以是:

//rGPCCON是端口C的控制寄存器,其格式见后面附录 rGPCCON = ___【5】____ ;

初始化GPD0~GPD7引脚功能的语句可以是

//rGPDCON是端口D的控制寄存器,其格式见后面附录 rGPDCON=((rGPDCON|0x00005555)& ___【6】____);

若只在\余额\显示器中的次高数据位LED上显示字符\,相关驱动程序中可用下面语句实现。

rGPCDAT = ___【7】____;//输出\的段信号

rGPDDAT = ___【8】____;//输出次高数据位被点亮的控制信号

(3)刷卡机上输入客户缴费金额的键盘,在设计时采用非标准键盘组成,键盘接口设计成4×4的阵列(其按键排列示意图如图2所示)。键盘接口电路中选用GPE0~GPE3来输出键盘行扫描信号,选用GPE4~GPE7来输入键盘列信号。软件设计时设计者自行设计了键盘扫描函数,请你补充完善之:

//*KEYOUTPUT是键盘扫描时的输出地址,KEYINPUT是键盘读入时的地址

#define KEYOUTPUT (*(volatile INT8U *)0x56000044)

#define KEYINPUT (*(volatile INT8U *)0x56000044)

INT16U ScanKey()

{

INT16U key=0xFFFF;

INT16U i;

INT8U temp=0xFF,output;

//rGPECON是端口E的控制寄存器,其格式见后面附录

rGPECON= ((rGPECON &0xFFFFFF00) | ___【9】____ ); //初始化GPE0~GPE3为输出

rGPECON= rGPECON & ___【10】____ ; //初始化GPE4~GPE7为输入

//下面判断键盘中是否有键按下

for (i=1;(( i<= 8)&&(i>0)); ___【11】____ )

{

output |= 0xFF;

output &= (~i);

KEYOUTPUT=output;

temp = KEYINPUT;

if ((temp&0xF0)!= ___【12】____ )//判断列信号是否为全\

{

key = (~i);

key <<= 8;

key |= ((temp&0xF0)|0x0F); //求得按键的返回值

return (key); //函数返回按键对应的值

}

}

return 0xFFFF;

}

应用程序中可根据上面的键盘扫描函数的返回值,来判断是否有按键按下,并确定是哪个按键按下。例如:若返回值为: ___【13】____时,可知是键盘中的\键按下,

若返回值为: ___【14】____时,可知是键盘中的\确认\键被按下。若无键按下时,返回值应为: ___【15】____。

(4)刷卡机与后台数据库系统通信采用RS-485总线。因此在硬件设计时,需要采用S3C2410芯片内部的 ___【16】____部件外加电平转换芯片等来实现。若在软件设计时,其初始化程序中波特率设置为9600bps,数据格式设置为:8位数据位、无校验、1位停止位。那么,1秒时间内最多能传输 __【17】_____字节的信息。

(5)刷卡机上的应用软件是在无操作系统环境下开发的。设计者可以自行设计系统的启动引导程序,在该程序中完成异常向量设置、堆栈指针设置以及必要的硬件初始化。ARM9体系结构中规定的复位异常所对应的异常向量地址为 ____【18】___。系统上电/复位后,将从该地址处开始执行程序,因为ARM9体系结构中规定的各异常向量地址之间间隔通常为 __【19】_____个字节。因此,复位异常向量地址处通常存储一条 ___【20】____指令的代码。 附录

【解题思路】

本题考查以S3C2410为背景的嵌入式应用系统开发。题中应用为机械设备的控制器系统开发。包括通用I/O口GPIO的使用及相应的初始化编程,其中,GPC和GPD作为LCD显示器接口引脚,GPE作为输入输出;基于UART的RS-232接口电路设计及相应的初始化编程设置;UART的通信控制;内部定时器和计数器的设置及使用;基于S3C2410的无操作系统的嵌入式系统如何构建其启动引导程序。

【参考答案及解析】

【1】 0xFFFF5555;和0相与清零,和1相与保持不变。和0相或保持不变,和1相或置1。00

为输入,01为输出,则初始化GPIO端口E的GPE0~GPE7引脚功能为输出的语句是:rGPECON=(rGPECON|0x00005555)&0xFFFF5555

【2】 0x0020;通过GPE5引脚输出\来驱动执行机构动作,则将第6位置1,即rGPEDAT=

rGPEDAT | 0x0020。

【3】 0x000000AA;8位数据位、1位停止位、奇校验。在ULCON中,[1:0]:11 = 8位;[2]:0 =

1位停止位;[5:3]:100 = 奇校验;[6]:0 = 正常操作模式。即rGPHCON=(rGPHCON&0xFFFFFF00)| 0x000000AA。

【4】 0x23;此处对线路控制寄存器进行相应设置。

【5】 (9600×16) + 0.5;对所需的波特率进行设置。

【6】 872;9600/(8+3)=872字节。

【7】 4.7;4*1024/872=4.7秒。

【8】 41250;定时器输入时钟频率= PCLK/(预分频系数+1)/分割器值,计数常数=定时

时间间隔/(1/定时器输入时钟频率),即可得本题答案。

【9】 0x00000003;TCFG0中[7:0]位确定Timer0的预分频系数,题设为3。

【10】 0x00000003;TCFG1中[3:0]位确定Timer0的分频器值,题设为16。

【11】 0xA122;设置计数常数。

【12】 0x00000002;更新TCNTB0和TCMPB0。

【13】 C;GPC和GPD作为LCD液晶屏接口引脚。

【14】 D;

【15】 0xAAAAAAAA;00为输入,01为输出,将端口C和D均设置为输出。

【16】 0xAAAAAAAA;

【17】 0x00000018;ARM9体系结构中规定的IRQ异常所对应的异常向量地址为0x00000018。

【18】 4;IRQ异常向量地址与下一个异常向量地址之间间隔为4个字节。

【19】 0xC0;R0\清0\后用指令ORR R1,R0,#0x12| 0xC0和MSR CPSR_CXSF,R1来使CPU核进入IRQ模

式。

【20】 BL _main;

本文来源:https://www.bwwdw.com/article/dhga.html

Top