首先介绍一下elf在手机上的发展
elf最早成功应用在手机上应该是在西门子上,西门子手机的高手开发出了许多elf,而使西门子手机在低端机的基础上实现了许多在高端智能机上才可能实现功能,如各种游戏模拟器、智能拨号、手机上解压缩、mp3播放器、后台多任务、GPS手机定位...............
也许正是由于elf在西门子手机上成功的应用才会引起moto手机玩家的兴趣
现在在小e上也能实现elf了!
现在介绍一下什么是elf
ELF(Executable and linking format)是一种新型补丁,在elfloader的支持下,就如同windows下的exe可执行文件一样直接在手机上运行,达到各种功能。ELF补丁其实是一种特殊的文件格式!可以说相当于计算机上使用的绿色软件!执行ELF——中键按之!
Elf有非常高的执行效率和开放性。。。在很多方面是java无法达到的!
ELF我这么说可能会让您更清楚明了的认识他。您只需要把它当作您手机上的绿色软件,把ELF文件copy到手机的指定文件夹内,摇杆向下一按,你的陋机就可以蓬荜生辉-_-(四叔语)
看有些机友要加入开发elf的队伍,这种精神是值得鼓励的,但实际操作起来并不容易。就是在应用成熟的西门子手机上的elf也大多是外国人开发的,并且汉化也不容易,只能期待高手了。
(现在俄国人开发了2个moto的elf,有兴趣的机友可以刷一下试试)
elf的开发
IAR SI 安装
从
www.iar.com 上下载 IAR Embedded Workbench For ARM 的30天试用版,最新版为4.41好象(>100 mb),程序下载是免费的,但是会要你先注册。填写正确的油箱以后,就会把使用序列号发给你。安装没说的了吧,一路下一步,下一步,等等。
编译一个带配置的程序,需要增加三个文件:config_data.c,conf_loader.c,conf_loader.h。其中
config_data.c是用来编写此程序所需的配置项,而另外两个文件是用来加载配置文件的程序和头文件,
这两个文件是已经写好的,不用动。
我们先看看怎样编写配置项,打开cfg_items.h,可以看到我们主要有
UINT,STR_UTF8,INT,STR_WIN1251,CBOX,STR_PASS这几种数据类型(如果没有这些,请下载附件所带的cfg_item.h),一般常用的也就是UINT,INT,CBOX了,
每一个配置项需要有两三条语句组成,第一条语句是声明一个CFG_HDR型的结构,如我们要添加一个显示
内容"Blink display?"的yes,no项,则可以写成
__root const CFG_HDR cfghdr1={CFG_CBOX,"Blink display",0,2};
CFG_CBOX是它的类型(一个选择框),"Blink display"是描述,0,2分别是最小最大值。
下一句就应该确定配置项的变量名了,这个变量名作为extern值在main里面声明,从而使用它,形如
__root const int bl_dis=1;
当然,这里把它作为int型变量,等号后是它的初始值,即在新建配置文件时使用的值。
当使用CBOX型的配置项时,需要指出各个之所对应的选项,如0-"No",1-"Yes"。
__root const CFG_CBOX_ITEM cfgcbox1[2]={"No","Yes"};
再举一个例子,如果想添加一个轮寻周期,可以这样写:
__root const CFG_HDR cfghdr6={CFG_UINT,"Check each",0,104800};
__root const unsigned int check_each=1310;
这里自然就没有CFG_COBX_ITEM,在CfgEdit中就是那种输入数字的样式。
写好配置项后,便可以在主程序中调用conf_loader来进行初始化(调用InitConfig()),别忘了声明全局
的extern const来得到配置项。
还有一个问题,必须在工程属性中-Linker-Config-Link Command File中指定一个.xcl的文件,否则会出现"段config为定义"的错误,这个文件也是通用的,可以从别的已经有配置功能的工程中获得。