loquat 发表于 2009-7-26 21:01:36

再开一贴,冰大,弄了一个不依赖swilib的接通振动。

直接从你的补丁来的,想弄到E71上。不是我需要,是我练手。。呵呵
但是注意到这两个机型的GBS_StartTimerProc函数,模式不一样。
并且,奇偶也不一样。不知道怎么处理,我注意到你跳到SetVibration时是用的BX
不知道为什么用BX不用BLX或者BL
#ifdef S7Cv47
#define      RAMTMR                        0xA8A7F180
#define      SetVibration                0xA01B11F3
#define      GBS_StartTimerProc      0xA0093278
#endif
#ifdef E71Cv41
#define      RAMTMR                        0xA8D89100
#define      SetVibration                0xA04C2F9B
#define      GBS_StartTimerProc    0xA0092531
#endif

      RSEG      VIBRA_HOOK
      CODE16
      LDR      R4, =VIBRA_BODY_
      BLX      R4
      
      RSEG      VIBRA_BODY
      CODE16
VIBRA_BODY_
      MOV      R4, LR
      LDR      R0, POWER
      LDR      R1, =SetVibration
      BLX      R1
      LDR      R0, =RAMTMR
      LDR      R1, TIME
      LDR      R2, =VIBRA_OFF
      LDR      R3, =GBS_StartTimerProc
      BLX      R3

      MOV      R3, R5
      MOV      R1, #0
      MOV      R0, #0xFF
      ADD      R0, #0x10
      LDR      R2,
      ADD      R2, #0x70
      ADD      R4, #4
      BX      R4      
VIBRA_OFF
      MOV      R0, #0
      LDR      R1, =SetVibration
      BX      R1
      
      DATA
TIME
      DCD      30
POWER
      DCD      20
      END

binghelingxi 发表于 2009-7-31 20:22:14

BX不改变LR的值
页: [1]
查看完整版本: 再开一贴,冰大,弄了一个不依赖swilib的接通振动。