Chinaunix首页 | 论坛 | 博客
  • 博客访问: 814625
  • 博文数量: 52
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 3734
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-28 22:46
文章分类

全部博文(52)

文章存档

2012年(3)

2011年(2)

2010年(14)

2009年(24)

2008年(9)

我的朋友

分类:

2009-12-27 15:30:09

第一篇:开机篇
: U3 X0 R; q% [4 k, D/ j0 [0 }       开机,就是手机在上电后的一系列操作,当然这里的开机包括上电和按power键。目前,展讯手机平台开机的操作都是按照如下顺序进行。" x# m- s& K8 l% Q+ J$ e
1、  手机上电,cpu根据arm的某个pin来决定运行内部mask rom的程序,还是直接跑外部接的flash程序;' a/ k, Z7 H$ V9 g
2、  进入到mark rom中运行,是要下载代码到外部flash中去,也就是程序的升级。
$ \6 q0 X# a8 I9 f6 s3 \9 w, p3、  如果进入外部flash中运行,手机将做一些简单的硬件和os的配置,就进入cpu休眠,这个时候只接收power键的中断事件来响应程序。
; }. q' \5 x+ M. @大连东海通讯
3 g5 ?- T8 w3 ^) J, U9 x  A一、程序升级:
" r, R7 I& p$ ^9 k4 ]- o
& C, a: U: a, f( [) Q# ~4 j大连东海通讯手机在没有灌程序的时候,通电,如果检测到的pin为某个值后,就进入mark rom中运行、mark rom的程序是展讯固化在arm中的程序,出厂就烧好了,而且不可擦除。Rom中的程序功能主要是下在FDL程序,然后运行FDl程序,把PS,NV等代码烧到指定的flash中去。这里说明一点的是,rom中的程序是把FDL的程序下载到展讯Arm Cpu的内部ram中的,具体地址是:0x40000000。这里的FDL就是展讯平台所支持的flash的驱动程序。. p( q6 M, L6 }/ p' Z8 p, r
, T/ |: F, {' T& r! f. w
二、程序正常运行:8 r; H5 a- e4 p' h' H# ~2 z

; L# q5 R2 f3 t/ |; A用ASD1.2启动展讯的工程文件,会发现,其entry point是0x0,其表示启动程序地址是从0x00 开始的,有幸的是,开始代码展讯公开了,其文件是:tx_illdb.s;这这个文件中,程序简单配置了些寄存器,然后直接跳到库函数__main中去了,库函数运行c语言的运行环境后就直接调用main.c文件中的mian()函数,最后,程序将运行到文件init.c文件中的PUBLIC uint32 SCI_InitRef(uint32 mode)函数中去,检查程序启动的条件,以便决定cpu是进入休眠还是继续运行。对于程序开始到运行到这里,我想说以下几点:4 p9 r& Y7 b  S$ F4 s/ K
# y: N9 z: A2 l$ Z+ F
1、  PUBLIC void SCI_ApplicationDefine(void *first_unused_memory) 函数处理的事情太多,我不明白展讯为什么要这个函数处理这么多事情?处理多事情的坏处就是:你按power键,真正到lcd点亮,居然要6秒的时间之久。
8 O, V* |! T6 R, h3 g! [' u% f4 e" A9 K2、  PUBLIC void RM_GetRunMode(void)函数内竟然有500ms的延时,对于此函数放在这里是否合适,我也不好说,但是这个函数的耗时这么长,是绝对不好的。(这个函数的功能好像是做校准)
) A/ y) p( A' P6 [4 M
2 t. r4 ^4 P0 X* y9 L( a简单的从上面的开机流程看,展讯在开机流程和下载程序方面的总体设计差,欠缺生产方面和实际用户的经验。
. r0 p; n: l! z
/ z; h' ^: ^5 m/ K! ^7 V6 L其需要改进的宗旨是: ( H! Q$ C7 e8 R7 ~
1、打开下载程序软件,运行这个软件,然后接上手机,按power键就可以直接下载程序了;2、手机上电池后,长按power键,3秒到4秒左右,手机lcd屏亮.
阅读(2567) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

yucejun2014-12-27 13:39:45

我也是觉得展讯开机时间太久了,第一条的trace的打印是在5.6秒,我想让个LED闪烁,也需要6秒左右才可以。