首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

一种基于Smartphone类的注册表实现方案

作者:刘洲洲 来源:现代电子技术


  摘要:目前Smartphone类型的手机注册表都是用数据库实现的,现在要改用COMS来实现,具体做法是采用大小为64 KB的2块FLASH来模拟CMOS,在此基础上实现注册表的管理,直接从FLASH驱动层做起。注册表的记录改变了传统的Windows做法,采用一种简化的方法,不分目录级,由一个主键加一个键值构成,其主键是一个null结束的字符串,可以包含目录信息,这对后继手机软件的应用开发建立了良好的开发基础。
  关键词:注册表; Smartphone; CMOS; FLASH
  中图分类号:TN91934文献标识码:A文章编号:1004373X(2012)04008702
  Scheme of registry realization based on Smartphone
  LIU Zhouzhou
  (Xi’an Aero Technical Collge, Xi’an 710077, China)
  Abstract: The registry of Smartphone type of cell phones is realized with database at present, but will be realized with COMS instead in the future. Two pieces of 64 K FLASH modules are adopted to simulate CMOS for the realization of registry management. The record of the registry changes the traditional behavior of Windows. A simple method without catalogue level is used. It is composed of a major key plus a key value. The major key is an alphabetic string which is ended with a Null and includes the catalogue information. It has built a perfect fundation for development and application of the subsequent mobile phone software.
  Keywords: registry; Smartphone; CMOS; FLASH
  
  
  收稿日期:201108230引言
  随着多媒体移动终端(PDA,智能手机)的快速发展,使其已经不再只是用于语音通信的手持设备,而成为集成了MP3,MP4以及上网移动办公等附加功能的嵌入式通信平台。Smartphon是Accelerator Technology公司开发的一种嵌入式RTOS产品,其操作系统为Nucleus,只需一次性购买Licenses就可以获得操作系统的源码。Accelerator Technology公司在底层对无线通信以及语音文本信息通信模块做了大量优化[1]。Nucleus 是一款优秀的嵌入式实时操作系统(RTOS),具有抢占式和时间片轮转任务调度方式,主要用在时间苛刻的嵌入式应用当中。大约95%的Nucleus用ANSI C 写成,作为一个库加载到应用代码当中,目前手机行业有很多使用Nucleus。Smartphone平台的基本架构[2]分为:
  无线堆栈层:负责最终的数据发送与接收处理,它对接收和发送的硬件细节进行控制,突出无线通信这个核心内容,是Smartphone操作平台最低的一层。
  核心API层:可利用它们来进行与无线通信和语音服务相关的开发,主要参照MSDN来使用。
  逻辑层:系统为简化开发,将一些API包装成各个功能块以便调用类似控件,这层提供各控件接口。
  应用层:是系统中面向用户提供服务的各应用程序[3]。
  1接口设计与实现方案
  当前大部分智能手机的注册表原来是用数据库实现的,现在要改为用COMS来实现,具体做法是,采用大小为64 KB的2块FLASH来模拟CMOS,在此基础上实现注册表的管理,直接从FLASH驱动层做起。注册表的记录改变了传统Windows的做法[4],采用一种简化的方法,不分目录级,由一个主键加一个键值构成。主键是一个null结束的字符串,可以包含目录信息,也可以写成“\APP\WINDOW\POSITION\X”,考虑到查找的方便性,主键字串必须用大写,并且要以“\”开始。键值有3种类别,分别是DWORD,Binary和String。其中,DWORD占4 B;String是null结束的字符串;Binary是由一个4 B的Size加上内容构成。考虑到FLASH的读写特性以及可移植性,整个记录信息向4 B对齐,并用0填充冗余各位。
  1.1数据结构
  注册表的大小为64 KB,另外的64 KB是为了擦写时备份用的。整个64 KB空间分成2大块,即索引块和数据块,其中索引块大小为4 KB,数据块为60 KB。索引块由32 B的HEAD和一个偏移表构成,HEAD由1个4 B的片选字加1个28 B的保留位构成,保留位建议填写成“HTW CMOS VER1.0”,片选字用作擦除时掉电的保护。偏移表的每项占4 B,共有1 016项,每个偏移项均由低28 b的偏移值和高4 b标志位构成,标志位用作增加和修改时掉电的保护。数据块由一个接一个变长的记录构成,每个记录内容向4 B对齐,并用0填充冗余各位[5]。记录由4 B控制字段+4 B CHECKSUM+主键+键值构成。其中,控制字段 = 28 b SIZE + 4 b FLAG。SIZE是低28位,即物理的前28位。它表示整个记录的大小,包括自身及CHECKSUM、主键、键值等。FLAG是高4位,即物理的后4位,它表示键值的属性,同时用来作为掉电保护的判断标志。
  1.2关于掉电保护信息
  掉电保护要做好,有2个必要条件,一是系统启动后在初始化时,有能力知道上次关机是正常关机还是异常掉电关机[6];二是系统在任何时候突然掉电,有能力追溯到掉电前的资料信息。注册表系统用于掉电保护的信息有3处,分别是片选字、偏移表项的标志位、记录控制字段的FLAG。片选字共有2块64 KB的FLASH,每块最前面的4 B是片选信息,正常情况下,正在使用的那一块(记A)片选信息写着00 00 00 C0,另外一块(记B)写着FF FF FF FF,并且B是一个擦除过的很干净的空块。A其余可能的取值是00 00 00 80,B其余可能的取值是00 00 00 F0和00 00 00 E0,这一点与FMM中的用法基本相同。当A写满时需要整理,会运行一个整理流程,也会用到这些取值。每个偏移表项由低28 b的偏移值和高4 b标志位构成,其中标志位正常取值时,0xC0表示有效,0x8表示已删除;其余可能的取值是0xF表示空闲或者正在写,0xE表示刚刚修改完。对注册表的增加、修改、删除都会用到这些取值。记录控制字的FLAG每个记录控制字由低28 b的SIZE和高4 b的FLAG构成。FLAG的取值前面有描述,正常情况下0xE表示键值为DWORD,0xC表示键值为Binary,0x8表示键值为String,其他的取值都表示正在写入控制字段时突然掉电,此时SIZE不可靠,整个数据块应该丢弃这4个字节。下一个偏移表项的取值应该仅仅越过这4个字节。对注册表的增加、修改、删除等操作,会用到这个FLAG,它与偏移表项的标志位一起使用,共同完成这几种操作的掉电保护。
  
  1.3部分API函数示例
  注册表系统向应用提供的API接口有4个,另外还有一个初始化和一个块擦除流程,即RegCreateKey()创建;RegDeleteKey()删除;RegQueryValueEx()查询;RegSetValue()设置;Reg_Initialize()初始化;Reg_EraseChip() 擦除。
  2开发环境
  本软件模组在PC机上开发,经过编译工具embedded Visual C++后,在CPU为ARM920T的硬件平台下运行。
  编程语言:C语言
  操作系统:Nucleus
  Nucleus内核版本:2.4.20
  交叉编译工具:VC++&ADS
  编译环境: Visual C++
  硬件平台:SC32442X 或ARM920T
  3结语
  由于Smartphone的用处已经越来越广泛,故提出一种为Smartphone建立较为通用高效的手机注册表实现方案,这对后继手机软件的应用开发,建立了良好的开发基础,性能优越且易于移植,已经成功应用于Linux和Windows CE等嵌入式操作系统。目前该方案已用于诸多无线移动多媒体终端项目,且效果理想。
  参考文献
  [1]BOLING Doudlas.Microsoft Windows CE 程序设计\[M\].北京:北京大学出版社,1999.
  [2]汪兵,李存斌.EVC高级编程及其应用开发(Embedded Visual C++嵌入式编程)\[M\].北京:中国水利水电出版社,2005.
  [3]蔡志明,卢传富,李立夏.精通Qt4编程[M].北京:电子工业出版社,2008.
  [4]王继刚.面向智能手机的嵌入式实时操作系统[J].现代电子技术,2005,28(4):9799.
  [5]黄炳权,孙素霞,赵国庆.协作式多任务GSM 手机软件开发[J].现代电子技术,2006,29(8):3233.
  [6]MEHTA R, OWENS R M, IRWIN M J, et al. Techniques for low energy software \[C\]// Proceedings of 1997 International Symposium on Low Power Electronics and Design. \[S.l.\]: ISLPED, 1997: 7273.