爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 7433|回复: 42
收起左侧

[汇总] ELFPack 3.0 alpha的源码,懂的人去修改吧

  [复制链接]
发表于 2010-12-5 18:12:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
作者的说明,看了下源码,全平台通用,懂的人去加中文吧。我没有西机也不懂C
原帖地址:http://waper.ru/forum/post/16635232/
  1. Это серьёзная модификация ELFPack 2.3 24bit + alpha
  2. Этот мод (а может и вообще новая версия классического)
  3. содержит несколько новшеств:

  4. 1) EDL System (ELF Dynamic Library System)
  5. Позволяет подгружать нужные эльфу ф-ии из так называемых
  6. динамических библиотек, вынесено несколько ф-ии по работе с этой системой
  7. Есть единая база, которая содержит в себе все "контакты" запущеных библиотек.
  8. Сама библиотека это обычный эльф, содержащий EDL_HEADER, ф-ии, в соответствии
  9. с назначением, скомпиленный по определённым правилам и переименованный в *.edl.
  10. Каждая библиотека имеет имя и версию, а также может быть в рамках одной платформы,
  11. модели телефона или даже прошивки.

  12. Полезность сего очевидна. Во-первых эльфу не обязательно содержать громоздкий код
  13. сложных ф-ий, а просто позаимствовать у загруженной однажды библиотеки.
  14. Во-вторых значитильная скорость работы по сравнению с аналогичными API функциями, которые
  15. уже вшиты в прошивку, т.е. в ROM.
  16. В-третьих, так как существут межплатформенные различия, и поэтому надо вечно перекомпилировать
  17. один и тот же эльф для разных платформ, нередко требуется знать эти межплатформенные особенности.
  18. С EDL всё просто, сделал единый стандарт всех ф-ий, а для каждой платформы - своя EDL,
  19. которя адаптирована к особенности соответствующей платформы.

  20. Подробнее о EDL system можно узнать из исходников примеров и edl.c

  21. 2) SWIHOOK Control
  22. Это обобщает в себе несколько приёмов по изменению swi-библиотеки в реальном времени.
  23. Т.е. появилась возможность специально устанавливать swihook в RAM и спокойно
  24. изменять неугодные ф-ии своими. Выведено несколько ф-ий по работе в этой области и даже
  25. существует возможность запуска уже заменёных ф-ий, из запасной библиотеки не используя при
  26. этом SWI прерывание, а так же существует возможность обратного восстановления конкретной функции
  27. или исходной библиотеки.

  28. Подробнее о SWIHOOK Control можно узнать из исходников примеров и ramlib.c и ALTSWI.asm

  29. 3) Заменён FUNC_ABORT

  30. Идея взята из известного мода от danil e71.
  31. Эта идея не просто скопирована, она расширена. При отсутствии ф-ии в библиотеке
  32. (Когда обнаружвается 0xFFFFFFFF при вызове не 0x8XXX-подобной ф-ии) искуственный
  33. пикофф заменяется сообщением с занесением в лог, при не однократном "необнаружении"
  34. ф-ии сообщение не выводится, но лог попрежнему ведётся. Причём каждая запись в лог
  35. сопровождается звуковым сигналом. Кроме номера недостающей ф-ии, пишется адрес её вызова.

  36. Подробнее можно узнать из ramlib.c и logger.c

  37. 4) Управление ф-ями ELFPack
  38. С помощью отправки GBS сообшений в процесс ELFPack Manager (HELPER) можно
  39. вызвать реконфигурацию, повторный запуск EDL, Daemons, BLIB, очистить PNG-Кеш.

  40. Подробнее можно узнать из gbsproc.c

  41. 5) Визуализация ошибочных запусков *.elf и *.edl

  42. 6) Мелкие изменения: модификация mfree - вместо пикоффа MemSFreeDeallocFail -> return 1

  43. ----------- Пути ----------
  44. Демоны:
  45. X:\Zbin\Daemons\*.elf
  46. Графика:
  47. X:\Zbin\IMG\*.png, elf_big.png, elf_small.png, edl_big.png, edl_small.png
  48. EDL, swi.blib:
  49. X:\Zbin\Libs\*.edl, swi.blib
  50. BCFG Конфигурация:
  51. X:\Zbin\etc\ELFPack.bcfg

  52. X = 4 (MMC/MicroSD/SD/SDHC)
  53. = 0 (Data)

  54. /* Authors and Ideas: Dimadze and PICAS (Он же ?unknow?, I'am just crazy) */
  55. P.S. Dimadze, сломал свой CX75, поэтому пока не починит или купит новый, ничего не сможет делать ...

  56. (Предложение, сброситься форумом и купить ему новый(ые) телефон(ы), он этого заслужил..)
