毛片网站在线看_天堂俺去俺来也www久久婷婷_日韩av免费网站_18性欧美xxxⅹ性满足_一区二区三区韩国免费中文网站 _性xx色xx综合久久久xx_999亚洲国产精

Rss & SiteMap

曙海教育集團論壇 http://www.bjzhda.cn

曙海教育集團論壇
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
[瀏覽完整版]

標題:ELF 程序開發教程及技術討論專貼

1樓
wangxinxin 發表于:2010-12-10 11:07:00
西門子x65/x75上的 ELF 程序大家已經見識過了,你有沒想過寫出自己的 ELF 程序呢?如果你有C語言基礎,那么加入 ELF 程序開發的隊伍吧。
要在西門子x65/x75上使用 ELF 程序,你應該確定自己的機器上正確的刷了適合你機型的3個補丁(如下):
function library
elfloader
swi-hook
查看機型在待機下輸入 *#06# 選更多,sW-Version一行就是了
現在的 ELF 程序一般是被刷過以上3個補丁的正確版本的機器所通用的(也有可能會限制機型,看程序怎么寫的了8-) )
下面進入正題

目錄:
1.IAR SI 安裝
2.在手機上運行 ELF 程序

3.如何用 IAR 編寫 ELF
4.例1:內存和文件的操作
5.例2:屏幕輸出和鍵盤控制
6.例3:一個后臺計時的小程序
7.例4:內存駐留程序
8.FAQ


1.IAR SI 安裝
www.iar.com下載 IAR Embedded Workbench  For ARM 的30天試用版,最新版為4.41好象(>100 mb),程序下載是免費的,但是會要你先注冊。填寫正確的油箱以后,就會把使用序列號發給你。安裝沒說的了吧,一路下一步,下一步,等等。

2.在手機上運行 ELF 程序
論壇上很多說明了,再扯就遠了點:-')

3.如何用 IAR 編寫 ELF
開始一個 ELF 程序的編寫,還是比較簡單 :P
在菜單上選擇 “Project->Create New Project”
然后選添加"Project->Add Files"把你用其他IDE寫好的C程序添加進來就可以了
工程必須還要有 func.asm (入口點) 和 div.r79 (這個好象莫必要?我也不太清楚,我是業余的:( )
C程序知道怎么寫,問題就不大。
你可能會問,怎么使用到手機里面那些需要的功能函數呢?這就需要 swilib.h 這個頭文件了(附件提供),這里面定義了n多函數,大家看名字猜吧。。。因為沒說明,滅辦法,唉。
上面的操作做好以后,就可以編譯我們的程序了,在 IAR 環境里左邊的 Workspace 下面,把 Debug 選成 Release,然后在工程上點右鍵,選屬性 CPU 可以不用改,下面的 Processor mode 改為 Arm,在 Library Configuration 標簽里,把 Library 選成 None,就可以編譯了。這里你也可以在 Linker 里面設置相關連接選項。生成完畢后,你就可以在 你的工程\Release\Exe 目錄里找到生成的 ELF 文件,放到手機里看看呢?:P

4.例1:內存和文件的操作
創建 main.c 如下后添加到你的工程里:
//main.c
#include "swilib.h"
void ElfKiller(void) { //用于 elf 退出時的相關操作
    extern void *ELF_BEGIN;
    //這里一般使用 mfree(), freeWS() 來釋放內存
    ((void (*)(void *))(mfree_adr()))(ELF_BEGIN); // 懶得解釋 :(
}
int main(char *exename, char *fname) { //主函數
//參數 exename 表示被動使用的ELF? 格式 4:\Zbin\xyz.elf
//參數 fname 傳遞文件名, 格式 0:\Misc\data.txt
//如果 ELF 啟動自身則為 0
    char *mem;
    int i, err;
    int handle;
    if (fname) {
        //操作標準文件:
        handle = fopen(fname, A_ReadWrite+A_BIN+A_Append+A_Create, P_READ+P_WRITE, err);
        //表示按記錄文件打開,數據添加到文件末尾,如果文件不存在則創建之
        //如果為 handle=fopen (fname,A_ReadOnly+A_BIN, 0,err);
        //則表示按只讀方式打開文件,具體常數參看 swilib.h
        if (handle != -1) { //-1 = error
            mem = malloc(10000); //分配內存: AllocWS() 按行分配 (2b)
            if (mem != 0) { //0 = error
                i = fread(handle, mem, 10000, err); //返回讀取得字節數,如果錯誤返回 error。
                //放置你的代碼在這里 makesomebody (mem,i);
                fwrite(handle, mem, i, err);
                mfree(mem); //釋放內存: FreeWS() 按行釋放
            }
            fclose(handle); //關閉文件
        }
    }
    SUBPROC((void *)ElfKiller); //放這個東西在這里就最好了,不存在也沒關系!
    return(0);
}
//PS. 由于 x65 中文件的讀取和記錄是按 32767 字節的塊操作的,
//因此將 fread() 和 fwrite() 改造為 fread32 () 和 fwrite32()
int fread32(int fh, char *buf, int len, unsigned int *err) { // (c) Rst7
    int clen;
    int rlen;
    int total=0;
    while (len) {
        if (len > 16384) clen = 16384; else clen = len;
        total += (rlen = fread(fh, buf, clen, err));
        if (rlen != clen) break;
        buf += rlen;
        len -= clen;
    }
    return(total);
}

最后不要忘了還有 func.asm 這個文件:
;Func.asm
    PUBLIC ELF_BEGIN
    RSEG ELFBEGIN:DATA
ELF_BEGIN
defadr MACRO a,b
   PUBLIC a
a EQU b
   ENDM
   END

5.例2:屏幕輸出和鍵盤控制
通過導航鍵控制屏幕上的符號移動,長按紅鍵退出。本例子基于 TED- A (c) Of rst7
看本例時最好從下往上看:)

