SD990

  • 206 Replies
  • 34321 Views
  • Publish
    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

    • ******
    • 9810
  • Publish
    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

    • ******
    • 3033
    • IXUS50 & 860, SX10 Star WARs-Star RAWs
      • fe50
  • Publish
    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...


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

    *

    Offline reyalp

    • ******
    • 9810
  • Publish
    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.

  • Publish
    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

    • ******
    • 9810
  • Publish
    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.


  • Publish
    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

    • ******
    • 9810
  • Publish
    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