复制代码

ELFPack_v3.0_alpha_041010.rar

144.33 KB, 下载次数: 24

EP 3.0.rar

766.02 KB, 下载次数: 28

评分

参与人数 1金钱数 +88 收起 理由
无泪の城 + 88 奖励:感谢-你和大家分享资源与经验!

查看全部评分

 楼主| 发表于 2010-12-5 18:13:36 | 显示全部楼层
EP 3.0.rar中有俄版S75和俄版E71的配置文件。
回复 支持 反对

使用道具 举报

发表于 2010-12-8 18:09:31 | 显示全部楼层
这个移植不难,拿2.3的套进去就可以,只有一个地址MFREE_MOD要移植,还是没人愿意自己试一下等别人搞
主要增加的功能有
1. 支持动态库,使用*.edl格式
2. 支持swilib函数动态管理,开机的时候也可以修改函数
3. 新的FUNC_ABORT,缺少函数的时候,不会在死机信息里显示,而是记录到\\Zbin\\etc\\ep_log.log
4. 支持elfpack管理
5. 神马玩意?*.edl和*.elf文件拓展支持?
6. 修改了mfree函数

评分

参与人数 1金钱数 +1 收起 理由
无泪の城 + 1 冰太给力了!

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-8 20:01:22 | 显示全部楼层
2.这个应该就是以前老版本的swi.blib吧
5.就是完全看不懂edl是神马.附件里虽然有实例还是吧懂

问了一下,好像国外也只有少数SG x75的用这个。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-8 21:33:08 | 显示全部楼层


这个好像看到65区有人在用。
回复 支持 反对

使用道具 举报

发表于 2010-12-9 09:11:43 | 显示全部楼层
这个ELF可以让X65像E71一样支持PNG半透明图片 24位的 很绚丽
可惜  能力不够  不会搞啊
看国外的帖子  好 ...
2301631 发表于 2010-12-8 20:45



    半透明65区有了,要加刷一个drawhook补丁,死机可以弄成提示信息的有这个PickOFFMSG 记录在0:\error.log
PickOFFMSG_src.rar (78.19 KB, 下载次数: 7)
回复 支持 反对

使用道具 举报

发表于 2010-12-10 09:22:18 | 显示全部楼层
回复 3# BingK


    试着移植到s65和cx开不了机啊,都是watchdog maxtime,不知道怎么回事
回复 支持 反对

使用道具 举报

发表于 2010-12-10 19:31:16 | 显示全部楼层
发你移植的上来看看
回复 支持 反对

使用道具 举报

发表于 2010-12-10 22:36:06 | 显示全部楼层
Desktop0.rar (513.46 KB, 下载次数: 9)
回复 支持 反对

使用道具 举报

发表于 2010-12-11 20:14:25 | 显示全部楼层
把中文的ep2.3的esi.asm替换到这个ep3.0的esi.asm应该就可以了
在options-->assembler-->preprocessor-->Defined symbol里面加一句SGOLD_CN

其实就是在ESI_PATCH:下面加一句STMFD        SP!,{R4,LR}
回复 支持 反对

使用道具 举报

发表于 2010-12-12 10:44:43 | 显示全部楼层
回复 11# BingK


    冰大,按照你说的编译出来成功开机,就是不能显示中文,后来修改additional.c文件中
  1. unsigned int char8to16(int c)
  2. {
  3.   if (c==0xA8) c=0x401;
  4.   if (c==0xAA) c=0x404;
  5.   if (c==0xAF) c=0x407;
  6.   if (c==0xB8) c=0x451;
  7.   if (c==0xBA) c=0x454;
  8.   if (c==0xBF) c=0x457;
  9.   if (c==0xB2) c=0x406;
  10.   if (c==0xB3) c=0x456;
  11.   if ((c>=0xC0)&&(c<0x100)) c+=0x350;
  12.   return(c);
  13. }

  14. void ascii2ws(char *s, WSHDR *ws)
  15. {
  16.   int c;
  17.   while((c=*s++))
  18.   {
  19.     wsAppendChar(ws,char8to16(c));
  20.   }
  21. }
  22. #ifdef NEWSGOLD
  23. __arm void ESI(WSHDR *ws, int dummy, char *s)
  24. #else
  25. __arm void ESI(char *s, WSHDR *ws)
  26. #endif
  27. {
  28.   if (((unsigned int)s>>28)==0xA) //翌朦觐 耱痤觇 桤 钺豚耱?RAM/FLASH
  29.   {
  30.     CutWSTR(ws,0);
  31.     ascii2ws(s,ws);
  32.   }
  33.   else
  34.   {
  35.     wsprintf(ws,"|%d|",s);
  36.   }
  37. }
