I made dump of firmware many times and now it's stable and don't change...Where can I have it? :) Please upload it somewhere and post the link here.
I made dump of firmware many times and now it's stable and don't change...Where can I have it? :) Please upload it somewhere and post the link here.
void boot()
{
long *canon_data_src = (void*)0xFFEEB4D0;
long *canon_data_dst = (void*)0x1900;
long canon_data_len = 0xB540;
long *canon_bss_start = (void*)0xCE40; // just after data
long canon_bss_len = 0x9F2B0 - 0xCE40;
long i;
...
void h_usrInit()
{
asm volatile (
"STR LR, [SP,#-4]!\n"
"BL sub_FFC01968\n"
"MOV R0, #2\n"
"MOV R1, R0\n"
"BL sub_FFCC1CEC\n" //unknown_libname_201
"BL sub_FFCB6DB8\n" //excVecInit
"BL sub_FFC011C4\n"
"BL sub_FFC01728\n"
"LDR LR, [SP],#4\n"
"B h_usrKernelInit\n"
);
}
void h_usrKernelInit()
{
asm volatile (
"STMFD SP!, {R4,LR}\n"
"SUB SP, SP, #8\n"
"BL sub_FFCC21EC\n" //classLibInit
"BL sub_FFCD2318\n" //taskLibInit
"LDR R3, =0x4E60\n"
"LDR R2, =0x9C4C0\n"
"LDR R1, [R3]\n"
"LDR R0, =0x9D010\n"
"MOV R3, #0x100\n"
"BL sub_FFCCDF08\n" //qInit
"LDR R3, =0x4E20\n"
"LDR R0, =0x51C0\n"
"LDR R1, [R3]\n"
"BL sub_FFCCDF08\n" //qInit
"LDR R3, =0x4EDC\n"
"LDR R0, =0x9CFE4\n"
"LDR R1, [R3]\n"
"BL sub_FFCCDF08\n" //qInit
"BL sub_FFCD66D4\n" //workQInit
"BL sub_FFC012B0\n"
"MOV R4, #0\n"
"MOV R3, R0\n"
"MOV R12, #0x800\n"
"LDR R0, =h_usrRoot\n"
"MOV R1, #0x4000\n"
"LDR R2, =0xCF2B0\n" // 0x9F2B0 + 0x30000
"STR R12, [SP]\n"
"STR R4, [SP,#4]\n"
"BL sub_FFCCF558\n" //kernelInit
"ADD SP, SP, #8\n"
"LDMFD SP!, {R4,PC}\n"
);
}
...
void h_usrRoot()
{
asm volatile (
"STMFD SP!, {R4,R5,LR}\n"
"MOV R5, R0\n"
"MOV R4, R1\n"
"BL sub_FFC019D0\n"
"MOV R1, R4\n"
"MOV R0, R5\n"
"BL sub_FFCC6CA4\n" //memInit
"MOV R1, R4\n"
"MOV R0, R5\n"
"BL sub_FFCC771C\n" //memPartLibInit
//"BL sub_FFC017E8\n" //nullsub_1
"BL sub_FFC01704\n"
"BL sub_FFC01A0C\n"
"BL sub_FFC019F0\n"
"BL sub_FFC01A38\n"
"BL sub_FFC019C4\n"
);
_taskCreateHookAdd(createHook);
_taskDeleteHookAdd(deleteHook);
drv_self_hide();
asm volatile (
"LDMFD SP!, {R4,R5,LR}\n"
"B sub_FFC0136C\n" //IsEmptyWriteCache_2
);
}
#find in IDA
NHSTUB(Close, 0xFFCC5108)
NHSTUB(Remove, 0xFFCC549C)
#near unmount
NHSTUB(Mount_FileSystem, 0xFFE214C4)
#there are readv and writev?! ...is it the same?
NHSTUB(Read, 0xFFCC5334)
NHSTUB(Write, 0xFFCC53B0)
NHSTUB(kbd_read_keys_r2, 0xFF???????)
NHSTUB(DisplayImagePhysicalScreen, 0xFF???????)
NHSTUB(free, 0xFF???????)
NHSTUB(SetZoomActuatorSpeedPercent, 0xFF???????) //null stub
The line for canon_data_src looked like this, so I'm not sure. :(:
void boot()
{
long *canon_data_src = (void*)0xFFEDE3C0;
long *canon_data_dst = (void*)0x1900;
long canon_data_len = 0xB8D0;
long *canon_bss_start = (void*)0xD1D0;
long canon_bss_len = 0x91C70 - 0xD1D0;
[...]
ROM:FFC0017C off_FFC0017C DCD unk_FFEDE3C0 ; DATA XREF: ROM:FFC0010
[commented out]
char *hook_raw_image_addr()
{
return (char*)0x105B8AC0; // OK (find on ".crw")
}
long hook_raw_size()
{
return 0x75A8F0; // OK (find on ".crw")
}
[commented out]
void *vid_get_bitmap_fb()
{
return (void*)0x103C79A0; // OK (find in _CreatePhysicalVram)
}
void *vid_get_viewport_fb()
{
return (void*)0x105F17A0; // OK (find on "VRAM Address : %p")
}
void *vid_get_viewport_fb_d()
{
return (void*)(*(int*)0x60BA0); // OK (find on "WBTblAdj.c")
}
[...]
#include "stubs_asm.h"
NHSTUB(VbattGet, 0xFFC1C000) //found w/ IDA
NHSTUB(free, 0xFFC0A748) //not found yet (used FreeMemory)
//null stub (S2/S3 only apparently)
NHSTUB(SetZoomActuatorSpeedPercent, 0xFFC017E8) //used nullsub_1
Could someone perhaps give us some hints on how to find these things for lib.c and stubs_entry_2.S?
void *vid_get_bitmap_fb()
void *vid_get_viewport_fb()
void *vid_get_viewport_fb_d()
<snip>
Do somebody know what to modify in capt_seq.c to run the chdk??
</snip>
NOW CHDK RUN!! :D :D :D
...the problem was capt_seq.c, nobody say me it's necessary for start...and there isn't doc that say this!
THANK ROSSIG, for all support !!
now...another problem: i can't enter in ALT mode...eheheh, is there a function o part of code that i can view for resolve problem?
but not good programmers
Thanks a ton, Maybe now its possible to see everything that needs to be changed for CHDK to run, so maybe the wiki can get a proper porting guide that is complete.
The time is come!! :D
Some changes from my last update:
1- The CHDK Porting now run! :)
2- Modified capt_seq.c with correct fuction take by IDA.
3. The same with movie_rec.c, now work video recording with quality or bitrate variable (i think).
4- Property case are equal to a560/a570...I'll verify several.
5- Keymap it's ok...based on a540.
6- Modemap is 'working in progress', now it's copied form a560. Modified mode_get() in main.c...
8- Others don't remember.
7- Fixed some small bugs.IT'S VERY IMPORTANT YOUR UTILIZATION REPORT FOR FIND BUGS, PROBLEM AND STRANGE BEHAVIORS!
POST HERE ALL YOUR COMMENT, THANK!...now enjoy with your new chdk features: CHDK for a550.rar - 0.19MB (http://www.zshare.net/download/6954355b8ccc62/)
Instruction for what?!
if you intend, INSTALL instruction :blink: ...read this http://chdk.wikia.com/wiki/FAQ (http://chdk.wikia.com/wiki/FAQ) ???
hucht, the firmware is in beta...You have a problem that we know, and we are working to resolve!
...if you want help us, download also the source!
p.s. read old post...
Last Update:
- Dof calculator solved! :D
I know is it few...but I' don't have time (and help) :(
for denvelopers:
The problem was GetFocusLensSubjectDistance bad address, update stubs_entry_2.s...
but I'm confused... :blink:
well, i have found correct address: 0xFFE43B08
and see that function GetCurrentTargetDistance is:
STR LR, [SP,#-4]!
BL sub_FFE43B08 <-- call to GetFocusLensSubjectDistance
MOV R0, R0,LSL#16
MOV R0, R0,LSR#16
LDR PC, [SP],#4
mhhhh....what are the difference by GetFocusLensSubjectDistance and GetCurrentTargetDistance??
I think GetCurrentTargetDistance call only GetFocusLensSubjectDistance! is it true?!
I had verified also with other firmware (ex. a610) and is the same! :blink:
i test in debug and for my cam GetCurrentTargetDistance result = GetFocusLensSubjectDistance result!
hi guys!
Note2: 4 GB cards can support the autoload feature if they are formated in FAT16 manually. To format SD-card in Windows command line just type 'format X: /fs:fat' (where X: - a drive letter of mounted SD-card). But be aware that the formatting of 4 GB cards in FAT16 leads to non-standard 64K cluster size. The correct support of such cluster size is not guaranteed.
for the LCD screenshot...i don't know, i'm sorry!
why have you need this features?!
the lcd screenshot is a good idea!
please help me connecting my a550 to pc and take pictures directly to hard drive? how can I do this?
Update:
- Add Support: USB Remote Button
- Add: Mode Screen Rotated / Flashlight LCD (enable it's in misc and rotate 270 in alt mode) silly mod for test Rotated Screen
I'm very interested to AllBest Build 31 release for the manual focus! Soon on a550...
if someone would add a550 porting to CHDK trunk...it's good thing :)
...here the last bin: http://www.zshare.net/download/7363464f461fa5/ (http://www.zshare.net/download/7363464f461fa5/)
but i don't know because this features was disabled :blink:
are you sure av ovveriding working good before?!
Does A550 have iris diaphragm?
Does A550 have iris diaphragm?
this is a good question!! :)
f2.6 -> 277
f3.2 -> 308
f3.5 -> 336
f4.0 -> 388
f5.0 -> 439
f5.5 -> 480
const ApertureSize aperture_sizes_table[] = {
{ 8, 273, "2.6" },
{ 9, 288, "2.8" },
{ 10, 320, "3.2" },
{ 11, 352, "3.5" },
{ 12, 384, "4.0" },
{ 13, 416, "4.5" },
{ 14, 448, "5.0" },
{ 15, 480, "5.6" },
{ 16, 512, "6.3" },
{ 17, 544, "7.1" },
{ 18, 576, "8.0" },
};
a550 patch: simpler loader code, remove autodetected entries from stubs_entry_2.S and stubs_min.SGenerally it works but you still cannot power on A550 using power button. Only via play button, but that was the case prior to this patch, too. So I guess the patch is fine.
Unfortunately, (to my knowledge) none of the Vx ports implement special support for boot-time mode detection. That means someone would have to find it (mostly trial & error), as it is different from the method used in DryOS cameras. Doing this without physical access to the cam would be very painful and slow...