Qualcomm手机开机全过程大揭密

Qualcomm手机开机全过程大揭密
Qualcomm手机开机全过程大揭密

摘要:

本文试图通过代码来深入剖析Qualcomm手机开机的整个过程,即从按下开机键一直到出现待机界面,Qualcomm的手机软件在整个流程中究竟完成了哪些工作。本文的主要目标是理清手机的初始化流程,并为今后Amoi定做初始化工作提供一个参考。

关键字:开机、Rex、TMC、ui_task、CoreApp

一、开机的简要流程分析

Qualcomm的平台软件支持两种启动方式:一种是Nor Flash启动方式,另外一种就

是Nand Flash启动方式。Nor Flash启动方式就相当于硬件直接找到一个入口点开始执行代码,相比较而言会比较简单,且Amoi没有采用此种方式,所以本文对于这种方式不做详细分析。另外一种就是Nand Flash启动方式,这种方式和PC的启动方式比较相像,也是Amoi采用的Boot方式,下面将详细分析在此方式下面的开机过程。

按下开机键之后,将产生一个时钟中断,从而通知AMSS主芯片的Boot Load硬件去将放置于Nand Flash 上面的第一个Block(8K)里面的Boot代码Copy到内核内存(RAM,这个内存应该是CPU自带的内存,同后面提到的SDRAM有一定区别,可以把它当作CPU的Cache)的0xFFFF0000地址,并开始执行Boot 代码。Boot的主要任务是完成整个系统的硬件初始化工作(类似于PC上面的BIOS所完成的硬件自检工作,至于Boot的详细工作机制,后文会有详细描述)。Boot所完成的工作里面,最重要的一件事就是会将整个手机软件代码(AMSS软件包)拷贝到SDRAM中,并最后将控制权交给AMSS软件。说白了,就是Boot 执行完成之后,代码的执行点将由Boot跳转到AMSS软件的的入口点函数main().(此函数在mobile.c里实现)。

代码运行到了Main()之后,在这个函数里面将完成操作系统(rex)的初始化工作,其实现方法是调用rex_init()。Rex_init()完成的工作很简单:

1.完成操作系统必要的一些数据结构(timer链表、任务链表等))的初始化之外;

2.接下来,它创建了三个任务,分别是:rex_idle_task、rex_dpc_task和tmc_task。

Idle任务没什么好解释的,目前这个任务为空,什么也没做,dpc_task目前不知道是做什么的,暂时可以不用管。前面的这两个任务都属于操作系统层面的,由操作系统来维护,和手机软件关系不大。哪一个和手机软件关系大呢?答案是:tmc_task。大家可以把这个当作操作系统的入口(主)任务,也可以把它当作整个手机软件的入口任务。即AMSS软件里的所有其它任务的创建和维护就是由这个tmc_task来完成的。

到此为止,整个AMSS软件还并没有跑起来,只是跑到了tmc_task里面了。在tmc_task里面,会调用tmc_init()来完成整个AMSS软件包的初始化工作,其中最重要的一项工作就是调用tmc_define_tasks()将AMSS软件包所有需要的任务都创建起来了。比如说slee_task、dog_task、cm_task、wms_task、ui_task 等。这些任务,一般不需要直接和AL层软件打交道,但请大家记住,手机上所有功能的实现最根本点就是由这些服务组件(Service Task)来完成的。将来大家跟踪一个具体的功能模块时,比如说通话模块,如果需要,可以再去深入研究它的具体实现。

好了,到现在为止,所有的AMSS核心软件就全部跑起来了(手机的功能模块,在软件方面就体现为OS层面的一个任务)。但现在大家还根本看不到Brew和AEE的影子。呵呵,各位不要急。到了这个层面之后,我想稍微多说几句。最早的Qualcomm平台,比如说5xxx系列,是根本没有Brew的,那个时候的AL(Application Layer)层软件开发,是直接调用底层Service task所提供的API来完成相应的工作的。从这种角度来看的话,显然那时的开发是比较郁闷和难度较高的。不过,到了65xx之后,Qualcomm平台引入了Brew,手机开发商就没必要去从这么底层(Service API)的层面进行手机开发了,他们完全可以基于Brew来实现一台手机的所有功能(Qualcomm给我们的参考代码,就是全Brew平台的)。

Brew的运行环境AEE是如何跑起来的呢?关键在于ui_task(),由于ui_task和我们手机开发的关系非常密切,其地位也相当重要,所以,后文我将单独对它进行一个深入的研究与分析。到目前为止,大家只

需要知道ui_task将AEE加载起来了,并且,它起到了一个中间层的作用,即所有AMSS底层服务组件的消息,都将经由ui_task而转到AEE,并最终转到具体的App(Applet)的执行代码里面(HandleEvent())。

注意:

1.上述的开机过程,在每一次按开机键都需要走一遍,即关机之后,整个系统的所有功能都将消失,而不像有些手机,看起来是关了机,但实际上底层还是有一些软件模块在跑。为什么可以肯定地说上述开机过程每次都必须走一遍,原因很简单,因为我们的平台软件是基于Nand Flash启动的,所有的代码都需要Copy到SDRAM才能运行,而关机断电之后,SDRAM里的东东会全部丢失,所以,毫无疑问,上述的过程必须每次开机都执行;

2.关机的过程相对比较简单,系统检测到关机中断之后,将调用tmc_powerdown_handler()来完成关机动作,它将把所有AMSS的任务都Stop掉,并最后调用rex_exit()退出Rex,从而完成整个关机动作。

3.显然,关机动作前,如果有必要,每一个任务必须将它希望保存的信息保存到Flash上面,以便下次开机时可以得到这些信息;

开机流程简图

https://www.360docs.net/doc/0316412069.html,/p-3853281.html

[attach]1237[/attach]

说明:

1.Tmc是操作系统层面和AMSS软件关系最密切的一个任务,不过需要OEM商在此处修改的地方应该

不多;

2.ui_task是在操作系统层面,OEM商需要重点研究清楚的一个任务,它是连接底层Task和上层AL的一个中间层,有可能需要加入OEM商的操作流程;

3.CoreApp是在Brew层面的一个AL层的入口Applet,它其着管理整个上层AL层软件的作用,根据产品需求,这个App需要定做;

4.AEE是整个上层App的运行环境,目前Qualcomm没有公开它的源码,但它的运行机制,Amoi需要好好研究清楚,我将在另外一篇《Qualcomm平台AEE运行机制深入分析与研究》中探讨它的运行机理和调度机制,大家有兴趣可以参考此文;

二、Boot代码深入分析

Boot代码大部分是用汇编语言写的,也有小部分,可能需要由OEM商修改,所以用C语言来写。另外,Boot代码属于Driver范围,所以大家可以在drivers/boot目录里面找到相应的代码。Boot的代码组织得非常模块化,整个boot的入口点是在Boot_function_table.s里面,这个汇编代码里面实际上是将Boot 需要完成的任务封装成了不同的函数,由不同的函数来完成相应的工作,接下来,我将深入分析这些函数所完成的工作,如下所述。

