微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Symbian 入门

Symbian 入门

时间:09-12 来源:互联网 点击:

中断并设置一个标志,要求内核为第二阶段的处理运行一个延迟的函数调用(delayed function call DFC)

在方便的时候内核调度DFC.DFC可以使用多数的核心api,通常只是工作了后向用户线程通知io操作已经完成

定时器

` 内核支持真机上64hz的时钟与模拟器上10hz的时钟

时钟中断是最高优先级中断,它可以通过User::After或是RTime::After访问。时钟中断在关机时停止,所以如果你请求5s后的定时操作,然后

跑2s,关机,再开机时它也要等3s

内核同时支持日期/时间时钟,你可以使用User::At或是RTime::At。这个定时器很准确。在关机时,如果时间到了,那它会开机,这对闹钟很

合适。

内存

symbian使用内存管理单元(memory management unit MMU)管理内存

ROM被映射到z:盘,被映射到一个固定的地址。

物理RAM被MMU分在4k的页,每个物理页可以用于:

用户进程的虚地址空间。

内核服务的虚地址空间

ram盘,盘符是c:,ram盘只可通过文件服务进程访问

如果dll不在rom中,那它被读到ram,dll被读到ram里面后页面标记为只读只读的。

MMU的页面转换表.如果想理解的话学习一下操作系统原理

自由页表

每个进程的地址空间可以分成下面三类:

系统范围的内存,如系统的rom或是读到ram中的dll

进程范围的内存,如进程的.exe映象和它的可写的静态数据

每个线程的内存,包括线程的栈与线程默认的堆(使用线程默认堆的原因只是为了提高内存分配与释放的速度,从开发角度来看,它与系统里面

的内存没有区别)。

注意没有交换文件,所以所有的内存都是直接使用。同时,也可能会发生内存不够或是磁盘(c 已满错误

每个线程的默认栈很小,只有12k,所以在symbian开发中,不要放太多东西到栈中,一般对象都是在堆中分配的。

线程创建后,它的栈大小就不可再改变。

线程可以使用new或是User::Alloc从线程默认堆中分配内存.如果希望从其它堆中分配内存,只能使用new

动态库(DLL)

symbian中dll不支持可写的静态数据,所以你在里面不可能使用可写的全局变量或是静态变量.

为什么不支持呢?如果支持,那每个进程调用这个dll时,都需要为这个进程分配一个独立的堆,而堆最小单位是4k,系统中有很多堆,并且有很

多程序,所以内存消费基金是很大的。所以就不支持了

这样开发时不是很不方便?因为在dll中有时需要保存自己的状态,进行交互

为了解决这个问题,symbian中引入了线程本地数据(thread-local storage

TLS)概念(查看Dll::Tls

Dll;;SetTls)。但是调用TLS性能比较慢.tls的最大大小是1.8k 通常这够用了。

文件:

c: flash ram盘

z: rom盘

d: 记忆棒之类的外挂盘

事件处理

事件处理模型如下图:

keyborad |—————————

|interrupt

|

kernel/driver–+-isr/dfc

|

key event

|

|

window serv—–handle key event———–+update window

| |

|key event draw |request

application +—————– handle ———-+

key event

在symbian中使用活动对象(active object)来处理事件

在symbian os中,所有的symbian

os线程都是事件处理器,每个线程有一个活动调度对象,加上一个或多个活动对象来处理从设备或其它程序发过来的事件。

每个活动对象都有一个虚拟的成员函数RunL(),在这个函数里面处理事件。

多任务与抢占式

symbian os实现抢占式多线程。

活动对象用于在单个线程内实现非抢占式多任务

--------------------------------------------------------------------------------------------------------------------

SymbianOS6.X Series60界面的智能手机基本手机构造..

SymbianOS6.X Series60界面的智能手机,在插入MMC之后,系统一般存在4个逻辑存储驱动器:C(手机本身的用户存储,SX1有4M),D(虚拟

盘,使用空闲运行内存虚拟的缓冲盘),E(MMC),Z(手机的系统ROM只读)。

4个盘之中,C E Z盘的文件结构大同小异。而D驱动器是高速的虚拟驱动器,主要用来保存剪贴板、wap缓存、和一些临时交换文件,一般情

况下,由系统自动调用,与用户联系不多,不作详细介绍。下面我具体的将C E Z三个驱动器的目录结构和功能讲解一下。 随着安装软件的增

多,C和E盘的目录文件会变得纷繁复杂,我们抛开一些软件自动生成的次要的文件和目录抓住系统的结构谈一些主要的东西:

E盘根目录下:IMAGES SOUNDS VIDEOS目录,顾名思义就是保存了图片铃声视频剪辑,这3个目录等效的出现在C和Z的Nokia目录下,也就是

说把相应类型的文件拷贝到对应的目录都可以被系统识别(Z盘只读除外),举

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top