創建 main.c 如下后添加到你的工程里:
//main.c
//屏幕和鍵盤處理
#include "swilib.h"
typedef struct {
    GUI gui;
    //WSHDR *ws1;
    //WSHDR *ws2;
    //int i1;
} MAIN_GUI;
typedef struct {
    CSM_RAM csm;
    int gui_id;
} MAIN_CSM;
const int minus11 = -11;
const unsigned int INK = 0;
const unsigned int PAPER = 1;
volatile int xx = 0, yy = 0; //繪圖坐標
const char bmp[12] = {0xFC, 0x86, 0xB3, 0xA9, 0xB1, 0xA9, 0x81, 0xFF, 0, 0, 0, 0};
const IMGHDR img = {8, 12, 0x1, 0, (char *)bmp};
//============
//屏幕輸出
//============
void DrwImg(IMGHDR *img, int x, int y, int *pen, int *brush)  {
    RECT rc;
    DRWOBJ drwobj;
    StoreXYWHtoRECT(rc, x, y, img->w, img->h);
    SetPropTo_Obj5(drwobj, &rc, 0, img);
    SetColor(drwobj, pen, brush);
    DrawObject(drwobj);
}
void DrawScreen(void) {
    int *ink = GetPaletteAdrByColorIndex(INK);
    int *paper = GetPaletteAdrByColorIndex(PAPER);
    int x = xx;
    DrwImg((IMGHDR *)img, x, yy, ink, paper);
}
//繪制屏幕
void method0(MAIN_GUI *data) {
    DrawScreen();
}
void method1(MAIN_GUI *data, void *(*malloc_adr)(int)) {}
void method2(MAIN_GUI *data, void (*mfree_adr)(void *)) {}
void method3(MAIN_GUI *data, void *(*malloc_adr)(int), void (*mfree_adr)(void *)) {}
void method4(MAIN_GUI *data, void (*mfree_adr)(void *)) {}
void method7(MAIN_GUI *data, void (*mfree_adr)(void *)) {}
int method8(void) {return(0);}
int method9(void) {return(0);}
//============
//按鍵控制
//============
int method5 (MAIN_GUI *data, GUI_MSG *msg) {
    //if (msg->gbsmsg->msg==KEY_UP) //釋放按鍵時
    if ((msg->gbsmsg->msg == KEY_DOWN) || (msg->gbsmsg->msg == LONG_PRESS)) //按下鍵或者長按鍵時
        switch(msg->gbsmsg->submess) {
        case RED_BUTTON:
            return(1); //發生 generalFunc 流調用 GUI - > 關閉 GUI
        case UP_BUTTON:
            if (yy > 0) --yy; break;
        case LEFT_BUTTON:
            if (xx > 0) --xx; break;
        case DOWN_BUTTON:
            if (yy < 130) ++yy; break;
        case RIGHT_BUTTON:
            if ( xx < 120) ++xx; break;
        //case GREEN_BUTTON:
        //case RIGHT_SOFT:
        //case ENTER_BUTTON:
        //case LEFT_SOFT:
        //case VOL_UP_BUTTON:
        //case VOL_DOWN_BUTTON:
        //case '0':
        //case '9':
        //case '#':
        //SUBPROC((void *)DoDiskAccess,1);
        //降低其他處理的優先級以繪制窗口
        }
    DrawScreen();
    return(0);
}
const void *const gui_methods[11] = {
    (void *)method0, //Redraw
    (void *)method1, //Create
    (void *)method2, //Close
    (void *)method3, //Focus
    (void *)method4, //Unfocus
    (void *)method5, //OnKey
    0,
    (void *)method7, //Destroy
    (void *)method8,
    (void *)method9,
    0
};
const RECT Canvas={0,0,131,175};
void maincsm_oncreate(CSM_RAM *data) {
    MAIN_GUI *main_gui = malloc(sizeof (MAIN_GUI));
    MAIN_CSM *csm = (MAIN_CSM *)data;
    zeromem(main_gui, sizeof (MAIN_GUI));
    //ustk=malloc(STKSZ); //為程序分配內存
    //info_ws=AllocWS(512);
    main_gui->gui.canvas = (void *)(Canvas);
    main_gui->gui.flag30 = 2;
    main_gui->gui.methods = (void *)gui_methods; //基本方法(見上面)
    main_gui->gui.item_ll.data_mfree = (void (*)(void *))mfree_adr(); //我也不清楚:(
    csm->csm.state = 0;
    csm->csm.unk1 = 0;
    csm->gui_id = CreateGUI(main_gui); //直接創建 GUI
}
void Killer(void) { //退出程序
    extern void *ELF_BEGIN;
    //mfree(ustk); //釋放內存
    //FreeWS(info_ws);
    ((void (*)(void *))(mfree_adr()))(ELF_BEGIN);
}
void maincsm_onclose(CSM_RAM *csm) {
    //GBS_StopTimer(light_tmr);
    SUBPROC((void *)Killer);
}
int maincsm_onmessage(CSM_RAM *data, GBS_MSG *msg) {
    return(1);
}
unsigned short maincsm_name_body[140];
const struct {
    CSM_DESC maincsm;
    WSHDR maincsm_name;
} MAINCSM = {
                {
                    maincsm_onmessage, //信息進程
                    maincsm_oncreate, //創建時調用的方法
                    //如果機型為 S75 移除以下4行
                    //并在 swilib.h 里取消對 #define NEWSGOLD 這行的注釋
                    //0,
                    //0,
                    //0,
                    //0,
                    maincsm_onclose, //關閉時調用的方法
                    sizeof (MAIN_CSM),
                    1,
                    minus11
                },
                {
                    maincsm_name_body,
                    NAMECSM_MAGIC1,
                    NAMECSM_MAGIC2,
                    0x0,
                    139
                }
            };