a)mmu_enable_instruction_cache;

这个只有在Nand启动模式时才需要,打开ARM的指令Cache.

b)boot_hw_ctrl_init

此函数主要是完成两条总线(EBI1、EBI2)控制器的初始化,这个函数执行完了之后,系统就可以知道两条总线上连接了哪些设备,同时也可以找得到这些设备,不过,至于单个设备自身的初始化,则不在这里。

[注]

这个函数很重要,OEM商如果需要加新的设备到系统中(挂在两条总线上),则需要定做此模块,目前阶段主要是内存。另外,如前文所述,这个函数是由C语言来写的,主要目的就是为了方便OEM商定做。内存设备的修改,可以在这个模块里找到相应的数据结构,相对还是比较简单的。

c)boot_hw_tlmm_init

1.晶振时钟的初始化;

2.中断表的初始化;

3.GPIO的初始化;

4.Msm本身的驱动,除了EBI2;

d)boot_rom_test

这个函数非常简单,只是做一个很简单的Rom检查.(比对两个标志位来检查,并没有一块一块地去检查)。

e)boot_ram_test

Ram自检,具体算法其实也很简单,就是读、写内存以判断是否成功。

f)boot_ram_init

1.拷贝手机代码从Nand Flash到SDRAM。

a.Image__BB_RAM__Base:Core Code;

b.Image__APP_RAM__Base:App Code;

[注]

上述动作是分块进行的,原因是因为Qualcomm支持分块Boot Load.

2.将Image__ZI_REGION__ZI区域初始化为0;

3.初始化OEM要求的动态Heap;

4.至于代码段里的数据初始化,直接在Image里就完成了(编译器完成);

g)boot_stack_initialize

ARM栈初始化,主要是为分块代码加载而预留的.

h)boot_cache_mmu_init

ARM Mmu初始化

注意:到此为止,整个Boot的工作就告完结了,那么,它又是如何跳到AMSS的main入口点呢?原因很简单,ARM编译器在链接的时候会自动做出一个__rt_entry(),由此函数来完成ARM库函数的初始化,并最后将代码执行点跳转到main()。而__rt_entry()会在boot_reset_handler.s里调用,具体细节,大家可以不用太过关心,只需要明白,Boot跑完之后,手机软件就跑到了main里就Ok了。

三.Ui_task的深入分析

从大的方向来讲,ui_task只完成两件事,一件是必要的初始化工作(这个也是我们所关心的,即ui_task 到底完成了哪些工作);另外一件事就是各种信号量的事件处理,这也是我们比较关心的,即ui_task到底将哪些事件转发给了上层App。搞清楚了上述两点,我们也就能大致把ui_task的承上启下的工作机理研究清楚。

1.ui_Init;

初始化过程中,ui_task主要完成了如下几件事。

a)创建一个用于Kick Watchdog的定时器,这样WatchDog能够及时得到Kick,假如今后发现手机在ui_task里面自动重启,很有可能就是这个定时器的Timeout设置得过短而造成的;

b)注册通话相关的回调,主要是和紧急呼叫相关;

c)电话本初始化,之所以要进行这个工作,主要是加快开机之后AL层软件操作电话本的速度,但这样将有可能导致开机速度过慢,如果开机速度过慢,可以考虑进入待机界面之后,在后台开一个task去完成这项工作;

d)初始化Sound设备;

e)向底层服务任务wms_task注册wms回调,这个回调是在IWms组件里实现的。从这种角度来看,u 帮我们把wms_task和IWMS组件联系起来了,但并没有去将AL层软件和IWMS联系起来,这个工作将是由AL层软件自己去完成。当然,注册回调的这个工作也是可以在AL层完成,之所以在这里完成,而不是在AL层完成,其主要目的是这个工作可以做到与AL层无关,即AL层不需要关心这个事情,但这个事情是短消息功能得于实现的必须步骤;

f)注册键盘消息回调;

通过这个回调,所有的按键消息都将经由底层的hs_task传到此回调函数里。然后回调函数将把所有的按键信息放到一个全局变量ui_key_buffer里面,接着发送一个UI_KEY_SIG信号给ui_task通知它去处理按键信息,至于ui_task如何处理按键消息的,后面的ui_handleSignals里会有详细描述。

g)初始化Lcd,这个工作不是LCD硬件设备的真正初始化,只是一些UI需要用到的LCD数据结构的初始化,和我们关系不大;

[注]

硬件的初始化,全部都在hs_task里面完成,从这种角度来看的话,系统能跑到ui_task里面,表明所有的硬件设备的驱动都已经成功加载。

h)置开机标志ui_powerup为True;

i)注册IPC信号量UI_IPC_SIG,这个可以暂时不管;

j)bridle_InitSWITable的初始化,这个目标,暂时不知道,也可以先略过;

k)初始化资源文件,其主要工作就是在Rom里面建立资源文件的符号链表,这样就可以让系统找到这些资源文件了(资源文件是被编译在代码段的,假如不这样做的话,系统将找不到这些资源文件);

l)Brew运行环境AEE的初始化:AEE_Init,这个函数看不到代码,大家只需要知道,到了这一步,整个Brew也就Run起来了,在AEE初始化完成之后,它将自动启动一个Applet,即CoreStartApp,而CoreStartApp将把CoreApp启动起来;

m)到此为止,ui_task的初始化工作完成;

[注意]

1) 从上述的ui_task的初始化工作可以看出,ui_task并没有完成手机AL层软件的基本功能的初始化,比如说Sim卡检测、网络初始化等,这些工作,应该是在CoreApp里完成的。

2) 真正和手机功能相关的初始化工作,是在CoreApp里完成的,这个Applet的工作机理,后面也会有详细描述;

2.ui_HandleSignals;

ui_task主要完成如下事件的处理。

a)看门狗喂食;

b)TASK_STOP_SIG信号,任务Stop,目前这个任务为空,没做任何事;

c)TASK_OFFLINE_SIG的处理,这几个任务都属于操作系统层面的事件,目前我们可以暂时不管;

d)处理关机信号:CoreAppHandleStopSig(),这个只是处理ui_task在关机前需要完成的任务,比如说发送一个消息给CoreApp让它关掉自己,然后将ui_task关闭;

系统的真正关机信号是由tmc来处理,当它发现需要关机时,调用tmc_powerdown_handler来完成相应的工作,在这里就是给所有的任务发送TASK_STOP_SIG的信号。

深层次的关机处理,不需要我们了解,也没必要去知道,我们只需要知道在ui_task里面把该关的关掉就Ok了。

关机是一个层层深入的过程,每一个App或者任务只需要负责将它们自己创建的资源释放掉就Ok了。而关机的导引线,显然是在CoreApp里截获到关机键之后发送出来的,事实上也是如此。

e)网络掉线时,发送掉线信号给CoreApp;

其实这个信号完全可以在CoreApp里面,自己去注册,然后及时更新自己的网络状态,就不知有没有这种接口函数。

