0x00 前言

由于年代过于久远,网页随时可能被删除。于是建立本文,对将失去的和已失去的做个整理。
祭过去。

两代塞班内核区别


EKA1(EPOC内核架构1)是Symbian OS的第一代内核。它提供抢占式多任务和内存保护,但没有实时保证和单线程设备驱动程序模型。现在它已经被EKA2取代了。
**EKA2(EPOC内核架构2)是第二代Symbian平台内核。与它的前身EKA1一样,它具有抢占式多线程和全内存保护。主要区别在于:
实时保证(每个API调用都很快,但更重要的是,时间限制)**
内核内外的多线程
可插入内存模型,可以更好地支持后备ARM指令集。
一个“纳米内核”,它提供了最基本的操作系统,其他的“个性层”可以在其中构建。
EKA2的用户端接口几乎与EKA1完全兼容——尽管自从Symbian OS v8.1(在2005年被取代)以来,EKA1一直未被使用。
EKA2的主要优点是它能够运行完整的电话信令栈。以前,在Symbian手机上,这些必须在单独的CPU上运行。这种信令栈极其复杂,并且重写它们以在Symbian OS上原生工作通常不是一种选择。因此,EKA2允许“个性层”模拟其他操作系统的基本原语,从而允许现有信令栈基本不变地运行。
实时保证是信令栈的先决条件,也有助于多媒体任务。然而,与任何实时操作系统一样,在对除最高优先级线程之外的任何线程提供任何实时保证之前,都需要对所有线程进行全面的分析。(高优先级线程可以防止低优先级线程运行)。任何多媒体任务都可能涉及图形、存储和/或网络活动,所有这些都比内核更可能破坏流。
内核中,EKA1只允许一个线程(加上“null”空闲线程)。EKA2允许很多线程。这使得编写涉及复杂状态机的设备驱动程序更容易,例如用于存储棒或USB的设备。用中断服务例程处理中断,中断服务例程可以请求立即的延迟函数调用(在中断被处理时立即调用),或者延迟函数调用,延迟函数调用在内核线程上排队运行。或者可以反过来与用户侧线程通信。
EKA2的功率管理在很大程度上与EKA1没有改变。确切的方案在手机之间有所不同,但一般来说,当下一个定时器到期时,在请求唤醒之后,空线程使CPU和外围设备进入休眠状态。
EKA2运行在ARM CPU和“WINS”仿真器上。(非官方端口存在于其他CPU)。在模拟器上,EKA2提供了比EKA1更好的模拟,特别是对于Symbian OS用来表示进程的RProcessAPI。在EKA1中,它们在模拟器上不工作,仿真器运行为一个单一的Windows进程。
EKA1的大部分由单个软件工程师Colly Myers开发,他在20世纪90年代初为Psion Software工作时。Myers后来成为Symbian有限公司的CEO,当时Symbian有限公司成立,向移动电话制造商许可这个内核和相关的操作系统。他现在是StaseBITS有限公司的首席执行官。
EKA2的大部分功劳都归功于一个Symbian内核工程师,他让这个项目成为Symbian操作系统的官方部分,这个项目只是多年前开始的一个实验。


塞班系统来源


塞班系统来源:
由Project Protea开发的32位EPOC最终在1998年6月与诺基亚、爱立信和摩托罗拉联合组成了Symbian有限公司。该操作系统被重新命名为Symbian操作系统,并被设想为一系列新型智能手机的基础。Psion向新公司提供了130名关键员工,并保留了31%的股份。Symbian操作系统2007为1亿2500万个移动电话提供动力,如索爱P900系列。PISIN的新产品和更新产品在Symbian衍生后放缓。其他产品失败或有限成功-Psion Siemens的GSM设备,基于5系列的STB,Wavefinder DAB无线电,试图将 Dragon's speech recognition software添加到PDA,爱立信在2001年取消了5MX系列衍生的智能手机项目。Psion在1999年卖掉了其唯一的制造工厂,并在2001年末开始从PDA市场撤出,裁减了2500名员工,裁减了4000万英镑。PDA曾经是一个利基市场,已经成为一个全球水平的市场,PICS很难竞争。2001年1月,摩托罗拉退出了与Psion、三星和帕萨斯的联合项目,创建基于ARM的PDA手机“Odin”,对Psion的组织者和PDA业务造成了最后的打击。2000年,Psion以2.4亿英镑收购了加拿大的Teklogix,并将其业务对业务部门Psion Enterprise与新收购的公司合并。Teklogix被重新命名为Pyth-TekLogix。这一部门现在是PXESPLC公司业务的核心。在2002,PXIN创建了一个新的部门称为PISH软件。该业务开发了Symbian智能手机、微软Exchange和Lotus Notes的推送电子邮件解决方案。这项业务于2003出售给维斯托(美国)。2004年,Psion宣布打算将公司剩余的Symbian股份出售给诺基亚,因为他们不再将其视为其战略的核心部分。

