CHDK_DE Vorschauversion  Trunk Rev. 5428
 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 DPs   (void*)0xC022006C
 
#define LED_AF   (void*)0xC0220094
 
#define LED_ISO   (void*)0xC02200B0
 
#define LED_PWR   (void*)0xC0220068
 
#define LED_BLUE   (void*)0xC022006C
 
#define DELAYs   3000000
 

Funktionen

void JogDial_task_my (void)
 
void CreateTask_spytask ()
 
void taskCreateHook (int *p)
 
void boot ()
 
void __attribute__ ((naked, noinline))
 

Variablen

const char *const new_sa = &_end
 
volatile int jogdial_stopped
 

Makro-Dokumentation

#define DELAYs   3000000

Definiert in Zeile 26 der Datei boot.c.

#define DPs   (void*)0xC022006C

Definiert in Zeile 21 der Datei boot.c.

#define LED_AF   (void*)0xC0220094

Definiert in Zeile 22 der Datei boot.c.

#define LED_BLUE   (void*)0xC022006C

Definiert in Zeile 25 der Datei boot.c.

#define LED_ISO   (void*)0xC02200B0

Definiert in Zeile 23 der Datei boot.c.

#define LED_PWR   (void*)0xC0220068

Definiert in Zeile 24 der Datei boot.c.

Dokumentation der Funktionen

void __attribute__ ( (naked, noinline)  )

!!

Definiert in Zeile 78 der Datei boot.c.

78  {
79 asm volatile (
80 " LDR R0, =0xFF81021C \n"
81 " MOV R1, #0 \n"
82 " LDR R3, =0xFF810254 \n"
83 
84 "loc_FF8101B0:\n"
85 " CMP R0, R3 \n"
86 " LDRCC R2, [R0], #4 \n"
87 " STRCC R2, [R1], #4 \n"
88 " BCC loc_FF8101B0 \n"
89 " LDR R0, =0xFF810254 \n"
90 " MOV R1, #0x4B0 \n"
91 " LDR R3, =0xFF810468 \n"
92 
93 "loc_FF8101CC:\n"
94 " CMP R0, R3 \n"
95 " LDRCC R2, [R0], #4 \n"
96 " STRCC R2, [R1], #4 \n"
97 " BCC loc_FF8101CC \n"
98 " MOV R0, #0xD2 \n"
99 " MSR CPSR_cxsf, R0 \n"
100 " MOV SP, #0x1000 \n"
101 " MOV R0, #0xD3 \n"
102 " MSR CPSR_cxsf, R0 \n"
103 " MOV SP, #0x1000 \n"
104 " LDR R0, =0x6C4 \n"
105 " LDR R2, =0xEEEEEEEE \n"
106 " MOV R3, #0x1000 \n"
107 
108 "loc_FF810200:\n"
109 " CMP R0, R3 \n"
110 " STRCC R2, [R0], #4 \n"
111 " BCC loc_FF810200 \n"
112 " BL sub_FF810FB8_my \n" // --> Patched. Old value = 0xFF810FB8.
113 );
114 }
void boot ( )

Definiert in Zeile 38 der Datei boot.c.

39 {
40  long *canon_data_src = (void*)0xFFB2E384; // OK //canon_data_src!!! @FF810130
41  long *canon_data_dst = (void*)0x1900; // OK //MEMBASEADDR @FF810134
42  long canon_data_len = 0x140E4- 0x1900; // data_end - data_start
43  long *canon_bss_start = (void*)0x140e4; // just after data // OK //@FF810138
44  long canon_bss_len = 0xb0b68 - 0x140e4; // MEMISOSTART -
45 
46  long i;
47 
48 
49  // Enable CPU caches and MPU
50  asm volatile (
51  "MRC p15, 0, R0,c1,c0\n"
52  "ORR R0, R0, #0x1000\n"
53  "ORR R0, R0, #4\n"
54  "ORR R0, R0, #1\n"
55  "MCR p15, 0, R0,c1,c0\n"
56  :::"r0");
57 
58  for(i=0;i<canon_data_len/4;i++)
59  canon_data_dst[i]=canon_data_src[i];
60 
61  for(i=0;i<canon_bss_len/4;i++)
62  canon_bss_start[i]=0;
63 
64  //Replacement of sub_FF848C84 (sub_FF822E10) for correct power-on.
65  //(short press = playback mode, long press = record mode)
66  *(int*)(0x261C+8)= (*(int*)0xC02200C0)&1 ? 1 : 2;
67 
68  *(int*)0x1930=(int)taskCreateHook;
69  *(int*)0x1934=(int)taskCreateHook;
70 
71  // jump to init-sequence that follows the data-copy-routine
72  asm volatile ("B sub_FF8101A4_my\n");
73 };
void CreateTask_spytask ( )

Definiert in Zeile 16 der Datei boot.c.

17 {
18  _CreateTask("SpyTask", 0x19, 0x2000, core_spytask, 0);
19 }
void JogDial_task_my ( void  )
void taskCreateHook ( int *  p)

Definiert in Zeile 28 der Datei boot.c.

28  {
29  p-=16;
30  if (p[0]==0xff861210) p[0]=(int)capt_seq_task;
31  if (p[0]==0xff8b8b90) p[0]=(int)exp_drv_task;
32  if (p[0]==0xff85d4c0) p[0]=(int)movie_record_task;
33  if (p[0]==0xffa2ac20) p[0]=(int)filewritetask;
34  if (p[0]==0xff877284) p[0]=(int)init_file_modules_task;
35  if (p[0]==0xff849530) p[0]=(int)JogDial_task_my;
36 }

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.