f)处理按键消息,其主要完成如下的工作:

i.打开背光;

ii.特理按键到虚键值的转换;

iii.按键声音的处理;

iv.将按键消息传送到AEE执行环境,由它去负责按键的派发;

[注]

1.背光的打开是由ui默认完成的,那这样的话,假如我不想按键时有背光,是否可行?看来就得修改此处的代码;

2.AEE的按键派发机制如何?它能否保证处于显示最上层的App永远是可以得到Key的App,即假如一个Applet将自身Hide,它是否依然可以得到Key,而其它的Applet是否就不可以得到了?很怕也像EMP 一样出现焦点丢失的情况;

g)处理AEE_APP_SIG信号量,完成AEE的调度工作,这个任务是ui完成的最重要的一项工作,因为上层的App需要定时进行调度,目前看来,这个调度工作是由AEE_APP_SIG触发的,而AEE_APP_SIG这个信号量,则由操作系统层面的一个定时器定时发送的。现在大家只要了解,AEE_Dispatch会定时调用就

Ok了,至于更详细的AEE调度机制,可以参考我的另外一篇《AEE运行机制深入分析与研究》;

h)处理AEE_SIO_SIG信号量,这个看不到代码,暂时略过不管;

3.结论

通过上述对于ui_task的分析,可以看出,ui_task真正和手机功能有关系的(即可能需要定制或者修改的地方),主要就是初始化资源文件和处理按键消息这两部分。至于其它部分,目前都不需要Amoi关心。手机真正功能的实现,比如说开机Logo的显示、Sim卡的检查、Pin码校验等,都是在CoreApp里面完成的。

四.CoreApp的深入分析

目前参考代码里面的CoreApp所完成的工作比较多且杂,主要说来有如下几件事。

a)系统组件初始化;

b)开机Logo的显示;

c)Sim卡检测和Pin码校验;

d)系统状态信息更新;

i.电池状态;

ii.网络信号;

iii.网络模式;

e)IAnnunciator的维护与更新;

f)通话处理,打电话的输入框;

g)主菜单处理;

h)手机各种设置功能的处理;

i)关机键的处理;

目前CoreApp里面的代码,完成了太多的事,其实完全可以剥离成不同的模块来完成,大致可以分成如下几个部分。

1、总控模块;(CoreApp)

总控模块,主要完成手机按下开机键之后的各种初始化工作,同时此模块也是整个手机的控制中心,由它来完成手机的一些全局性工作,主要有如下几项。

1.系统初始化、Sim卡检测和Pin码校验;

2.开机Logo或者开机动画的显示;

3.底层服务程序的启动;(WmsApp、DialApp等);

4.系统配置信息的统一管理;

由于写配置信息到NV上面是一件非常慢的工作,每次上层App改变配置之后都去操作NV,很影响速度。所以,可以在内存中开一个配置信息的Buffer,上层App操作的实际上是这个Buffer,然后由Core 在空闲的时候再统一写到NV上去。

5.关机处理;

[注]

由于CoreApp是在Idle Applet的界面之下,所以,为了能够实现“一键回菜单”的功用,有可能需

要修改ui_task里面的Key处理函数,将所有的Key消息转发给Core,这样Core就可以得到所有的Key 事件了。(现在的ui_task只把Key事件发送给了AEE,而AEE只会将Key事件发送给当前活动Applet)。

2、Idle模块;

主要完成待机界面的画图工作,主要有两部分:

1.系统信息指示栏;

2.待机界面(位图、动画、时钟、日历等);

3.软键

[注]

Idle只负责界面工作,不负责具体的系统状态信息的获取工作,这个工作将由其它模块完成。

3、Polling

手机状态信息查询模块,主要是完成手机各种状态信息的更新与维护。主要有如下几种:

a.电池强度;

b.网络信号强度;

c.网络模式(C/G);

d.PLMN网络名;

e.短消息、通话状态、闹铃;(这个由专门的模块完成,不在Polling之列);

f.各种外设信息;(USB、耳机插入等);

g.其它各种杂项信息;

4、Menu模块

菜单模块主要分两部分,一部分是主菜单的实现,另一个子菜单的实现。一般来讲,手机上的菜单系统应该是由Menu模块去统一完成,而不是由每一个子程序去手动完成。菜单模块一般只需要负责到主菜单、二级菜单和三级菜单就Ok了。三级菜单之后的界面,就由每一个App单独去维护了。

5、其它功能App模块;

每一个功能模块,由一个专门的App来完成,这样的话,模块的独立性强,便于单独开发。模块间通过App启动和消息传送的方式来发生关系和进行模块间通信。

五.后记

到此为止,Qualcomm整个手机从按下开机键到跑到主菜机界面,整个流程一目了然。对于Amoi而言,目前需要关心和定做的部分其实不多,最头疼的当属CoreApp的改造工作,当然这个就是后话了,笔者将在今后的文章中加以详述。

希望本文对于大家理解Qualcomm手机软件的运行流程有一定的帮助,如果有什么问题,请直接联系我,最后谢谢大家耐心把本文看完,谢谢。

六.参考文档

a)80-V1072-1_E_Boot_Block_Downloader.pdf

b)80-V5316-1_K_QCT_Ext_API_RG.pdf

c)driver/boot目录源码

d)service/tmc目录源码

e)app/core目录源码

触摸屏的种类及工作原理

触摸屏种类及原理 随着多媒体信息查询的与日俱增,人们越来越多地谈到触摸屏,因为触摸屏不仅适用于中国多媒体信息查询的国情,而且触摸屏具有坚固耐用、反应速度快、节省空间、易于交流等许多优点。利用这种技术,我们用户只要用手指轻轻地碰计算机显示屏上的图符或文字就能实现对主机操作,从而使人机交互更为直截了当,这种技术大大方便了那些不懂电脑操作的用户。 触摸屏作为一种最新的电脑输入设备,它是目前最简单、方便、自然的一种人机交互方式。它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。触摸屏在我国的应用范围非常广阔,主要是公共信息的查询;如电信局、税务局、银行、电力等部门的业务查询;城市街头的信息查询;此外应用于领导办公、工业控制、军事指挥、电子游戏、点歌点菜、多媒体教学、房地产预售等。将来,触摸屏还要走入家庭。 随着使用电脑作为信息来源的与日俱增,触摸屏以其易于使用、坚固耐用、反应速度快、节省空间等优点,使得系统设计师们越来越多的感到使用触摸屏的确具有具有相当大的优越性。触摸屏出现在中国市场上至今只有短短的几年时间,这个新的多媒体设备还没有为许多人接触和了解,包括一些正打算使用触摸屏的系统设计师,还都把触摸屏当作可有可无的设备,从发达国家触摸屏的普及历程和我国多媒体信息业正处在的阶段来看,这种观念还具有一定的普遍性。事实上,触摸屏是一个使多媒体信息或控制改头换面的设备,它赋予多媒体系统以崭新的面貌,是极富吸引力的全新多媒体交互设备。发达国家的系统设计师们和我国率先使用触摸屏的系统设计师们已经清楚的知道,触摸屏对于各种应用领域的电脑已经不再是可有可无的东西,而是必不可少的设备。它极大的简化了计算机的使用,即使是对计算机一无所知的人,也照样能够信手拈来,使计算机展现出更大的魅力。解决了公共信息市场上计算机所无法解决的问题。 随着城市向信息化方向发展和电脑网络在国民生活中的渗透,信息查询都已用触摸屏实现--显示内容可触摸的形式出现。为了帮助大家对触摸屏有一个大概的了解,笔者就在这里提供一些有关触摸屏的相关知识,希望这些内容能对大家有所用处。 一、触摸屏的工作原理 为了操作上的方便,人们用触摸屏来代替鼠标或键盘。工作时,我们必须首先用手指或其它物体触摸安装在显示器前端的触摸屏,然后系统根据手指触摸的图标或菜单位置来定位选择信息输入。触摸屏由触摸检测部件和触摸屏控制器组成;触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置,接受后送触摸屏控制器;而触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给CPU,它同时能接收CPU发来的命令并加以执行。 二、触摸屏的主要类型