复制代码
改为下面的
  1. /*
  2. unsigned int char8to16(int c)
  3. {
  4.   if (c==0xA8) c=0x401;
  5.   if (c==0xAA) c=0x404;
  6.   if (c==0xAF) c=0x407;
  7.   if (c==0xB8) c=0x451;
  8.   if (c==0xBA) c=0x454;
  9.   if (c==0xBF) c=0x457;
  10.   if (c==0xB2) c=0x406;
  11.   if (c==0xB3) c=0x456;
  12.   if ((c>=0xC0)&&(c<0x100)) c+=0x350;
  13.   return(c);
  14. }

  15. void  ascii2ws(char *s, WSHDR *ws)
  16. {
  17.   int c;
  18.   while((c=*s++))
  19.   {
  20.     wsAppendChar(ws,char8to16(c));
  21.   }
  22. }*/
  23. #pragma swi_number=0x242
  24. __swi __arm void gb2ws(WSHDR *ws, const char *s, int len);
  25. #ifdef NEWSGOLD
  26. __arm void ESI(WSHDR *ws, int dummy, char *s)
  27. #else
  28. __arm void ESI(char *s, WSHDR *ws)
  29. #endif
  30. {
  31.   if (((unsigned int)s>>28)==0xA) //翌朦觐 耱痤觇 桤 钺豚耱?RAM/FLASH
  32.   {
  33. //    CutWSTR(ws,0);
  34. //   ascii2ws(s,ws);
  35.      gb2ws(ws, s, strlen(s));
  36.   }
  37.   else
  38.   {
  39.     wsprintf(ws,"|%d|",s);
  40.   }
  41. }
复制代码
结果显示中文,不知道对不对

评分

参与人数 1金钱数 +88 技术分 +8 收起 理由
无泪の城 + 88 + 8 奖励:感谢-你的发言非常精彩,请再接再励! ...

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2010-12-12 10:57:13 | 显示全部楼层
就是这样
回复 支持 反对

使用道具 举报

发表于 2010-12-12 22:03:19 | 显示全部楼层
本帖最后由 mengdie 于 2010-12-17 11:22 编辑

总结一下,经过冰大的指点,总算有点进展了,移植到S65和CX65也可以显示中文了
1. 支持动态库,使用*.edl格式------------1.这个应该可以添加自定义函数,编写的ELF不用包含繁复的代码了,只需要从库中加载一次;2.没看懂;3.缩小平台差异,应该是针对各平台编写一个补充函数库,然后编写ELF的时候不用再针对个平台分别编写了。
2.Draw Handler System (新加的12月15更新的)新的绘图处理模块,这意味着你可以画整个手机的GUI,在这种情况下,画面不会“闪屏“,你也不必定时刷新屏幕了。
3. 支持swilib函数动态管理,开机的时候也可以修改函数------------不知道怎么修改
3. 新的FUNC_ABORT,缺少函数的时候,不会在死机信息里显示,而是记录到\\Zbin\\etc\\ep_log.log------------还没有遇见
4. 支持elfpack管理------------“ELFPack Manager (HELPER)”这个不知道是个ELF还是什么,应该可以实时修该刷新EDL, Daemons, BLIB, clean PNG-cache.
5. 神马玩意?*.edl和*.elf文件拓展支持?------------
6. 修改了mfree函数------------

总之就是稀里糊涂不会用,水平太低wap30::ii 传上来大家研究一下
EP 3.0SRC.rar (92.82 KB, 下载次数: 5)
ELFLoader3.0_CX6Cv50.rar (9.72 KB, 下载次数: 2)
ZBIN-s65.raR (69.11 KB, 下载次数: 5)
xtask.rar (27.92 KB, 下载次数: 9)

