CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
main.c-Dateireferenz
+ Include-Abhängigkeitsdiagramm für main.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define LED_PR   0xd20b0994
 
#define LED_PWR   0xd20b0884
 
#define LED_ORANGE   0xd20b0888
 

Funktionen

void __attribute__ ((noreturn))
 

Variablen

long * blob_chdk_core
 
long blob_chdk_core_size
 

Makro-Dokumentation

#define LED_ORANGE   0xd20b0888

Definiert in Zeile 8 der Datei main.c.

#define LED_PR   0xd20b0994

Definiert in Zeile 6 der Datei main.c.

#define LED_PWR   0xd20b0884

Definiert in Zeile 7 der Datei main.c.

Dokumentation der Funktionen

void __attribute__ ( (noreturn)  )

Definiert in Zeile 43 der Datei main.c.

44 {
45 
46  //xblinker(3) ;
47 
48  check_compat();
49 
50  long *dst = (long*)MEMISOSTART;
51  const long *src = blob_chdk_core;
52  long length = (blob_chdk_core_size + 3) >> 2;
53 
54  core_copy(src, dst, length);
55 
56  // light up green LED
57  //*(int*)0xd20b0994 = 0x4d0002;
58 
59  // light up orange LED
60  //*(int*)0xd20b0888 = 0x4d0002;
61 
62  // allows boot on short press without fiddling elsewhere
63  *(volatile unsigned *)(0x4ffc)=0x12345678; // @ 0xfc0b59ee for g16 100h 101a 101c
64 
65  //xblinker(2) ;
66 
67  asm volatile (
68 
69  "mov r1, %1\n"
70  "mov r0, %0\n"
71 
72  //"ldr r2, =0xfc13c4d7\n" // caching related routine called at fw startup after ROM->RAM code copy
73  //"blx r2\n" // G16 1.00h 0xfc13c4d6 1.01a 0xfc13c4d6 1.01c 0xfc13c50e
74 
75  " cmp.w r1, #0x4000\n"
76  " bhs L2\n"
77  " dsb sy\n"
78  " add r1, r0\n"
79  " bic r0, r0, #0x1f\n"
80  "L1:\n"
81  " mcr p15, #0, r0, c7, c10, #1\n"
82  " add.w r0, r0, #0x20\n"
83  " cmp r0, r1\n"
84  " blo L1\n"
85  " dsb sy\n"
86  " b L5\n"
87  "L2:\n"
88  " dsb sy\n"
89  " mov.w r1, #0\n"
90  "L3:\n"
91  " mov.w r0, #0\n"
92  "L4:\n"
93  " orr.w r2, r1, r0\n"
94  " mcr p15, #0, r2, c7, c10, #2\n"
95  " add.w r0, r0, #0x20\n"
96  " cmp.w r0, #0x1000\n"
97  " bne L4\n"
98  " add.w r1, r1, #0x40000000\n"
99  " cmp r1, #0\n"
100  " bne L3\n"
101  " dsb sy\n"
102  "L5:\n"
103 
104  // start execution at MEMISOSTART in thumb mode
105  "mov r0, %0\n"
106  "add r0, r0, #1\n"
107  "bx r0\n"
108  : : "r"(MEMISOSTART), "r"(((blob_chdk_core_size+3)>>2)<<2) : "memory","r0","r1","r2","r3","r4"
109  );
110  while(1);
111 }

Variablen-Dokumentation

long* blob_chdk_core

Definiert in Zeile 1 der Datei blobs.S.

long blob_chdk_core_size