高通8909平台NQ210调试

高通8909平台NQ210调试说明 高通平台电信VOLTE仅在Android 7.1上实现,而原来的NFC解决方案(PN547)只支持到Android6.0,所以有了高通8909+NQ210+Android7.1这个组合,以实现电信VOLTE+NFC。 F9 R4.1+NQ210 NFC性能调试过程中,几点说明: 1,配置文件需要将NXP的RF_BLK参数合入到高通默认参数 2,注重Rx端匹配调节,对读卡性能有较大提升。调试方法详见附件 3,最终的NFC电路可以不用DCDC,也不用MOS管实现读卡、点对点和开关机卡模拟。性能如下,满足我们要求 配置文件 高通参考设计里给了两个配置文件 /system/etc/libnfc-brcm.conf /system/etc/libnfc-qrd_default.conf 其中libnfc-qrd_default.conf没有NXP_RF_CONF_BLK的六组配置参数,NXP_CORE_CONF_EXTN 的配置参数也不全 从WPI给的配置文件libnfc-nxp_RF - EMVCO.CONF中,将NXP_RF_CONF_BLK六组参数和NXP_CORE_CONF_EXTN配置参数全部拷到libnfc-qrd_default.conf中,并将此文件替换手机中的默认文件。若出现卡模拟性能不佳,也可以在补全的配置文件中通过修改相位来进行优化。

配置文件中需要重点注意的是,NXP_EXT_TVDD_CFG的配置一定要和硬件对应。其中Config1是不采用DCDC的,Config2和3都是采用DCDC供电的。对于我们的项目,在没有DCDC下性能也能满足要求,所以NXP_EXT_TVDD_CFG=0x01 NFC匹配电路 F9 R4.1+NQ210最终的匹配电路如下: 其中:L4802+C4818/L4803+C4820是EMI Filter,采用默认值即可。 C4814+R4806/C4816+R4808是Rx通路匹配,对读卡性能同样有较大影响。靠近读卡器无法正确读卡,而远离读卡器就能正确读卡的问题,也可以通过Rx通路来优化。 中间的串电容,并电容就是NFC天线的发射匹配,NQ210的发射阻抗在30ohm,和PN547的50ohm有所不同。在实验室也可以以读卡/身份证距离为测试标准,盲调匹配电路。 这里重点针对Rx通路的优化进行说明。通常保持电容1nF不变,通过调节电阻来优化Rx通路。判断标准是要保证AGC值在500-800之间,可通过如下步骤优化电阻: 1,修改配置文件A0, 40, 01, 01-> A0, 40, 01, 81,让log中能看到AGC值 2,将修改后的配置文件导入手机,重启手机后并重现打开NFC 3,通过adb logcat输出log,在log中找到“6F13”地址的后四位数字,如5C02即代表0X025C,转换成10进制就是604 4,若AGC太小则减小电阻值,若AGC太大就增大电阻值。同时兼顾实测情况下的NFC性能最终来确认电阻值。 我们最终选用的3.3K电阻,对应的AGC值为604,满足要求。

基于Unity3D和高通Vuforia SDK的AR开发

基于Unity3D和高通Vuforia SDK的AR开发 发表时间:2017-12-13T09:47:20.257Z 来源:《科技中国》2017年8期作者:刘伟杨希文盼向兴婷 [导读] 摘要:本文基于Unity3D这一专业游戏引擎和高通Vuforia SDK制作一款简单的AR,模型通过3d max等三维建模软件进行制作。本文主要介绍基于Unity3D如何制作出一款适合教育领域的AR应用软件,并对AR的研究方向与前景做出探讨。 摘要:本文基于Unity3D这一专业游戏引擎和高通Vuforia SDK制作一款简单的AR,模型通过3d max等三维建模软件进行制作。本文主要介绍基于Unity3D如何制作出一款适合教育领域的AR应用软件,并对AR的研究方向与前景做出探讨。 关键词:增强现实(Augmented Reality),Unity 3D,教育领域 一、概述及研究现状 增强现实(Augmented Reality),简称AR技术。一种实时的记算摄影机摄影位置及角度并加上相应图形的技术,在显示屏中把虚拟世界叠加到现实世界中,用户可以通过设备与其进行交流互动。 目前,国内的AR技术发展迅速,在教育领域的应用也备受关注,具有广阔的发展前景。国内的AR多应用于儿童教育(出版物)等,随着移动手机性能的提升和AR技术(特别是图片识别技术)的发展,未来AR一定会在教育领域蓬勃发展,并且还会在社交、旅游、军事、医疗、游戏等诸多领域实现成功应用。 二、设计与实现模块 AR制作流程主要有:模型导入Unity—基于高通网站制作识别图——导入SDK,在Unity3D中完成后期制作(动画,模型渲染,脚本驱动,特效,声音等)——打包发布到安卓(Android)平台,下面具体进行介绍。 开发工具的准备:1、基于Unity 3D,所以先安装Unity3D,案例所用的版本是Unity3D5.6.1f(64位)的,安装SDK和JDK,保证后续可以发布到Android平台进行测试与应用。2、登录高通Vuforia网站注册账号。 三、识别图模块 制作识别图,首先登录高通Vuforia网站,点击Develop按钮,单击License Manager下的Add License Key,在Project Type选择Development。在Project Details下添加App name:AR Demo,点击Next,出现刚刚填写的信息,确认无误后,勾选下面的许可确定。点击Confirm,License Manager下面会有AR Demo,点击它出现License Key,后期在Unity里面会用到,所以将它复制下来。 再点击Target Manager,点击Add Database,在弹出的Create Database中填写Name:AR _Demo,Type选择默认的Device即可,点击Create。在Database出现刚刚创建的AR_Demo,后面有它的信息(Name,Type,Targets,Date Modified),Targets为0,要添加图片,点击它,点击Add Target,在弹出的Add Target下,我们选择Type为Single Image,点击File后面的Browse,选择准备好的图片,设置宽度:400,最后点击Add,这是出现Uploading Target,只需要等待几秒钟,就会看到Target制作完成,这时可以看到选择的图片复杂的Rating (等级),它的值越高代表可识别的点越多,识别也更加容易和准确。制作好后,勾选我们制作的Target,点击Download Database,在弹出的Download Database窗口中,选择开发平台(Select a development platform)为Unity Editor,然后点击Download进行下载。下载好后,识别图就制作完成,这时还需要下载Vuforia SDK。点击上面的Downloads按钮,点击Download for Unity,在弹出的Software License下点击I Agree。 四、Unity 3D实现AR模块 打开Unity,新建工程,导入两个*.unitypackage:AR _Demo和vuforia-unity-6-2-10,我们可以直接点击两个带有Unity图标的文件进行导入,也可在Unity菜单栏中选择Asset下的Import Package进行导入。删除unity自带的主摄像机Main Camera,在资源Assets目录下找到Vuforia—Prefabs—ARCamera,拖到项目场景中,再将Image Target也拖放到场景中,将右侧检视面板中Image target Behaviour下的Type选择AR_Demo),将模型放置在识别图上,调整模型大小和位置,让它处于摄像机中央。设置ARCamera:点击ARCamera右侧的Inspector下的Open Vuforia configuration,将刚刚复制的的License Key粘贴到App License Key中,并且勾选上Datasets下的Load AR_Demo Database 和Activate。 五、发布到Android平台模块 点击菜单栏File—Build and settings,选择发布平台Android,点击player settings,修改Package Name后参数Company,点击Add Open Scenes,然后Build,Unity生成apk可执行文件。最后,通过将生成的apk文件传到Android手机上并进行安装运行,实现预期效果。 六、结论与展望 本文的AR制作基于在Unity3D中完成相关测试,最后打包发布成APP安装到Android手机上,运行APP通过手机摄像机即可实现增强现实的效果,完美展示模型与现实的叠加。本文为从事AR相关开发的工作人员提供指导,也为在教育领域苦苦寻找更加高效的教学模式的教