恩,就这样了


12月15日更新版本,增加了一个很好的功能,新的绘图处理模块
Processing system rendering. That is an opportunity to put your Drawing piano JULY
a handler that will run it before the moment of sen由于非常钦佩楼主,不得不说声好! data to the device display
for real output. This means you can paint over the entire phone GUI.
In this case, the picture will not "blink", you will not have to use a timer to keep
picture "afloat."
ELFPack_v3.0_beta_151210.rar (162.16 KB, 下载次数: 2)

评分

参与人数 1实力分 +2 收起 理由
laohan + 2 奖励:感谢-你和大家分享资源与经验!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2010-12-13 09:20:34 | 显示全部楼层
本帖最后由 mengdie 于 2010-12-13 10:45 编辑

回复 15# 2301631


    没有吧,我测试的时候没有撤销Drawhook,原来那个版本,不刷Drawhook,只有xtask会半透明吧,这个感觉好像是快了些,不要用动画效果,心理作用吧




楼下已加你QQ
回复 支持 反对

使用道具 举报

发表于 2010-12-13 10:01:56 | 显示全部楼层
本帖最后由 2301631 于 2010-12-24 18:30 编辑
回复  2301631


    没有吧,我测试的时候没有撤销Drawhook,原来那个版本,不刷Drawhook,只有xtask会 ...
mengdie 发表于 2010-12-13 09:20


    感谢梦蝶兄弟移植,要不然就用不上这么好的补丁了  效果见下图!


mendie修改的源码已上传到SVN
loquat 发表于 2010-12-13 10:21

楼下的辛苦啦  想不到loquat兄弟也还在为西机耕耘啦

这个数字时钟很帅,怎么弄的那么大一个字体出来的
lh19567 发表于 2010-12-14 12:21

ELF区找一个名为Bigdigitalclock的ELF文件,记得不错的话,是啊冰大侠发布的!
节约论坛资源 图片下载见这个帖子http://bbs.0110.cn/viewthread.php?tid=397056&extra=page%3D1

各机型要增加两个swilib
当运行ELF缺少所需函数是记录在Zbin\\etc\\ep_log.log中,就是这样的,说 ...
梦蝶 发表于 2010-12-19 16:30


寂寞的高手啊 我来补上CX7Av25的lib吧!


  1. CX7Av25
  2. +0FD4000
  3. #pragma enable old_equal_ff
  4. 0BC0: 0xA00D6E39 ; 2F0: __swi __arm int PushDRWOBJOnLAYER (DRWOBJ *, LCDLAYER *)
  5. 0BC4: 0xA00DBCFF ; 2F1: __swi __arm int LCDRedrawLAYER (LCDLAYER *)
  6. #pragma disable old_equal_ff
  7. +0
复制代码

ELF3.0半透明效果

ELF3.0半透明效果

M81效果

M81效果
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-12-13 10:21:05 | 显示全部楼层
mendie修改的源码已上传到SVN
回复 支持 反对

使用道具 举报

发表于 2010-12-14 12:21:21 | 显示全部楼层
回复 17# 2301631

这个数字时钟很帅,怎么弄的那么大一个字体出来的
回复 支持 反对

使用道具 举报

发表于 2010-12-14 13:44:08 | 显示全部楼层
附件里的安卓图标如何使用呢?
回复 支持 反对

使用道具 举报

发表于 2010-12-14 13:53:47 | 显示全部楼层
回复  2301631

这个数字时钟很帅,怎么弄的那么大一个字体出来的
lh19567 发表于 2010-12-14 12:21



    clock.elf自定义数字图片

附件里的安卓图标如何使用呢?
laohan 发表于 2010-12-14 13:44



    好像是那个UpdateManager用的
回复 支持 反对

使用道具 举报

发表于 2010-12-16 18:08:17 | 显示全部楼层
本帖最后由 梦蝶 于 2010-12-19 17:55 编辑

12月17日
俄网12月15更新的,暂时移植了几个机型,没别的flash,回去再看,先存这
ELFPack_v3.0_beta_151210.rar (205.69 KB, 下载次数: 11)


12月19日
更新一下
ELFLoaderCX6Cv50.rar (10.44 KB, 下载次数: 3)

评分

参与人数 1实力分 +4 收起 理由
laohan + 4 辛苦了

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-9-29 07:09

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表