EPOC是一家由1980成立的英国公司Posix开发的移动操作系统。它最初是Psion自己的x86兼容设备的16位操作系统,后来被x86和ARM的32位系统所取代。PXIN将32位系统授权给其他硬件制造商,如爱立信。为了区分它与16位系统,32位操作系统有时是ePoC32。从技术上说,这是一个主要的偏离16位化身(被称为EPOC16或SIBO)。在1998,32位版本被改名为Symbian OS。诺基亚在2010获得Symbian的权限后,在Eclipse公共许可下发布了Symbian的源代码。2011,诺基亚取消了随后发布的开源许可证。

EPOC的名字来源于“时代”这个词(一个时代的开始)。这个名字被缩短为四个字母,以符合UNIX和Mach等软件创新的名称。最初,操作系统被资本化为EPOC而不是“EPOC”,因为它不是首字母缩写词。所有大写字母的改变都是根据Psion的营销部门的建议做出的。Psion在1994年开始开发32位操作系统时,他们保留了它。在EPOC品牌下。为了避免公司内部的混乱,他们开始调用旧的系统EPOC16和新的EPOC32。随后,在公司内部,将EPOC16称为SIBO,这成为了Psion 16位移动计算计划的代号。这一改变使他们得以使用EPOC32的EPOC名称。
1998年6月,Psion与诺基亚、爱立信、摩托罗拉等电信公司成立了一家有限公司。通过收购Symbian有限公司,新公司被称作“Symbian Ltd.”,电信公司各自收购了Psion的EPOC操作系统和其他知识产权分子的股份。Symbian有限公司将EPOC/EPOC32改名为Symbian OS。

EPOC16是专门为Intel 80186平台设计的,EPOC32是为ARM(一个具有简化指令集体系结构的计算平台)而构建的。与EPOC16一样,EPOC32是一个单用户、抢占式多任务操作系统。它还具有内存保护功能,这是现代操作系统的一个基本特征。EPOC32的早期迭代被代号为“Protea”。第一个发布版本,版本1,出现在1997年6月的PoSH系列5 ROM V1.0上。版本2从未出版过,但系列5的更新ROM(版本1.1)以版本3为特色。系列5使用了Psion的新用户界面Eikon。

EPOC发行5于1999年3月首映。它运行在ARMv4处理器上,例如Stand ARM系列。除了它的电子邮件、消息传递和数据同步功能之外,它还引入了Java开发工具包的支持,这使得它能够运行更广泛的程序。2000年,EPOC的GUI变体被三个参考接口所取代:Crystal用于具有小键盘的设备;Quartz用于“通信器”设备(它具有一些电信功能,并且倾向于配备拇指键盘);Pearl用于移动电话。每个分类支持VGA图形。Psion在他们的5mx系列(1999)、Revo(1999)、netBook(1999)、Series 7(1999)、Revo Plus(2000)和netPad(2001)设备上部署了版本5。RESTS在1999发布。2000年11月发布的爱立信R380智能手机是第一个使用EPOC版本5.1发布的设备。这个版本也被称为ER5u;u表示系统支持Unicode的文本编码系统:表示各种语言的一个重要特性。PXEN开发了一个Er5U启用的设备,代号为“Conan”,但它并没有超越原型阶段。该设备旨在成为ReVo的蓝牙启用后继者。下一版本的EPOC32,版本6,被重新命名为Symbian OS。它将用户界面与底层操作系统分离,这为设备制造商提供了在其设备上实现图形接口的能力(或负担)。Symbian OS的最终版本是v10.1,最后的更新发布于2012。