Qualcomm手机开机全过程大揭密

摘要: 本文试图通过代码来深入剖析Qualcomm手机开机的整个过程,即从按下开机键一直到出现待机界面,Qualcomm的手机软件在整个流程中究竟完成了哪些工作。本文的主要目标是理清手机的初始化流程,并为今后Amoi定做初始化工作提供一个参考。 关键字:开机、Rex、TMC、ui_task、CoreApp 一、开机的简要流程分析 Qualcomm的平台软件支持两种启动方式:一种是Nor Flash启动方式,另外一种就 是Nand Flash启动方式。Nor Flash启动方式就相当于硬件直接找到一个入口点开始执行代码,相比较而言会比较简单,且Amoi没有采用此种方式,所以本文对于这种方式不做详细分析。另外一种就是Nand Flash启动方式,这种方式和PC的启动方式比较相像,也是Amoi采用的Boot方式,下面将详细分析在此方式下面的开机过程。 按下开机键之后,将产生一个时钟中断,从而通知AMSS主芯片的Boot Load硬件去将放置于Nand Flash 上面的第一个Block(8K)里面的Boot代码Copy到内核内存(RAM,这个内存应该是CPU自带的内存,同后面提到的SDRAM有一定区别,可以把它当作CPU的Cache)的0xFFFF0000地址,并开始执行Boot 代码。Boot的主要任务是完成整个系统的硬件初始化工作(类似于PC上面的BIOS所完成的硬件自检工作,至于Boot的详细工作机制,后文会有详细描述)。Boot所完成的工作里面,最重要的一件事就是会将整个手机软件代码(AMSS软件包)拷贝到SDRAM中,并最后将控制权交给AMSS软件。说白了,就是Boot 执行完成之后,代码的执行点将由Boot跳转到AMSS软件的的入口点函数main().(此函数在mobile.c里实现)。 代码运行到了Main()之后,在这个函数里面将完成操作系统(rex)的初始化工作,其实现方法是调用rex_init()。Rex_init()完成的工作很简单: 1.完成操作系统必要的一些数据结构(timer链表、任务链表等))的初始化之外; 2.接下来,它创建了三个任务,分别是:rex_idle_task、rex_dpc_task和tmc_task。 Idle任务没什么好解释的,目前这个任务为空,什么也没做,dpc_task目前不知道是做什么的,暂时可以不用管。前面的这两个任务都属于操作系统层面的,由操作系统来维护,和手机软件关系不大。哪一个和手机软件关系大呢?答案是:tmc_task。大家可以把这个当作操作系统的入口(主)任务,也可以把它当作整个手机软件的入口任务。即AMSS软件里的所有其它任务的创建和维护就是由这个tmc_task来完成的。 到此为止,整个AMSS软件还并没有跑起来,只是跑到了tmc_task里面了。在tmc_task里面,会调用tmc_init()来完成整个AMSS软件包的初始化工作,其中最重要的一项工作就是调用tmc_define_tasks()将AMSS软件包所有需要的任务都创建起来了。比如说slee_task、dog_task、cm_task、wms_task、ui_task 等。这些任务,一般不需要直接和AL层软件打交道,但请大家记住,手机上所有功能的实现最根本点就是由这些服务组件(Service Task)来完成的。将来大家跟踪一个具体的功能模块时,比如说通话模块,如果需要,可以再去深入研究它的具体实现。 好了,到现在为止,所有的AMSS核心软件就全部跑起来了(手机的功能模块,在软件方面就体现为OS层面的一个任务)。但现在大家还根本看不到Brew和AEE的影子。呵呵,各位不要急。到了这个层面之后,我想稍微多说几句。最早的Qualcomm平台,比如说5xxx系列,是根本没有Brew的,那个时候的AL(Application Layer)层软件开发,是直接调用底层Service task所提供的API来完成相应的工作的。从这种角度来看的话,显然那时的开发是比较郁闷和难度较高的。不过,到了65xx之后,Qualcomm平台引入了Brew,手机开发商就没必要去从这么底层(Service API)的层面进行手机开发了,他们完全可以基于Brew来实现一台手机的所有功能(Qualcomm给我们的参考代码,就是全Brew平台的)。 Brew的运行环境AEE是如何跑起来的呢?关键在于ui_task(),由于ui_task和我们手机开发的关系非常密切,其地位也相当重要,所以,后文我将单独对它进行一个深入的研究与分析。到目前为止,大家只

手机供电电路与工作原理