int main(char *exename, char *fname) {
    char dummy[sizeof (MAIN_CSM)];
    //strcpy(filename,fname); //保存數據到文件
    CreateCSM(MAINCSM.maincsm, dummy, 0);
    return 0;
}
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

Copyright © 2000 - 2009 曙海教育集團
Powered By 曙海教育集團 Version 2.2
Processed in .01563 s, 2 queries.
毛片网站在线看_天堂俺去俺来也www久久婷婷_日韩av免费网站_18性欧美xxxⅹ性满足_一区二区三区韩国免费中文网站 _性xx色xx综合久久久xx_999亚洲国产精
成人午夜看片网址| 日本vs亚洲vs韩国一区三区 | 国产欧美一区视频| 免费高清不卡av| 日韩午夜激情av| 久久99国产精品免费| 欧美成人a视频| 狠狠色综合色综合网络| 久久久精品人体av艺术| 国产风韵犹存在线视精品| 国产亚洲女人久久久久毛片| 国产传媒日韩欧美成人| 国产精品久久久99| 欧美日韩精品免费观看视频 | 香蕉av福利精品导航| 欧美日韩精品福利| 精品一区二区三区在线观看| 欧美大度的电影原声| 国产精品一区二区久久精品爱涩| 亚洲欧洲精品成人久久奇米网| 国产在线精品国自产拍免费| 国产欧美日韩三级| 在线亚洲免费视频| 美女高潮久久久| 国产精品区一区二区三区| 在线免费观看成人短视频| 婷婷亚洲久悠悠色悠在线播放 | 正在播放亚洲一区| 日韩中文字幕不卡| 久久青草国产手机看片福利盒子 | ww亚洲ww在线观看国产| 国产精品夜夜嗨| 国产精品成人免费在线| 91麻豆精品国产91久久久久| 不卡视频免费播放| 久久99精品网久久| 洋洋av久久久久久久一区| 欧美日韩精品欧美日韩精品一| 国产乱一区二区| 午夜久久久久久| 国产欧美日韩另类视频免费观看| 欧美日韩精品是欧美日韩精品| 国产精品456| 天堂va蜜桃一区二区三区漫画版 | 自拍偷自拍亚洲精品播放| 91精品国产美女浴室洗澡无遮挡| 成人深夜在线观看| 男人的天堂久久精品| 亚洲三级免费观看| 日本一区二区三区四区| 91精品国产综合久久久久| 成人国产在线观看| 国产在线观看一区二区| 男人的天堂亚洲一区| 亚瑟在线精品视频| 亚洲一区欧美一区| 亚洲男同性恋视频| 国产精品短视频| 欧美激情一区在线观看| 精品日本一线二线三线不卡| 欧美三级韩国三级日本三斤 | 精品中文av资源站在线观看| 性做久久久久久免费观看欧美| 国产精品区一区二区三区| 国产亚洲午夜高清国产拍精品 | 欧美性色aⅴ视频一区日韩精品| 成人永久aaa| 国产成人福利片| 丰满白嫩尤物一区二区| 国产精品综合二区| 国产91精品免费| 97国产一区二区| 一本久久综合亚洲鲁鲁五月天| 成人在线综合网| 成人网在线播放| 91亚洲资源网| 欧美日韩国产一级| 7777精品伊人久久久大香线蕉超级流畅| 欧美午夜精品免费| 欧美人体做爰大胆视频| 91麻豆精品国产91久久久久久 | 欧美顶级少妇做爰| 欧美日韩亚洲不卡| 欧美日高清视频| 日韩欧美国产系列| 26uuu色噜噜精品一区| 久久久精品国产免费观看同学| 久久久高清一区二区三区| 国产人成一区二区三区影院| 亚洲桃色在线一区| 全国精品久久少妇| 成人午夜在线视频| 69成人精品免费视频| 久久免费视频一区| 亚洲色图在线看| 美女视频黄 久久| 波多野结衣中文字幕一区 | 成人午夜精品一区二区三区| 暴力调教一区二区三区| 在线观看日产精品| 精品999在线播放| 亚洲一区二区三区在线播放| 奇米影视一区二区三区小说| 不卡av在线免费观看| 欧美久久久久久久久久 | 欧美精品一区二区三区视频| 中文字幕在线一区| 日韩二区在线观看| 成人激情综合网站| 日韩欧美一区中文| 亚洲综合在线电影| 成人做爰69片免费看网站| 91麻豆精品国产自产在线观看一区| 欧美国产日本韩| 久久国产日韩欧美精品| 色天使色偷偷av一区二区| 久久综合色之久久综合| 亚洲成人免费影院| 91亚洲精品乱码久久久久久蜜桃| 精品日韩成人av| 亚洲网友自拍偷拍| 99久久免费国产| 国产亚洲午夜高清国产拍精品| 亚洲成人精品在线观看| 99久久国产综合精品色伊| 久久久久久久免费视频了| 日本视频在线一区| 欧美在线观看18| 亚洲欧美日韩精品久久久久| 国产mv日韩mv欧美| 精品国产成人系列| 国产在线看一区| 欧美va亚洲va在线观看蝴蝶网| 奇米888四色在线精品| 欧美男男青年gay1069videost| 一区二区日韩av| 色综合色狠狠综合色| 欧美国产激情一区二区三区蜜月| 精品在线播放免费| 久久夜色精品国产欧美乱极品| 青娱乐精品在线视频| 91精品黄色片免费大全| 琪琪一区二区三区| 91精品麻豆日日躁夜夜躁| 日韩不卡在线观看日韩不卡视频| 日本二三区不卡| 亚洲一区二区四区蜜桃| 欧美午夜精品电影| 亚洲超丰满肉感bbw| 欧美日韩你懂得| 七七婷婷婷婷精品国产| 日韩欧美三级在线| 久久电影网站中文字幕| 26uuu精品一区二区在线观看| 国产高清精品在线| 亚洲视频狠狠干| 91.成人天堂一区| 精品一区二区三区香蕉蜜桃| 欧美videos中文字幕| av午夜精品一区二区三区| 亚洲欧美日韩一区二区| 欧美婷婷六月丁香综合色| 麻豆精品视频在线观看免费| 久久精品免视看| 99国内精品久久| 亚洲一区二区免费视频| 欧美va亚洲va香蕉在线| 99久久国产综合精品女不卡| 日韩高清在线一区| 久久久99精品免费观看不卡| 99久久亚洲一区二区三区青草 | 国产激情精品久久久第一区二区 | 欧美精品久久久久久久多人混战| 黑人巨大精品欧美一区| 亚洲免费毛片网站| 日韩精品中午字幕| 99久久婷婷国产精品综合| 日韩va亚洲va欧美va久久| 精品国产免费视频| 国产传媒欧美日韩成人| 91精品国产色综合久久ai换脸| 日产国产欧美视频一区精品| 国产亚洲福利社区一区| 99久久99久久综合| 日韩电影免费在线看| 国产精品久久毛片| 91麻豆精品国产| av一本久道久久综合久久鬼色| 偷拍自拍另类欧美| 中文字幕字幕中文在线中不卡视频| 欧美精品一二三区| 99国产精品99久久久久久| 三级不卡在线观看| 亚洲视频一区二区在线| 国产日韩欧美在线一区| 欧美一区二区三区在线观看| 99久久精品国产网站| 国产91富婆露脸刺激对白| 奇米在线7777在线精品| 亚洲妇熟xx妇色黄|