CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
boot.c-Dateireferenz
#include "lolevel.h"
#include "platform.h"
#include "core.h"
#include "dryos31.h"
#include "callfunc.h"
+ Include-Abhängigkeitsdiagramm für boot.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define offsetof(TYPE, MEMBER)   ((int) &((TYPE *)0)->MEMBER)
 

Funktionen

void JogDial_task_my (void)
 
void task_CaptSeq ()
 
void task_InitFileModules ()
 
void task_RotaryEncoder ()
 
void task_MovieRecord ()
 
void task_ExpDrv ()
 
unsigned _ExecuteEventProcedure (const char *name,...)
 
unsigned _LCDMsg_Create (unsigned, unsigned, unsigned)
 
void _LCDMsg_SetStr (unsigned, char *)
 
void spytask (long ua, long ub, long uc, long ud, long ue, long uf)
 
void CreateTask_spytask ()
 
void __attribute__ ((naked, noinline))
 *-------------------------------------------------------------------— Mehr ...
 
void agent_orange ()
 

Variablen

const char *const new_sa = &_end
 
volatile int jogdial_stopped
 

Makro-Dokumentation

#define offsetof (   TYPE,
  MEMBER 
)    ((int) &((TYPE *)0)->MEMBER)

Definiert in Zeile 9 der Datei boot.c.

Dokumentation der Funktionen

void __attribute__ ( (naked, noinline)  )

*-------------------------------------------------------------------—

!!

IS_ERROR( hSoundHandle )

IS_ERROR( RetCode )

IS_ERROR( RetCode )

IS_ERROR( RetCode )

IS_ERROR( RetCode )

"MOV R3, #0\n" "STR R3, [R9]\n"

TODO! below is from sd400

"MOV R3, #0\n" "STR R3, [R9]\n"

TODO! below is from sd400

__MovieRecorder_c__100

__MovieRecorder_c__100

Definiert in Zeile 113 der Datei boot.c.

113  {
114  asm volatile ( // 0xfc02000c
115 " mov r0, #0x4000\n"
116 " mov sp, r0\n"
117 " bl sub_fc02007e\n"
118 " ldr r2, =0xc0242010\n"
119 " ldr r1, [r2]\n"
120 " orr.w r1, r1, #1\n"
121 " str r1, [r2]\n"
122 " ldr r0, =0xfcc98870\n"
123 " ldr r1, =0x10e1000\n"
124 " ldr r3, =0x11074ac\n"
125 " loc_fc02002a:\n"
126 " cmp r1, r3\n"
127 " itt cc\n"
128 " ldrcc.w r2, [r0],#4\n"
129 " strcc.w r2, [r1],#4\n"
130 " bcc loc_fc02002a\n"
131 " ldr r0, =0x10e1000\n"
132 " ldr r1, =0x264ac\n"
133 " bl sub_fc13019a\n"
134 " ldr r0, =0xfccbed1c\n"
135 " ldr r1, =0xbfe10800\n"
136 " ldr r3, =0xbfe17391\n"
137 " loc_fc020046:\n"
138 " cmp r1, r3\n"
139 " itt cc\n"
140 " ldrcc.w r2, [r0],#4\n"
141 " strcc.w r2, [r1],#4\n"
142 " bcc loc_fc020046\n"
143 " ldr r0, =0xfcc50100\n"
144 " ldr r1, =0x8000\n"
145 " ldr r3, =0x50770\n"
146 " loc_fc02005a:\n"
147 " cmp r1, r3\n"
148 " itt cc\n"
149 " ldrcc.w r2, [r0],#4\n"
150 " strcc.w r2, [r1],#4\n"
151 " bcc loc_fc02005a\n"
152 
153  // "mov.w r3, #0x01\n" // Enable TIO
154  // "ldr r1, =0x00008000\n" // Enable TIO
155  // "str.w r3, [r1]\n" // Enable TIO
156 
157 " ldr r3, =0x50770\n"
158 " ldr r1, =0x3a7cc8\n"
159 " mov.w r2, #0\n"
160 " loc_fc020070:\n"
161 " cmp r3, r1\n"
162 " it cc\n"
163 " strcc.w r2, [r3],#4\n"
164 " bcc loc_fc020070\n"
165 
166  // Install CreateTask patch
167  "adr r0, patch_CreateTask\n" // Patch data
168  "ldm r0, {r1,r2}\n" // Get two patch instructions
169  "ldr r0, =orig_CreateTask\n" // Address to patch
170  "bic r0, #1\n" // clear thumb bit
171  "stm r0, {r1,r2}\n" // Store patch instructions
172 
173  "b.w sub_fc062f48_my\n" // continue
174 
175  "patch_CreateTask:\n"
176  "ldr.w pc, [pc,#0]\n" // Do jump to absolute address CreateTask_my
177  ".long CreateTask_my + 1\n" // has to be a thumb address
178 );
179 }
unsigned _ExecuteEventProcedure ( const char *  name,
  ... 
)
unsigned _LCDMsg_Create ( unsigned  ,
unsigned  ,
unsigned   
)
void _LCDMsg_SetStr ( unsigned  ,
char *   
)
void agent_orange ( )

Definiert in Zeile 964 der Datei boot.c.

964  {
965 *(int*)0xd20b0810 = 0x4d0002; // Orange Led = on
966 }
void CreateTask_spytask ( )

Definiert in Zeile 88 der Datei boot.c.

89 {
90  // workaround to avoid crashes on startup triggered by closing the battery cover or after attaching / removing the lens
91  // see https://chdk.setepontos.com/index.php?topic=12542.msg145817#msg145817
92  if ( *(int*)(0x9e78) & 0x00600000 )
93  {
94 #ifdef BOOT_ROMLOG_SHORTCUT
95  if (( *(int*)(0xD20BF4A0) & 0x00002000) == 0) _CreateTask("SpyTaskMY", 0x19, 0x2000, spytask_my, 0);
96 #endif
97  _CreateTask("SpyTask", 0x19, 0x2000, spytask, 0);
98  }
99 }
void JogDial_task_my ( void  )
void spytask ( long  ua,
long  ub,
long  uc,
long  ud,
long  ue,
long  uf 
)

Definiert in Zeile 78 der Datei boot.c.

79 {
80  (void)ua; (void)ub; (void)uc; (void)ud; (void)ue; (void)uf;
81  core_spytask();
82 }
void task_CaptSeq ( )
void task_ExpDrv ( )
void task_InitFileModules ( )
void task_MovieRecord ( )
void task_RotaryEncoder ( )

Variablen-Dokumentation

volatile int jogdial_stopped

Definiert in Zeile 81 der Datei kbd.c.

const char* const new_sa = &_end

Definiert in Zeile 11 der Datei boot.c.