手机供电电路结构和工作原理 一、电池脚的结构和功能。 目前手机电池脚有四脚和三脚两种:(如下图) 正温类负正温负 极度型极极度极 脚脚脚 (图一)(图二) 1、电池正极(VBATT)负责供电。 2、TEMP:电池温度检测该脚检测电池温度;有些机还参与开机,当用电池能开机,夹正负极不能开机时,应把该脚与负极相接。 3、电池类型检测脚(BSI)该脚检测电池是氢电或锂电,有些手机只 认一种电池就是因为该电路,但目前手机电池多为锂电,因此,该脚省去便为三脚。 4、电池负极(GND)即手机公共地。 二、开关机键: 开机触发电压约为2.8-3V(如下图)。 内圆接电池正极外圆接地;电压为0V。 电压为2.8-3V。 触发方式 ①高电平触发:开机键一端接VBAT,另一端接电源触发 脚。 (常用于:展讯、英飞凌、科胜讯芯片平台) ①低电平触发:开机键一端接地,另一端接电源触发脚。 (除以上三种芯片平台以外,基本上都采用低电平触发。如:MTK、AD、TI、飞利浦、杰尔等。) 三星、诺基亚、moto、索爱等都采用低电平触发。

三、手机由电池直接供电的电路。 电池电压一般直接供到电源集成块、充电集成块、功放、背光灯、振铃、振动等电路。在电池线上会并接有滤波电容、电感等元件。该电路常引起发射关机和漏电故障。 四、手机电源供电结构和工作原理。 目前市场上手机电源供电电路结构模式有三种; 1、 使用电源集成块(电源管理器)供电;(目前大部分手机都使用该电路供电) 2、 使用电源集成块(电源管理器)供电电路结构和工作原理:(如下图) 电池电压 逻辑电压(VDD) 复位信号(RST) 射频电压(VREF) VTCXO 26M 13M ON/OFF AFC 开机维持 关机检测 (电源管理器供电开机方框图) 1)该电路特点: 低电平触发电源集成块工作; 把若干个稳压器集为一个整体,使电路更加简单; 把音频集成块和电源集成块为一体。 2)该电路掌握重点: 电 源 管 理 器 CPU 26M 中频 分频 字库 暂存

触摸屏系统系统架构和原理教学内容

触摸屏系统 架 构 和 原 理

目录 一、系统开发理念 0 二、系统开发功能描述 0 2.1 触控查询 0 2.2用户角色管理 0 2.3局域网共享 (1) 2.4 管理控制台的页面内容本地更新 (1) 三、系统功能特点列表 (1) 四、系统开发原理 (2) 五、系统运行环境需求 (3)

一、系统开发理念 系统采用B/S结构实现,通过专用浏览器进行信息的浏览查询与交互。系统将采用先进的多媒体技术,采用直观生动图文并茂的方式,给用户提供最优质最便捷的服务。 本系统是一个用于公共信息、公告等内容的发布和触摸查询显示的系统,系统具有声音、图像、文字等表现方式。后台管理主程序、数据库查询部分部分采用C#语言进行开发,前台动画的实现采用PhotoShop、Dreamweaver等多媒体处理技术。 多媒体查询服务终端采用自助服务(Self-service)方式。可透过Ethernet 网络与后端各式内容服务器连结,支持多种通信协议,透过模块化的应用程序开发,可使自助服务的应用程序可以达成高度的便利性。 二、系统开发功能描述 2.1 触控查询 通过触摸屏对公开信息进行查询阅读。 2.2用户角色管理 系统设置高级管理员,拥有系统最高权限,包括:用户管理、角色管理、权限管理。高级管理员可分配管理用户,新用户由高级管理员授权后方可登录系统,并可以在登录系统后更改用户密码,用户可以根据需要增加多个高级管理员;高级管理员可以增加下级管理员,并可根据管理需要设置多级管理员;可以新增、删除各级管理员,修改管理权限密码等,并可以进行角色的授权设置。 各用户根据高级管理员分配的权限,可进行后台查看、发布、编辑信息等操作。可任意编辑图文内容,插入多幅图片、FLASH、媒体,图文混排,还具上传内容源码查看功能,对于少量修改,可使用在线网页编辑器修改。修改制作版面,使用网页制作软件进行编辑。

高通android平台开发

问题描述: 对于有过开发高通android系统的人来说,获取代码构建开发环境并不是难事,但对于刚刚接触这一块内容的人,如果没有详细的说明很容易走弯路,本文档就是根据本人的实践总结的一些经验教训。 1.代码获取 高通的android代码分为两部分,一部分是开源的,可以从网站https://https://www.360docs.net/doc/0316412069.html,/xwiki/bin/QAEP/下载,需要知道要下载的代码的分支及build id。另一部分是非开源的,需要从高通的另一个网站https://https://www.360docs.net/doc/0316412069.html,/login/上下载,这个下载是有权限限制的,晓光的帐号可以下载代码。后面这部分代码需要放到第一部分代码的vendor指定目录下,可能是vendor/qcom-proprietary或vendor/qcom/proprietary,根据版本的不同有所区别。 高通平台相关的东西基本都在vendor/qcom/proprietary下或device/qcom下 2.编译环境构建(ubuntu 10.04 64位) Android2.3.x后的版本需要在64位下进行编译 更新ubuntu源,要加上deb https://www.360docs.net/doc/0316412069.html,/ lucid partner 这个 源用来安装java。 apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev x11proto-core-dev libx11-dev libxml-simple-perl sun-java6-jdk gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs lib32z-dev lib32readline5-dev 研发主机不能更新java,需要让IT安装sun-java6-jdk。 在命令行执行sudo dpkg-reconfigure dash 选择no,否则编译时会报一下脚本语法错误 编译的过程中https://https://www.360docs.net/doc/0316412069.html,/xwiki/bin/QAEP/和版本的 release notes中都有介绍,首先source build/envsetup.sh,然后choosecombo选择需要的选项,最后make或make –j4。-j4用来指定参与编译的cpu个数,指定了编译会快些。编译单个模块的时候只需要在make后面跟 上模块的名字 为了简化可以使用以下脚本 export TARGET_SIMULATOR=fasle export TARGET_BUILD_TYPE=release export TARGET_PRODUCT=msm7627a export TARGET_BUILD_VARIANT=eng set_stuff_for_environment make $1 编译的中间结果在out/target/product/平台/obj目录下,有时候为了完全

手机开不起机的原因有哪些