塞班作为建立智能手机行业的先驱,直到2010年底,它一直是全球平均最流行的智能手机操作系统——当时智能手机的使用有限,被Android超越,谷歌及其合作伙伴获得了广泛的采用。它在美国北部并不是很受欢迎。Symbian OS平台由两个组件组成:一个是基于微内核的操作系统,带有相关的库,另一个是用户界面(作为中间件),它在OS之上提供图形外壳(S60)由诺基亚建立的平台,首次发布于2002,为大多数诺基亚Symbian设备提供。UIQ是摩托罗拉和索尼爱立信(Sony Ericsson)主要使用的一种相互竞争的用户界面,主要关注基于笔的设备,而不是S60的传统键盘界面。另一个接口是来自日本市场运营商NTT DoCoMo的MOAP(S)平台。这些不同接口的应用彼此不兼容,尽管每个接口都构建在Symbian OS之上。诺基亚于2004年成为Symbian Ltd.的最大股东,并于2008年收购了整个公司。非盈利的塞班基金会随后成立,成为Symbian OS免版税的继任者——为了统一平台,S60成为基金会最喜欢的界面,UIQ2009由于破产停止开发。支持触摸屏的Symbian ^ 1(或S60第五版)是在2009中创建的,Symbian ^ 2(基于MOAP)被NTT DoCOMO使用(该基金会成员之一,为日本市场),Symbian ^ 3在2010被发布为S60第五版的继任者,在此期间它成为完全开放源代码。Symbian ^ 3在2011收到了Anna和Belle的更新。

Symbian基金会在2010年底解体,诺基亚重新控制了操作系统的开发。2011年2月,诺基亚宣布将采用微软的WP7作为其主要的智能手机平台,诺基亚目前是唯一仍在日本以外支持Symbian的公司,两个月后,诺基亚只与日本OEM合作,将操作系统移至关闭许可,随后将Symbian的开发外包给埃森哲。尽管承诺支持到2016年,包括两个主要的计划更新,到2012年,诺基亚大部分放弃了开发,大多数Symbian开发人员已经离开了埃森哲。2014年1月,诺基亚停止接受开发人员提供的新的或修改的Symbian软件。2012年,诺基亚808PureView正式成为诺基亚最后一款Symbian智能手机。oCoMo在日本继续发布OPP(S)(Operator Pack Symbian,MOAP的继承者)设备,这些设备仍然充当Symbian之上的中间件。运行这些设备的电话包括富士通的F-07F(ja)和2014年夏普的SH-07F(ja)。

软件开发:
从2010年开始, 塞班的主要SDK变为标准C++和Qt, 并可以使用 Qt Creator 或 Carbide.c++ 进行开发. Qt 支持一部分旧的 Symbian/S60 3rd (从 FP1开始, 换句话说是 S60 3.1) 和塞班/S60 5th 发布版本 (换句话说是 S60 5.01b) , 既支持新的塞班平台.它也支持Maemo 和 MeeGo, Windows, Linux 还有 Mac OS X.可替代的应用程序开发可以使用Python(参见Python for S60)、Adobe Flash Lite或JavaME来完成。以前的塞班系统使用特定的C++版本, 以及CodeWarrio和后来的 Carbide.c++。C++集成开发环境(IDE),作为本地应用程序开发环境。
Web Run time (WRT) 是允许在S60平台上创建小部件的可移植应用程序框架;它是基于S60 WebKit的浏览器的扩展,允许将多个浏览器实例作为单独的JavaScript应用程序启动。

