爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
123
返回列表 发新帖
楼主: 8226175
收起左侧

[其它] ELF 程序开发教程及技术讨论专贴

[复制链接]
发表于 2007-5-10 18:07:57 | 显示全部楼层


我来回答吧。
#pragma swi_number=0x0165
__swi __arm void ConstructEditControl(EDITCONTROL *EditControl,int type,int flag,WSHDR *ws,int maxlen);
//thumb
//pattern=??,B5,??,B0,??,1C,??,1C,??,1C,??,29,??,9F,??,D0,??,2D,??,D1,??,2E,??,D0,??,DF,??,22,??,20,??,??,??,??,??,??,??,??,??,1C,??,??,??,??,??,70,??,98,??,60,??,62,??,83,??,B0,??,BD

第二个参数type设为4,创建的输入框就可以输入中文了。其他值如下:
1   不可编辑
2   只能输入数字
3   能输入英文
4   能输入中文

[ 本帖最后由 nameX 于 2007-5-10 18:10 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2007-5-10 18:31:19 | 显示全部楼层
嗯,有很多函数的使用方法,还不是很清楚。

为了方便以后的开发者,决定开个贴讨论和共享swilib中函数的使用方法。。不知大家意见如何。。
回复 支持 反对

使用道具 举报

发表于 2007-5-11 10:02:38 | 显示全部楼层

回复 #41 nameX 的帖子

很好的心得,谢谢。。

顺便问问,知道怎么用zlib.h里面的函数吗?inc文件夹里面有这个头文件但是无法链接。。
回复 支持 反对

使用道具 举报

发表于 2007-5-11 13:45:18 | 显示全部楼层

回复 #43 addoil 的帖子

zlib.h里面的函数好像是被png.h调用。。。

下面是cbn的所有elf源代码。。。
那些游戏ROM都是可以被压缩的,,,你可以参考一下,,,
GameBoySrc.zip
Cbn.rar
cbn.r00.rar
回复 支持 反对

使用道具 举报

发表于 2007-7-6 14:51:41 | 显示全部楼层
有个疑问,swilib.h里,关于文件读取的fread和lseek,它们的参数都是int,那么顶多也只能处理不超过64K的文件,如果要处理大于64K的文件该怎么办?

我看其它elf的源代码,有些里面fread用到的变量显然是long的,但是由于没有包含swilib.h的源码,不知道是不是他们自己改动过头文件。

自己找了下资料
ARM的設計只有BYTE(1B) and WORD(4B)兩種基本型態

看来只要不是char的都是4个byte的word。


[ 本帖最后由 zlowly 于 2007-7-6 16:06 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2007-8-22 23:34:03 | 显示全部楼层

iar 编译器支持除法运算的问题

我写了某函数,包含下面语句:注意红色部分
int count()
{
  int words,writed,smsNum=1;
  EDITCONTROL ec;
  ExtractEditControl(edsmsGUI,2,&ec);
  words=wstrlen(ec.pWS);
  
  if(words>70)
  {
    smsNum=(words-1)/66+1;

&#160; &#160; if(words<133)
&#160; &#160;&#160; &#160;writed=len-70;
&#160; &#160; else
&#160; &#160;&#160; &#160;writed=words-(smsNum-1)*66;
&#160;&#160;}
&#160;&#160;else writed=words;
&#160;&#160;sprintf(edsms_hdr_txt,"%d -%2d",smsNum,writed);
&#160;&#160;return words;
}



结果Linking时老出错,错误信息
Error[e46]: Undefined external "??div32_a" referred in 可配置_main ( g:\我的文档\MF Use\ELF编程\megadial_CN\Release\Obj\可配置_main.r79 )

但是,只要把红色语句中那个除号改成乘、加、减就什么问题都没,奇怪。
其它变量的除法也没有问题。

已经解决,竟跟编译的这个参数有关,害得我以为是iar版本的关系,又去官网下载了两个不同的版本。
未命名.JPG
把Size改为Speed就行了,不用除法还就没这个问题,查阅了一下资料,西门子手机用的ARM处理器不支持硬件除法运算,要软件模拟,编译的Size参数看来省略了一些函数定义。

[ 本帖最后由 8226175 于 2007-8-23 18:35 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2007-11-13 02:16:05 | 显示全部楼层
这个 png.h 怎么搞
看看下面的编译记录

Fatal Error[Pe005]: could not open source file "png.h"               C:\Documents and Settings\kanxuefeng\桌面\IAR\ARM\inc\swilib.h 19


swilib.h 好象是到1D4的,也是在论坛上下的
这个问题怎么解决,在论坛上搜索不到png.h,望知道的兄弟说下


谢了先
回复 支持 反对

使用道具 举报

发表于 2007-11-13 08:23:38 | 显示全部楼层

回复 47# 的帖子

我们的svn上有。
回复 支持 反对

使用道具 举报

发表于 2007-11-13 10:36:27 | 显示全部楼层
翻过了,没找到
不知道具体位置,能否上传一个,或者到elf讨论群
回复 支持 反对

使用道具 举报

发表于 2007-11-13 10:53:01 | 显示全部楼层

回复 49# 的帖子

使用TortoiseSVN下载我们的SVN整个源码目录
回复 支持 反对

使用道具 举报

发表于 2007-11-25 00:41:25 | 显示全部楼层
各位,可以帮手编写一个S65的ELF程序吗?
功能是实现用其他键代替导航键短按(即确认功能)!!!

感激不尽!
回复 支持 反对

使用道具 举报

发表于 2008-1-6 20:17:51 | 显示全部楼层
谁大概能把swilib.h中的函数注释一下呀~这样方便使用
回复 支持 反对

使用道具 举报

发表于 2008-3-18 14:34:01 | 显示全部楼层
用ELF添加图标到图标栏的一个实例,ELKA的,需要“Elfs can add icons to iconbar ——允许ELF添加图标到图标栏”这个补丁配合
  1. #include "..\inc\swilib.h"

  2. #pragma swi_number=0x27
  3. __swi __arm void AddIconToIconBar(int pic, short *num);


  4. #pragma segment="ELFBEGIN"
  5. void ElfKiller(void)
  6. {
  7.   extern void kill_data(void *p, void (*func_p)(void *));
  8.   kill_data(__segment_begin("ELFBEGIN"),(void (*)(void *))mfree_adr());
  9. }

  10. void addIconBar(short* num)
  11. {
  12.   
  13.   if (IsGPRSConnected())
  14.   {   
  15.     AddIconToIconBar(0x1EC,num);
  16.   }

  17. }

  18. void maincsm_oncreate(CSM_RAM *data)
  19. {

  20. }

  21. void maincsm_onclose(CSM_RAM *data)
  22. {
  23.   SUBPROC((void *)ElfKiller);
  24. }

  25. int maincsm_onmessage(CSM_RAM* data, GBS_MSG* msg)
  26. {
  27.   return 1;
  28. }  

  29. unsigned short maincsm_name_body[140];
  30. const int minus11=-11;

  31. typedef struct
  32. {
  33.   char check_name[8];
  34.   int addr;
  35. }ICONBAR_H;

  36. struct
  37. {
  38.   CSM_DESC maincsm;
  39.   WSHDR maincsm_name;
  40.   ICONBAR_H iconbar_handler;
  41. }MAINCSM =
  42. {
  43.   {
  44.   maincsm_onmessage,
  45.   maincsm_oncreate,
  46. #ifdef NEWSGOLD
  47.   0,
  48.   0,
  49.   0,
  50.   0,
  51. #endif
  52.   maincsm_onclose,
  53.   sizeof(CSM_RAM),
  54.   1,
  55.   &minus11
  56.   },
  57.   {
  58.     maincsm_name_body,
  59.     NAMECSM_MAGIC1,
  60.     NAMECSM_MAGIC2,
  61.     0x0,
  62.     139
  63.   },
  64.   {
  65.     "IconBar"
  66.   }
  67. };

  68. void UpdateCSMname(char* name)
  69. {
  70.   wsprintf((WSHDR *)(&MAINCSM.maincsm_name),name);
  71. }

  72. void SetIconBarHandler()
  73. {
  74.   MAINCSM.iconbar_handler.addr = (int)addIconBar;
  75. }

  76. int main()
  77. {
  78.   CSMROOT *csmr;
  79.   CSM_RAM *save_cmpc;
  80.   CSM_RAM main_csm;
  81.   UpdateCSMname("GPRSicon");
  82.   SetIconBarHandler();
  83.   LockSched();
  84.   csmr=CSM_root();
  85.   save_cmpc=csmr->csm_q->current_msg_processing_csm;
  86.   csmr->csm_q->current_msg_processing_csm=csmr->csm_q->csm.first;
  87.   CreateCSM(&MAINCSM.maincsm,&main_csm,0);
  88.   csmr->csm_q->current_msg_processing_csm=save_cmpc;
  89.   UnlockSched();
  90.   return 0;
  91. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2008-5-14 10:23:43 | 显示全部楼层
请问,能否通过elf读写手机的数据端口,有这样的函数或者其他方法吗?
感激不尽!
回复 支持 反对

使用道具 举报

发表于 2008-7-15 12:20:32 | 显示全部楼层
我是用j2mei做开发的,明基网站上面没有提供手机的模拟器等东西。

楼主能不能给个EF71的模拟器呢!
回复 支持 反对

使用道具 举报

发表于 2009-6-19 13:38:59 | 显示全部楼层
直接一头雾水。。。。
回复 支持 反对

使用道具 举报

发表于 2009-7-28 17:09:58 | 显示全部楼层
开始学习了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 08:52

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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