SD990

  • 206 Replies
  • 35229 Views
SD990
« on: 18 / January / 2009, 11:24:17 »
Advertisements
Is anyone out there working on a port to the SD990 - I would like to help by testing builds.


*

Offline reyalp

  • ******
  • 10057
Re: SD990
« Reply #2 on: 30 / January / 2009, 05:25:32 »
Well this looks as good a place as any to post porting related information:
The memory layout is changed a bit from from the Digic II and III cams:
regions 2 and 3 (corresponding to cached and uncached views of main memory) are 128M instead of the 32M or occasionally 64M found on current CHDK cameras.

region 3 is located at 0x40000000 instead of 0x10000000
The data TCM, which usually lives at 0x40000000 is bumped up to 0x80000000

Interestingly, this bit of code which on other cams sets SP to the data TCM still uses the old address
Code: [Select]
ROM:FF810194                 LDR     SP, =0x40001000
ROM:FF810198                 B       loc_FFA48FC0
:o

Stuff I have found (all unverified!)

ROM:FF810130
canon_data_src = (void *)0xFFB74B98;
canon_data_dst = (void *)1900;
canon_data_len = 0xFE80 - 0x1900;
canon_bss_start = (void *)0xFE80;
canon_bss_len = 0xE8B40 - 0xFE80;

from sub_FFAAFEBC:
CRAW BUF SIZE 0x1574D00 (A bit too large for 10 bpp, maybe 12bpp = 14999040 raw pix 4480*3348 sensor ?)
CRAW BUF 0x40EBAFA0

ROM:FF821894 task_PhySw
physw_run
1C28 (1C1C + C) ?
   
ROM:FF8219DC ShowPhySwStatus
physw_status 0x11318 ?

Possible LED addresses from sub_FF8EB458 ?
0xC0220134
0xC0220130
0xC0220138
0xC02200B0
0xC02200BC
Don't forget what the H stands for.

*

Offline fe50

  • ******
  • 3038
  • IXUS50 & 860, SX10 Star WARs-Star RAWs
    • fe50
Re: SD990
« Reply #3 on: 30 / January / 2009, 06:36:19 »
Well this looks as good a place as any to post porting related information:
The memory layout is changed a bit from from the Digic II and III cams:
regions 2 and 3 (corresponding to cached and uncached views of main memory) are 128M instead of the 32M or occasionally 64M found on current CHDK cameras.

region 3 is located at 0x40000000 instead of 0x10000000
The data TCM, which usually lives at 0x40000000 is bumped up to 0x80000000
...

Yeah, noticed the same on the SX10 some time ago( wikia - SX10#main.c) ...
Code: [Select]
"MOV  R0, #0x80000006\n" // all others have 0x4...


Re: SD990
« Reply #4 on: 05 / February / 2009, 06:55:31 »
any updates yet?

*

Offline reyalp

  • ******
  • 10057
Re: SD990
« Reply #5 on: 05 / February / 2009, 18:25:17 »
lib.c
Code: [Select]
void *vid_get_bitmap_fb()       
{
    return (void*)0x40471000; // dispcon* functions and BmpDDev.c
}

void *vid_get_viewport_fb()
{
    return (void *)0x407F6DC0; // search on VRAM Address
}

void *vid_get_viewport_fb_d()
{
    return (void*)(*(int*)0x525C);  // sub_FF85AF14 0x5210 + 0x4C
}
char *camera_jpeg_count_str()
{
    return (char *)0x4AF18; // search on "9999"
}

stubs_min.s:
Code: [Select]
DEF(physw_status, 0x11318) // 0xFF8219DC ShowPhySwStatus
DEF(physw_run, 0x1c28) // 0x1C1C + 0xC @0xFF821894 task_PhySw
DEF(FlashParamsTable,0xFFB499F4) // sub_FFA58670, search for ParameterManager.c
DEF(zoom_busy, 0x8A1c)  // 0x8A08 + 0x14, found in sub_FF93368 search on "ZoomLens"
DEF(focus_busy, 0x8914) //  0x890C + 0x8, via _sub_FF92E770__FocusLensController_c__201 and comparison to s5is
DEF(movie_status, 0x53DC)  // 0x53A0 + 0x3C? via  loc_FF861EAC and _sub_FF860E64__MovieRecorder_c__0
I've also got enough of boot.c to get to spytask and physw task startup, stubs_entry.S generated (but not checked), loader basically done, and everything else with enough dummy values to compile. 

Some of the above are probably wrong, since they are all untested.

The sensor size I listed earlier appears to be correct based on other parts of the firmware.

Basically waiting on the camera now.
Don't forget what the H stands for.

Re: SD990
« Reply #6 on: 16 / February / 2009, 16:53:49 »
So, if the sensor records images with 12 bit per pixel, enabling the RAW format would be a great advantage over 8bit JPEG, right? Can't wait for this to happen..wish I had the skills to create the port. I have the camera though, so if anything is needed I can try to help...

*

Offline reyalp

  • ******
  • 10057
Re: SD990
« Reply #7 on: 16 / February / 2009, 18:02:24 »
So, if the sensor records images with 12 bit per pixel, enabling the RAW format would be a great advantage over 8bit JPEG, right?
Depending how much of that is usable signal, rather than noise.  The other downside is that CHDK currently assumes 10 bit raw, so it will take more effort to get working. sharky has done some work on 12 bit raw support for the SD770  http://chdk.setepontos.com/index.php/topic,2841.0.html

I still don't have the camera yet, but I've been making progress on things that can be done from the firmware dump alone. All of the stubs_entry.s entry points are checked now, and from the few propcase calls I've looked at, it appears to still use propset 2.
Don't forget what the H stands for.


Re: SD990
« Reply #8 on: 17 / February / 2009, 11:43:08 »
I would love to help in testing as I have no programming skils, my firmware is GM1.00E and I have CHDK running on my SD500 and SD900 (beta also testing)
The 990 with the addition of manual and IS seems like a good camera for the added fratures of CHDK.  The 990 will be a joy to use 
It is better to burn a roll of film than curse the darkness Equip, S100 w/CHDK, SD900 w/CHDK, SD990 w/CHDK & Pentax K2000, Pentax Kr
Flickr:

*

Offline reyalp

  • ******
  • 10057
Re: SD990
« Reply #9 on: 19 / February / 2009, 21:24:27 »
I have the camera now, so this will be the official porting thread. It currently loads far enough to run an LED blinking task :)

As soon as I have something that people can test, I'll upload it.

edit:
LEDs
   0xC0220134, // green
   0xC0220130, // orange (right)
   0xC0220138, // yellow (left)
   0xC02200B0, // power
   0xC02200BC, // dp
AF assist not found yet

and spytask loads, although I'm not sure what's up with the 4x tiled bootsplash:

edit:
and a 4 way menu, physw_task is working enough to navigate the menu and override card lock.

edit:
720x240 bitmap display looks better, chdk logo is still messed up, color pallet appears to be different. Canon advertises a "23000 dot display" (720x320 ?) but perhaps this applies to the live view and not the bitmap.

edit:
Setting both the screen size and buffer size helps ;)
« Last Edit: 20 / February / 2009, 00:01:07 by reyalp »
Don't forget what the H stands for.

 

Related Topics