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-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 ()
 
void handle_jogdial ()
 
void spytask (long ua, long ub, long uc, long ud, long ue, long uf)
 
void CreateTask_spytask ()
 
void task_blinker ()
 
void CreateTask_blinker ()
 
void init_required_fw_features (void)
 
void __attribute__ ((naked, noinline))
 *-------------------------------------------------------------------— Mehr ...
 

Variablen

const char *const new_sa = &_end
 
volatile int jogdial_stopped
 

Makro-Dokumentation

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

Definiert in Zeile 6 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

ASM1989 -> In sx200:FF857190 //"Mounter.c"

ASM1989 -> In sx200:FF81B284 // DebugAssert

Definiert in Zeile 140 der Datei boot.c.

140  {
141 // *(int*)0xd20b0884 = 0x4d0002;
142  asm volatile ( // 0xfc02000c
143 " ldr.w sp, =0x80010000\n"
144 " bl sub_fc020064\n"
145 " ldr r2, =0xc0242010\n"
146 " ldr r1, [r2]\n"
147 " orr r1, r1, #1\n"
148 " str r1, [r2]\n"
149 " ldr r0, =0xfcc64c5c\n"
150 " ldr r1, =0x010c1000\n"
151 " ldr r3, =0x010df808\n"
152 "loc_fc020024:\n"
153 " cmp r1, r3\n"
154 " itt lo\n"
155 " ldrlo r2, [r0], #4\n"
156 " strlo r2, [r1], #4\n"
157 " blo loc_fc020024\n"
158 // Install CreateTask patch
159 // use half words in case source or destination not word aligned
160  "adr r0, patch_CreateTask\n" // src: Patch data
161  "ldr r1, =hook_CreateTask\n" // dest: Address to patch (hook_ has thumb bit off)
162  "add r2, r0, #8\n" // two words
163 "task_hook_loop:\n"
164  "ldrh r3, [r0],#2\n"
165  "strh r3, [r1],#2\n"
166  "cmp r0,r2\n"
167  "blo task_hook_loop\n"
168 " ldr r0, =0x010c1000\n"
169 " ldr r1, =0x0001e808\n"
170 " bl sub_fc119422\n"
171 " ldr r0, =0xfcc3dc80\n"
172 " ldr r1, =0x00008000\n"
173 " ldr r3, =0x0002efdc\n"
174 "loc_fc020040:\n"
175 " cmp r1, r3\n"
176 " itt lo\n"
177 " ldrlo r2, [r0], #4\n"
178 " strlo r2, [r1], #4\n"
179 " blo loc_fc020040\n"
180 " ldr r3, =0x0002efdc\n"
181 " ldr r1, =0x0035bb28\n"
182 " mov.w r2, #0\n"
183 "loc_fc020056:\n"
184 " cmp r3, r1\n"
185 " it lo\n"
186 " strlo r2, [r3], #4\n"
187 " blo loc_fc020056\n"
188 //" b.w loc_fc05d050\n"
189 " b.w sub_fc05d050_my\n" // continue
190 
191  "patch_CreateTask:\n"
192  "ldr.w pc, [pc,#0]\n" // Do jump to absolute address CreateTask_my
193  ".long CreateTask_my + 1\n" // has to be a thumb address
194 
195 
196 );
197 }
void CreateTask_blinker ( )

Definiert in Zeile 99 der Datei boot.c.

100 {
101  _CreateTask("blinker", 0x19, 0x200, task_blinker, 0);
102 }
void CreateTask_spytask ( )

Definiert in Zeile 36 der Datei boot.c.

37 {
38 // *(int*)0xd20b0994 = 0x4d0002;
39 
40  _CreateTask("SpyTask", 0x19, 0x2000, spytask, 0);
41 }
void handle_jogdial ( )

Definiert in Zeile 115 der Datei kbd.c.

116 {
117  if (jogdial_stopped) {
118  // update positions in RAM
121  return 0; // return 0 to disable fw's dial handler
122  }
123  return 1;
124 }
void init_required_fw_features ( void  )

Definiert in Zeile 112 der Datei boot.c.

112  {
113  extern void _init_focus_eventflag();
114  extern void _init_nd_eventflag();
115 // extern void _init_nd_semaphore();
116  //extern void _init_zoom_semaphore(); // for MoveZoomLensWithPoint
117 
118  _init_focus_eventflag();
119  _init_nd_eventflag();
120  // for MoveIrisWithAv, based on fc3d1a74 (but without registers eventprocs)
121  extern int av_override_semaphore;
122  extern int _CreateBinarySemaphoreStrictly(int x, int y);
123  av_override_semaphore = _CreateBinarySemaphoreStrictly(0,0);
124 // _init_nd_semaphore();
125 }
void JogDial_task_my ( void  )
void spytask ( long  ua,
long  ub,
long  uc,
long  ud,
long  ue,
long  uf 
)

Definiert in Zeile 27 der Datei boot.c.

28 {
29  (void)ua; (void)ub; (void)uc; (void)ud; (void)ue; (void)uf;
30  core_spytask();
31 }
void task_blinker ( )

Definiert in Zeile 44 der Datei boot.c.

45 {
46 #if 0
47  unsigned v=*(volatile unsigned *)(0x9808);
48  unsigned pat=0;
49  if(v & 0x80000){
50  pat |=1;
51  }
52  if(v & 0x100000){
53  pat |=2;
54  }
55  if(v & 0x200000){
56  pat |=4;
57  }
58  if(v & 0x400000){
59  pat |=8;
60  }
61  if(v & 0x800000){
62  pat |=0x10;
63  }
64  while(1) {
65  int i;
66  for(i=0;i<5;i++) {
67  *(volatile int*)0xd20b0994 = 0x4d0002;
68  if((pat >> i) & 1) {
69  msleep(1000);
70  } else {
71  msleep(250);
72  }
73  *(volatile int*)0xd20b0994 = 0x4c0003;
74  msleep(500);
75  }
76  msleep(5000);
77  }
78 #endif
79 #if 0
80  int delay=1000;
81  if(rbval == 0x12345678) {
82  delay=100;
83  }
84  while(1) {
85  *(volatile int*)0xd20b0994 = 0x4d0002;
86  msleep(delay);
87  *(volatile int*)0xd20b0994 = 0x4c0003;
88  msleep(delay);
89  }
90 #endif
91  while(1) {
92  *(volatile int*)0xd20b0994 = 0x4d0002;
93  msleep(250);
94  *(volatile int*)0xd20b0994 = 0x4c0003;
95  msleep(250);
96  }
97 }
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 8 der Datei boot.c.