试试接上座充看看,如果还是没有反应,那就说明主板坏了,要去修.大概60块左右吧. 手机不开机的原因很多:一、开机线不正常引起的不开机 正常情况下,按开机键时,开机键的触发端电压应有明显变化,若无变化,一般是开机键接触不良或者是开机线断线、元件虚焊、损坏。维修时,用外接电源供电,观察电流表的变化,如果电流表无反应,一般是开机线断线或开机键不良。 二、电池供电电路不良引起的不开机 对于大部分手机,手机加上电池或外接电源后,供电电压直接加到电源工C上,如果供电电压未加到电源IC上,手机就不可能开机。 对于摩托罗拉系列的手机(摩托罗拉T2688除外),供电有所不同,电池供电和外接电源供电要经过电子开关转换再加到电源IC上。也就是说,手机的供电有两条路径,一路是电池供电;另一路是外部接口供电(带机充电座供电时)。当两路电源同时供电时,外部接口供电优先。而这两路电源的切换是由电子开关管来控制,主要达到对整机电流起到保护作用,防止因短路或者漏电对手机内部的集成电路造成损坏。但是,如果电子开关损坏,中源模块就有可能得不到电池的供电电压引起手机不开机。对于这种由电子开关供电的手机,由于既可以用外接电源接口供电,也可以通过电池触片用外电源加以供电。维修时可通过不同的供电方式进行供电,以便区分故障范围和确定电子开关是否正常。 一般来说,如果供电电路不良,按开机键电流表会无反应,这和开机线不良十分相似。 三、电源IC不正常引起的不开机 手机要正常工作,电源电路要输出正常的电压供给负载电路。在电源电路中,电源IC是其核心电路,不同品种及型号的手机,供电方式亦有所不同,有的电源电路的供电由几块稳压管供给,如爱立信早期系列(T18之前)手机、部分三星系列手机等。有的却有一块电源模块直接供给,如摩托罗拉系列手机、诺基亚系列手机等。但不管怎样,如果电源IC不能正常工作,就有可能造成手机不开机。 对于电源IC,重点是检查其输出的逻辑供电电压、13MHz时钟供电电压,在按开机键的过程中应能测到(不一定维持住),若测不到,在开机键、电池供电正常的情况下,说明电源IC虚焊、损坏。目前,越来越多的电源IC采用了BGA封装,给测量和维修带来了很大的负担,测量时可对照电路原理图在电源IC的外围电路的测试点上进行测试。若判断电源IC虚焊或损坏,需重新植锡、代换,这需要较高的操作技巧,需在实践中加以磨练。 四、系统对钟和复位不正常引起的不开机 系统时钟是CPU正常工作的条件之一,手机的系统时钟一般采用13MHz,13MHz时钟不正常,逻辑电路不工作,手机不可能开机。 13MHz时钟信号应能达到一定的幅度并稳定。用示波器测13MHz时钟输出端上的波形,如果无波形则检测13MHz时钟振荡电路的电源电压(对于13MHzVCO,供电电压加到13MHzVCO的一个脚亡,对于13MHz晶振组成的振荡电路,这个供电电压一般供给中频IC),若有正常电压则为13MHz时钟晶体、中频IC或13MHzVCO坏。 注意,有的示波器在晶体上测可能会使晶体停振,此时,可在探头上串接一个几十皮法以下的电容。有条件的话,最好使用代换法进行维修,以节约时间,提高效率。 13MHz时钟电路起振后,应确保13MHz时钟信号能通过电阻、电容及放大电路输人到CPU引脚上,测试CPU时钟输入脚,如没有,应检查线路中电阻、电容、放大电路是否虚焊或无供电及损坏。 另外,有些手机的时钟晶体或时钟VCO是26MHz(如摩托罗拉V998、诺基3310手机)或19.5MHz(如三星A188手机),产生的振荡频率要经过中频IC分频为13MHz后才供给CPU。 复位信号也是CPU工作工作条件之一,符号是RESET,简写RST,诺基亚乎机中用PURX表示。复位一般直接由电源IC通往CPU,或使用一专用复位小集成电路。复位在开机瞬间存在,开机后测量时己为高电平。如果需要测量正确的复位时间波形,应使用双踪示波器,一路测CPU电源,一路测复位。维修中发现,因复位电路不正常引起的手机不开机并不多见。 五、逻辑电路不正常引起的不开机 逻辑电路重点检测CPU对各存储器的片选信号CE和许可信号OE,这些信号很重要,但关键是必须会寻找这些信号,由于越来越多的手机逻辑电路采用了BGA封装的集成电路,给查找这些信号带来了很大的困难。有条件的话最好对照图纸来查找这些信号及其测量点。片选信号是一些上下跳变的脉冲信号,如果各存储器CE都没有,说明CPU没有工作,补焊、重焊、代换CPU或再仔细检查CPU 作的条件是否具备。如果某个存储器的片选信号没有,多为该存储器损坏。如果CE信号都有,说明CPU-F.作正常,故障可能是软件故障或总线故障以及某个存储器损坏。 手机在使用中经常会引起机板变形,如按按键、摔、碰等外力原因会引起某些芯片脱焊,一般补焊或重焊这些芯片会解决大部分问题。当重焊或代换正常的芯片还不能开机,并且使用免拆机维修仪读写也不能通过时,应逐个测量外围电路和代换这些芯片。 六、软件不正常引起的不开机 手机在开机过程中,若软件通不过就会不开机,软件出错主要是存储器资料不正常,当线路没有明显断线时,可以先代换正常的码片、版本或重写软件,有的芯片内电路会损坏,重写时则不能通过。重写软件时应将原来资料保存,以备应急修复。 七、其它原因引起的不开机

手机开机接入网络的过程

手机开机接入网络的过程 1. 首先搜索124个信道,即所有的BCH通道, 决定收到的广播信道BCH强度, (BCH的承载的信息是距Mobile最近的BTS(Base Transceiver Station); 呼叫信息); 2. 跟网络同步时间和频率, 由FCH/SCH调整频率和时间 3. 解码BCH的子通道BCCH(广播控制信道). 4. 网络检查SIM 卡的合法身份.是否是网络允许的SIM 卡。 5. 手机的位置更新. 6. 网络鉴权 手机主叫(MOC)过程:l 1. 手机给基站发送通道需求,即手机发送一个短的随即接入突发脉冲.(RACH Burst) 2. 由BCH 指定传输信道. SDCCH 3. 手机和基站在独立专用信道(SDCCH)上通信. 4. 权限认证 5. 指定手机在一个业务信道(TCH)上通信. 6. 在TCH上进行语音通信. 手机被叫l 1. BTS在PCH(PAGING CHANNEL)呼叫通道上使用SIM中的IMSI(International Mobile Subscriber Identification Number)号码来呼叫用户。 2. 由手机发送RACH(随机接入信道:Random Access Channel) 3. 通道指定在BCH. 4. 手机和基站在SDCCH 上通信(SDCCH的全称是独立专用控制信道(Stand-Alone Dedicated Control Channel)) 5. 手机用户被鉴权 6. 手机被指定TCH通道。 7. 在TCH通道上进行语音和数据通信。 紧急呼叫:l 1. GSM规格定义了112 为紧急呼叫号码 2. 112在手机有无SIM卡的情况下均可呼叫。 3. 在RACH 上, 手机112 建立紧急呼叫。 Authentication 鉴权:l 1. 目的:验证用户身份(IMSI /SIM); 提供手机新的加密键。 2. 鉴权是在什么情况下:每一次注册、每次呼叫或被叫企图、执行一些增值服务、漫游时的位置更新。 切换handover: 切换是手机通信从一个小区/信道到另外一个小区/信道。l 1. 上行和下行的接收质量报告 2. 上行和下行的接收信号强度 3. 距离,迁时 4. 干扰层。 5. 功率预算。 6. 切换包括:同一小区内部信道/时隙之间的切换。小区于小区之间。 加密ciphering: 语音和数据的保密、信号信息的保密;l 手机位置更新location update:l 1. MSC应知道呼叫手机的位置。 2. 手机连续的改变位置,手机在改变位置时通知MSC关于新位置。由MSC处理位置更新。

