Ixus55 / SD 450 Port: First Steps, first problems ...

  • 5 Replies
  • Publish
    Ixus55 / SD 450 Port: First Steps, first problems ...
    « on: 03 / February / 2008, 17:17:53 »
    Hi all,

    after getting the firmware dump for the Ixus 55 (version 1.00B and 1.00C) I made the first steps towards porting CHDK. I have set up a corresponding Wikia-Page here. On this page you can find the current status of the ixus55 source-tree. I have started by adjusting all the firmware dependend stuff in platform/ixus55/sub and was able to find all of the underlying subroutines in the firmware dump. Since my last contact with assembler code was in the early eighties (6502 processor ;-) someone should check if this made sense ...

    Anyway, after loading the resulting firmware into the camera I could see the CHDK startup-screen but then nothing much happenend:
    • Most keys are non-functional: Only the LEFT key leads to some kind of strange "blinking" of the screen and Zoom-Left shows some kind of rectangle on the screen(could be a part of the histogram window). I have no possibility to enter ALT-mode and startup a menu.
    • When I switch to Capture-Mode the firmware dies completely

    Since recently much work was done porting the Ixus 40, Ixus 65 and Ixus 70, I started all the kbd.c routines I could find but  only the kbd.c from the recent Ixus 70 port lead to a successful start of the firmware. All variations made the firmware die even earlier. Is is really necessary to introduce firmware dependent kbd-routines into the platformsub-folder as in the Ixus407SD300 port? I was hoping that the Ixus 65 and Ixus 70 would be similar enough to be able to use a simpler routine.   Any ideas or suggestions about the best stategy to continue? I think I am a bit stuck at the moment ...

    Thanks and best regards
    - 3DBruce


    Offline ewavr

    • ****
    • 1057
    • A710IS
  • Publish
    Re: Ixus55 / SD 450 Port: First Steps, first problems ...
    « Reply #1 on: 03 / February / 2008, 18:05:14 »
    Quick look to IXUS55 1.00B keyborad routine:
    it is very similar to a610-a620 with its:
    void kbd_fetch_data(long *dst)
        volatile long *mmio1 = (void*)0xc0220204;
        volatile long *mmio2 = (void*)0xc0220208;

        dst[0] = 0;  // maybe not required
        dst[1] = *mmio1;
        dst[2] = *mmio2 & 0xffff;

    (compare to sub_FF82777C). So, you can as an example use kbd.c from A610-620 (keyboard map may differ).
    « Last Edit: 03 / February / 2008, 18:09:57 by ewavr »

  • Publish
    Re: Ixus55 / SD 450 Port: First Steps, first problems ...
    « Reply #2 on: 04 / February / 2008, 14:36:30 »
    Hi ewavr,

    thanks for your reply! Unfortunately using the kbd.c from a620 also results in the "immediate death" of the firmware even before the startup screen is displayed. Is there a more efficient way to debug the code without using the LED to output some kind of heartbeat?

    Best regards
    - 3DBruce

  • Publish
    Re: Ixus55 / SD 450 Port: First Steps, first problems ...
    « Reply #3 on: 09 / February / 2008, 05:36:48 »
    Hi all,

    got a small step further: The shutdown of the firmware was a result of bad keymap values (don't know which ones yet, because I am still too stupid to debug ... ;-).

    Anyway, now after using the kbd.c from A620 (thanks again for the hint ewavr ;-) and fiddling around with the keymap values, CHDK loads and I see a battery symbol. Also a few keys are working already (I can swith on a histogram for example) but I am not able to get into <ALT> mode. Is there a more sytematic way to get to the correct keymap values? Can these values be found in the firmware dump somewhere?

    Thanks for any hints.

    Best regard
    - 3DBruce

  • Publish
    Re: Ixus55 / SD 450 Port: First Steps, first problems ...
    « Reply #4 on: 09 / February / 2008, 07:04:19 »
    okok, I just found the debug_vals_show flag in the coding. Now at least I know whats within physw_status. I just have to understand the rest of the kbd.c stuff to translate that into the corresponding keymap values. Shouldn't take too long hopefully...

  • Publish
    Re: Ixus55 / SD 450 Port: First Steps, first problems ...
    « Reply #5 on: 10 / February / 2008, 15:22:09 »
    Big step forward: Keyboard is working now. The correct keymap was found easily after analyzing kbd.c in some detail. I am now able to get into <ALT> mode, set debug parameters etc. However, the camera still crashes when I go into record mode.  One reason for this might be that the Property Cases are not recognized correctly. When I use "Show Propcases" from the debug menu I do not see any changes at the 0 position, when I move th switch from Play into Movie mode (it then crashes when I come to the Photo mode position).

    Any ideas where I could look next? The address of Get/SetPropertyCase in stubs_entry.S seems to be correct ...


    Related Topics