Symbian UI变型/平台
随着Symbian发展到OS 7.0版本,它被分成几个不同的图形用户界面,每个图形用户界面都由一家公司或一组公司支持。与Android操作系统的化妆品GUI不同,SymbianGUI由于更显著的修改和集成而被称为“平台”。当为不同的Symbian GUI平台开发的应用程序彼此不兼容时,情况变得更加复杂,这导致OS碎片。
运行在Symbian OS上或基于Symbian OS的用户界面平台包括:
S60,Symbian,也被称为S60。
索爱G700在Symbian UIQ 3,它带有电阻触摸屏
这主要是由诺基亚支持的。这个平台有几个版本,首先出现在诺基亚7650上的S60(第一版)。接着是S60第二版(如诺基亚N70)、S60第三版(如诺基亚N73)和S60第五版(其中引入了触摸UI,如诺基亚N97)。在Symbian基金会成立后,S60的名字就变成了Symbian,随后被称为Symbian ^ 1, 2和3。
系列80使用诺基亚通信,如诺基亚9300 I。
系列90触摸和按钮为基础。唯一使用这个平台的手机是诺基亚7710。
UIQ主要由索爱和摩托罗拉支持。它与按钮和触摸/手写笔输入兼容。最后一个主要版本是UIQ3.1在2008,在索爱G900上。在Symbian Foundation成立之后,它被中断了,并且决定将不同的Symbian UI变体合并成一个变体,导致S60被采用作为版本的前进。
MOAP(MobileOrientedApplicationPlatform)[仅限日本]由富士通、三菱、索尼爱立信(Sony Ericsson)和夏普开发的NTT DoCoMo手机使用。它使用专门为DoCoMo的FOMA“移动访问自由”网络品牌开发的接口,并且基于早期富士通FOMA模型的UI。用户无法安装新的C++应用程序。(仅日本)
OP[仅日本],MOAP的继任者,用于NTT DoCOMO的FOMA电话。

整个模型包含下面的层,从上到下:
UI框架层
应用服务层
Java ME
操作系统服务层
通用OS服务
通信服务
多媒体和图形服务
连接服务
基本服务层
内核服务与硬件接口层

基本服务层是用户端操作所能达到的最低级别;它包括文件服务器和用户库,一个管理所有插件、存储、中央存储库、DBMS和加密服务的插件框架。它还包括Text Window Server和文本Shell:两个基本服务,从这两个服务可以创建完全功能化的端口,而不需要任何更高层的服务。
Symbian具有微内核体系结构,这意味着内核内所需的最小值是最大的健壮性、可用性和响应性。它包含调度器、内存管理和设备驱动程序,但是其他服务(如网络、电话和文件系统支持)被放置在OS服务层或基本服务层中。设备驱动程序的加入意味着内核不是真正的微内核。EKA2实时内核(称为nanokernel)只包含最基本的原语,并且需要扩展内核来实现任何其他抽象。
Symbian旨在强调与其他设备的兼容性,尤其是可移动媒体文件系统。EPOC的早期开发导致采用FAT作为内部文件系统,这仍然存在,但是将面向对象的持久性模型放置在底层的FAT之上,以提供POSIX风格的接口和流模型。内部数据格式依赖于使用相同的API创建数据来运行所有文件操作。这导致了数据依赖和与变化和数据迁移相关的困难。
有一个大型的网络和通信子系统,它有三个主要服务器:ETEL(EPOC电话)、ESOCK(EPOC套接字)和C32(负责串行通信)。每一个都有一个插件方案。例如,ESOCK允许不同的“.PRT”协议模块实现各种网络协议方案。子系统还包含支持短距离通信链路的代码,如蓝牙、IrDA和USB。
也有大量的用户界面(UI)代码。Symbian OS中只包含基类和子结构,而大多数实际的用户界面由第三方维护。这种情况已经不再是这样了。三大UIS——S60、UIQ和MOAP——在2009对Symbian做出了贡献。Symbian还包含图形、文本布局和字体渲染库。
所有本地Symbian C++应用程序都是由应用程序架构定义的三个框架类构建的:应用程序类、文档类和应用程序用户界面类。这些类创建基本的应用程序行为。其余需要的函数(应用程序视图、数据模型和数据接口)是独立创建的,并且仅通过其API与其他类交互。
许多其他的东西还不适合这个模型——例如,SycML,JavaME在大多数OS和多媒体之上提供另一套API。其中许多是框架,并且期望供应商从第三方(例如,多媒体编解码器的Helix Player)向这些框架提供插件。这样做的优点是,在许多电话机模型上,这些功能领域的API是相同的,并且供应商获得了很大的灵活性。但这意味着电话供应商需要做大量的集成工作来制作一个Symbian OS手机。
Symbian包括名为“TechView”的参考用户界面,它为开始定制提供了基础,并且是运行许多Symbian测试和示例代码的环境。它非常类似于Psion Series 5个人组织者的用户界面,并不用于任何生产电话用户界面。