手机电路原理,通俗易懂

第二部分原理篇 第一章手机的功能电路 ETACS、GSM蜂窝手机是一个工作在双工状态下的收发信机。一部移动电话包括无线接收机(Receiver)、发射机(Transmitter)、控制模块(Controller)及人机界面部分(Interface)和电源(Power Supply)。 数字手机从电路可分为,射频与逻辑音频电路两大部分。其中射频电路包含从天线到接收机的解调输出,与发射的I/Q调制到功率放大器输出的电路;逻辑音频包含从接收解调到,接收音频输出、发射话音拾取(送话器电路)到发射I/Q调制器及逻辑电路部分的中央处理单元、数字语音处理及各种存储器电路等。见图1-1所示 从印刷电路板的结构一般分为:逻辑系统、射频系统、电源系统,3个部分。在手机中,这3个部分相互配合,在逻辑控制系统统一指挥下,完成手机的各项功能。 图1-1手机的结构框图 注:双频手机的电路通常是增加一些DCS1800的电路,但其中相当一部分电路是DCS 与GSM通道公用的。 第二章射频系统 射频系统由射频接收和射频发射两部分组成。射频接收电路完成接收信号的滤波、信号放大、解调等功能;射频发射电路主要完成语音基带信号的调制、变频、功率放大等功能。手机要得到GSM系统的服务,首先必须有信号强度指示,能够进入GSM网络。手机电路中不管是射频接收系统还是射频发射系统出现故障,都能导致手机不能进入GSM网络。 对于目前市场上爱立信、三星系列的手机,当射频接收系统没有故障但射频发射系统有故障时,手机有信号强度值指示但不能入网;对于摩托罗拉、诺基亚等其他系列的手机,不管哪一部分有故障均不能入网,也没有信号强度值指示。当用手动搜索网络的方式搜索网络时,如能搜索到网络,说明射频接收部分是正常的;如果不能搜索到网络,首先可以确定射频接收部分有故障。 而射频电路则包含接收机射频处理、发射机射频处理和频率合成单元。 第一节接收机的电路结构 移动通信设备常采用超外差变频接收机,这是因为天线感应接收到的信号十分微弱,而鉴频器要求的输人信号电平较高,且需稳定。放大器的总增益一般需在120dB以上,这么大的放大量,要用多级调谐放大器且要稳定,实际上是很难办得到的,另外高频选频放大器的通带宽度太宽,当频率改变时,多级放大器的所有调谐回路必须跟着改变,而且要做到统一调谐,

Android平台介绍及使用指导

Android平台介绍及使用指导 二○一○年二月 版本 1.0

目录 Android平台介绍 ................................................................................... - 4 -基本名词...................................................................................................................... - 5 - 操作方法介绍 .......................................................................................... - 6 - 手机按键介绍.............................................................................................................. - 6 - 快捷键介绍.................................................................................................................. - 6 - 信息功能介绍.............................................................................................................. - 7 - 联系人功能介绍........................................................................................................ - 11 - 通话记录功能介绍.................................................................................................... - 14 - 文本粘贴/复制功能介绍.......................................................................................... - 14 - Push Email(Moxier)功能介绍............................................................................ - 15 - 电子邮件功能介绍.................................................................................................... - 16 - 桌面功能介绍............................................................................................................ - 19 - 蓝牙功能介绍............................................................................................................ - 23 - Wifi功能介绍........................................................................................................... - 23 - 飞行模式功能介绍.................................................................................................... - 23 - CDMA数据链接介绍................................................................................................... - 24 - 黑屏解锁功能............................................................................................................ - 25 - 回复出厂设置............................................................................................................ - 26 - 应用程序设置............................................................................................................ - 26 - GPS设置..................................................................................................................... - 27 - 手机中英文语言切换................................................................................................ - 28 - 更换手机输入法........................................................................................................ - 29 - 数据线链接Android手机........................................................................................ - 29 - 手机测试模式进入方法............................................................................................ - 30 - 横屏显示介绍............................................................................................................ - 30 - 浏览器功能介绍........................................................................................................ - 31 - RSS功能介绍............................................................................................................ - 32 - Q/A- 34 -

手机开机原理

手机开机原理 说起不开机大家都很熟悉,不开机可以分为以下几种情况:1.加电即有电流反应,但不开机;2.按开机键无电流反应;3.按开机键有点电流不开机;4.按开机键大电流。说起这些故障产生的原因,我们先要了解一下手机的开机原理。 众所周知,手机可分为射频、逻辑、I/O接口三大部分,手机的开机主要是靠逻辑部分,逻辑部分其实就是单片机系统,由微控制单元(MCU)、数字处理单元(DSP)、存储器单元(ROM和RAM)、I/O接口等部分组成。MCU单元主要是发布指令,让各级电路工作,DSP是数字处理单元,即软件运行的地方,存储器主要是存放各电路的运行程序和一些应用数据。 说到这里,我们要先了解一下手机的开机方式。手机开机有两种触发方式:低电平触发开机和高电平触发开机。所谓低电平触发就是开机键一端接地,另一端接手机的开机触发端,如(夏新A8、诺基亚8310、摩托罗拉T720i等)。高电平开机就是开机键一端接手机的开机触发端艰苦,另一端接一个高电平,如(三星T108、摩托罗拉T2688、飞利浦9@9等)。现行的手机中,以低电平开机方式居多,下面我们就讨论一下低电平开机的原理。 我们以集成供电为例:给手机加上电源以后,电源块得到电池电压,通过电源块内部的开关电路在开机触发端会形成一个高电平,当按下开机键足够长时间,开机触发端的高电平会因为接地而变低,此信号传到电源块内部,电源块获悉此电平变低时,会启动内部电压调节器工作,相应的输出几路稳定的电压供各级电路,作为逻辑核心部分的CPU会得到两路供电:1.CPU专供VCORE 2.逻辑供电VBB。同时射频电路会得到中频参考电压VREF,时钟电路会得到VCTXO。 我们知道手机开机有三个必备条件:供电、时钟、复位。现在供电已满足,接着会产生时钟信号,一方面作为射频参考时钟,另一方面送往逻辑作为主时钟信号。微处理器得到时钟信号以后,需要将以前的记忆清除,于是电源块就会送来复位信号让其初始化,完成以后就会输出控制指令到存储器,让存储器处于允许状态,然后通过地址线查找开机程序具体在什么地方,找到以后通过数据线传送到CPU内部的DSP电路。运行成功以后,CPU输出维持信号到电源块,得到维持信号以后,电源会继续保持输出的各路电压,完成开机。 根据原理知道,手机开机过程是有先后顺序的,每一个电路工作都有不同的电流变化,所以当手机不开机时我们就可以根据电流来判断手机故障的范围

相关文档
最新文档