Symbian可执行文件格式E32Image


http://www.antonypranata.com/articles/symbian-os-executable-file-format-e32image

http://www.antonypranata.com/articles/new-symbian-os-9-executable-file-format-e32image
作了很详细的介绍, 在Symbian OS 9.x中采用了新的 格式

或许 http://www.newlc.com/en/Symbian-Executable-File-Format.html 才是原创

我们看看编译出来的HelloWorld的信息

F:working>petran HelloWorld.exe

PETRAN – PE file preprocessor V02.01 (Build 596)
Copyright (c) 1996-2008 Symbian Software Ltd.

E32ImageFile ‘HelloWorld.exe’
V2.00(512) Time Stamp: 00e1603b,36e1c400 // iVersion iTime
EPOC Exe for ARMV5 CPU // iCpu
Flags: 1200002a
Priority Foreground
Entry points are not called
Image header is format 2   
Image is compressed using the DEFLATE algorithm //表明用DEFLATE算法压缩过
Uncompressed size 00001950
Image FPU support : Soft VFP
Pageability : Default
Debuggable : False
Secure ID: 00000000
Vendor ID: 70000001
Capabilities: 00000000 00000000
Exception Descriptor Offset: 000011a9
Exception Index Table Base: 000095bc
Exception Index Table Limit: 000096e4
RO Segment Base: 00008001
RO Segment Limit: 0000936c
Export Description: Size=000, Type=01

Export description consistent
Module Version: 10.0
Imports are ELF-style
ARM EABI
Built against EKA2
Uids: 1000007a e8000047 00000000 (0dcafc2f)
Header CRC: 4eed3ad0
File Size: 00001950
Code Size: 000016e4
Data Size: 00000000
Compression: 101f7afc
Min Heap Size: 00001000
Max Heap Size: 00100000
Stack Size: 00002000
Code link addr: 00008000
Data link addr: 00400000
Code reloc offset: 000018e0
Data reloc offset: 00000000
Dll ref table count: 4
Offset Size Relocs #Relocs
Code 00009c 0016e4 0018e0 00002b +00114c (entry pnt)
Data 000000 000000
Bss 000004
Import 001780

elf2e32.exe是SDK提供的一个将ELF转换成E32的程序

F:working>elf2e32 –e32input=HelloWorld.exe
E32ImageFile ‘HelloWorld.exe’
V2.00(512)      Time Stamp: 00e1603b,36e1c400
EPOC Exe for ARMV5 CPU
Flags:  1200002a
Priority Foreground
Entry points are not called
Image header is format 2
Image is compressed using the DEFLATE algorithm
Uncompressed size 00001950
Image FPU support : Soft VFP
Pageability : Default
Debuggable : False
Secure ID: 00000000
Vendor ID: 70000001
Capabilities: 00000000 00000000
Exception Descriptor Offset:  000011a9
Exception Index Table Base: 000095bc
Exception Index Table Limit: 000096e4
RO Segment Base: 00008001
RO Segment Limit: 0000936c
Export Description: Size=000, Type=01

实际上 petran 和 elftran 是一个工具

elftran -nocompress HelloWorld.exe

就将HelloWorld.exe 解压缩成  不压缩的可执行文件

elftran -compress HelloWorld.exe 就再将它进行压缩,默认使用deflate方法压缩

0xFF-1 引用文章

[经验共享] 浅谈据我所知的塞班
Symbian可执行文件格式E32Image

最后修改:2020 年 03 月 08 日
如果觉得我的文章对你有用,请随意赞赏